# Módulo Molde, Peça Piloto & Ficha Técnica (BOM) — Golden Factory v2

Documento de especificação do sistema de modelagem, ficha técnica de engenharia de produto e cálculo de custo industrial com integração ao Almoxarifado.

---

## 1. Objetivo do Módulo

Permitir que a equipe de desenvolvimento (estilista, modelista, designer e encarregados):
1. Cadastre novos **Moldes** e **Peças Piloto**.
2. Defina a composição técnica completa da peça:
   - **Tecidos**: Tipo de tecido, cor, rendimento e consumo em metros/kg.
   - **Aviamentos e Insumos do Almoxarifado**: Etiquetas (marca, composição, tamanho), vivo, viés, botões, zíperes, elásticos, linhas e embalagens.
   - **Processos de Beneficiamento**: Bordado (pontos/matriz), Serigrafia (telas), DTF (área de chapa).
3. Calcule automaticamente o **Custo Industrial Unitário** em tempo real a partir dos preços dos insumos cadastrados no Almoxarifado e no Catálogo de Tecidos.
4. Gere a **Previsão de Consumo de Materiais (Explosão de Insumos)** quando o lote for programado para corte.

---

## 2. Modelo de Dados Relacional (SQLite v2)

### 2.1. Tabela: `moldes` (ou `pecas_piloto`)
Armazena a identificação do modelo e suas informações gerais de modelagem.

```sql
CREATE TABLE IF NOT EXISTS moldes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    codigo_molde TEXT NOT NULL UNIQUE,          -- Ex: "M-389", "BER-04"
    nome_modelo TEXT NOT NULL,                   -- Ex: "Camiseta Regular Gola Careca"
    categoria TEXT,                              -- Ex: "Camiseta", "Bermuda", "Moletom"
    colecao_origem TEXT,                         -- Ex: "LIMIT", "ESSENTIALS"
    status TEXT DEFAULT 'em_desenvolvimento',    -- 'em_desenvolvimento', 'aprovado', 'descontinuado'
    tabela_medidas_url TEXT,                     -- Link/arquivo para imagem de medidas
    foto_piloto_url TEXT,                        -- Foto da peça piloto costurada
    observacoes TEXT,
    criado_em TEXT DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TEXT DEFAULT CURRENT_TIMESTAMP
);
```

### 2.2. Tabela: `molde_tecidos` (Consumo de Tecido por Molde)
Define os tecidos utilizados e seu rendimento médio por peça.

```sql
CREATE TABLE IF NOT EXISTS molde_tecidos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    molde_id INTEGER NOT NULL,
    tecido_id INTEGER,                           -- FK para tabela `tecidos` (opcional/referência)
    nome_tecido TEXT NOT NULL,                   -- Ex: "Meia Malha 30.1 Penteada"
    cor TEXT,                                    -- Ex: "Preto", "Branco"
    consumo_kg REAL DEFAULT 0,                   -- Consumo em KG por peça (ex: 0.220)
    consumo_metros REAL DEFAULT 0,               -- Consumo em Metros por peça (ex: 0.75)
    preco_unitario_estimado REAL DEFAULT 0,      -- Preço por KG ou Metro do tecido
    FOREIGN KEY (molde_id) REFERENCES moldes(id) ON DELETE CASCADE
);
```

### 2.3. Tabela: `molde_insumos` (A Ficha Técnica / BOM)
Conecta a peça piloto diretamente aos itens do **Almoxarifado**.

```sql
CREATE TABLE IF NOT EXISTS molde_insumos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    molde_id INTEGER NOT NULL,
    item_almoxarifado_id TEXT NOT NULL,          -- FK do item no almoxarifado (ex: "item_6a075...")
    nome_insumo_snapshot TEXT NOT NULL,          -- Nome gravado para histórico (ex: "Viés Algodão 15mm")
    setor_aplicacao TEXT NOT NULL,               -- 'corte', 'costura', 'acabamento'
    quantidade REAL NOT NULL,                    -- Qtd gasta por peça (ex: 0.60 metros, 1 unidade, 2 botões)
    unidade_medida TEXT NOT NULL,                -- 'm', 'un', 'cm', 'par'
    custo_unitario_aplicado REAL NOT NULL,       -- Custo no momento do cadastro ou atualizado dinamicamente
    FOREIGN KEY (molde_id) REFERENCES moldes(id) ON DELETE CASCADE
);
```

### 2.4. Tabela: `molde_beneficiamentos`
Estimativa de custos de estamparia, bordado e DTF.

```sql
CREATE TABLE IF NOT EXISTS molde_beneficiamentos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    molde_id INTEGER NOT NULL,
    tipo TEXT NOT NULL,                          -- 'bordado', 'dtf', 'serigrafia', 'lavanderia'
    descricao TEXT,                              -- Ex: "Bordado Peito DG Logo 4.500 pts"
    custo_estimado REAL DEFAULT 0,
    FOREIGN KEY (molde_id) REFERENCES moldes(id) ON DELETE CASCADE
);
```

---

## 3. Fluxo Operacional: Da Criação da Peça ao Chão de Fábrica

### Passo 1: Cadastro no Almoxarifado
O operador do almoxarifado ou administrativo cadastra os itens de estoque com seus respectivos valores unitários (`valor_unitario`):
- `Etiqueta de Composição`: R$ 0,08 / un
- `Etiqueta de Marca Bordada`: R$ 0,35 / un
- `Viés 15mm 100% Algodão`: R$ 0,45 / metro
- `Vivo Poliéster`: R$ 0,60 / metro
- `Embalagem Plástica Padrão`: R$ 0,22 / un

### Passo 2: Construção da Ficha Técnica do Molde
Na tela de Peça Piloto (`modules/piloto/index.html`):
1. O usuário digita o código do molde (ex: `M-402`) e seleciona o modelo.
2. Adiciona o consumo de tecido:
   - *Meia Malha 30.1* -> 0,240 kg a R$ 42,00/kg = **R$ 10,08**
3. Abre o modal "Adicionar Insumo do Almoxarifado" (busca dinâmica por categoria ou nome):
   - Seleciona *Etiqueta Marca* -> Qtd: 1 un -> Custo: **R$ 0,35**
   - Seleciona *Etiqueta Composição* -> Qtd: 1 un -> Custo: **R$ 0,08**
   - Seleciona *Viés 15mm* -> Qtd: 0,65 metro -> Custo: **R$ 0,29** (0,65 x 0,45)
   - Seleciona *Vivo* -> Qtd: 0,30 metro -> Custo: **R$ 0,18** (0,30 x 0,60)
   - Seleciona *Saco Plástico* -> Qtd: 1 un -> Custo: **R$ 0,22**
4. Adiciona beneficiamento:
   - *Bordado Peito* -> **R$ 1,20**
5. O sistema exibe o painel de **Custo de Produção Total**:
   $$\text{Custo Total} = \text{Tecido (10,08)} + \text{Insumos (1,12)} + \text{Beneficiamento (1,20)} = \mathbf{R\$\ 12,40}$$

### Passo 3: Explosão de Insumos no Corte
Quando uma coleção é lançada no **Corte** com grade de 800 peças vinculadas ao molde `M-402`:
- O sistema calcula a necessidade total de materiais:
  - 800 etiquetas de marca
  - 800 etiquetas de composição
  - 520 metros de viés ($800 \times 0,65$)
  - 240 metros de vivo ($800 \times 0,30$)
  - 192 kg de tecido ($800 \times 0,240$)
- O sistema confronta com o `saldo` atual do Almoxarifado e exibe alertas de itens com saldo insuficiente antes de iniciar a produção.
