# Golden Factory 2.0 (v2) — Arquitetura do Sistema

Documento oficial de especificação arquitetural da **Versão 2.0 (Duck Golden)**.

---

## 1. Visão Geral e Princípios Fundamentais

O Golden Factory v2 é a evolução do sistema de gestão e rastreamento da confecção Duck Golden. Esta versão foi desenhada para resolver os gargalos de concorrência e dispersão de código da v1, sem interromper as operações do chão de fábrica durante seu desenvolvimento.

### Pilares Arquiteturais
1. **Desenvolvimento 100% Paralelo (`/v2/`)**:
   - O sistema de produção atual (`/goldenfactory2/`) continua operando intocado.
   - O ambiente `v2` fica isolado em sua própria árvore de arquivos, permitindo testes com operadores reais sem risco operacional.
2. **SQLite Definitivo (Single Source of Truth)**:
   - Eliminação total dos arquivos JSON de dados operacionais (`{setor}/data/`).
   - SQLite em modo WAL (Write-Ahead Logging), com índices estratégicos, integridade referencial (`FOREIGN KEY`) e transações ACID (`BEGIN TRANSACTION` / `COMMIT`).
3. **Frontend com CSS Centralizado (Design System Duck Golden)**:
   - Fim dos blocos `<style>` inline duplicados em cada arquivo HTML.
   - Sistema de variáveis CSS (tokens) para cores, tipografia, espaçamento e componentes reutilizáveis (cards, botões, tabelas de grade, modais, badges).
4. **API RESTful Centralizada**:
   - Um único ponto de entrada para chamadas HTTP (`/v2/api/index.php`).
   - Middlewares globais para autenticação, autorização por setor, CORS e formatação uniforme de respostas JSON.
5. **Engenharia de Produto Integrada (Ficha Técnica / BOM)**:
   - O cadastro de Moldes e Peças Piloto conecta-se diretamente ao catálogo de insumos do Almoxarifado e Tecidos, calculando o custo de produção em tempo real.

---

## 2. Estrutura de Diretórios (`/v2/`)

```
goldenfactory2/
└── v2/
    ├── index.html                   # Portal de entrada / Dashboard unificado v2
    ├── api/                         # Backend unificado
    │   ├── index.php                # Roteador central (Front Controller)
    │   ├── config.php               # Configurações de ambiente e constantes
    │   ├── core/                    # Núcleo da API
    │   │   ├── Database.php         # Conexão PDO SQLite singleton com WAL
    │   │   ├── Auth.php             # Sessão, login e verificação de roles
    │   │   ├── Response.php         # Padronizador de saída JSON { ok, data, erro }
    │   │   └── Router.php           # Despachador de rotas para controllers
    │   └── controllers/             # Lógica de negócio por domínio
    │       ├── ColecoesController.php
    │       ├── CorteController.php
    │       ├── BordadoController.php
    │       ├── SerigrafiaController.php
    │       ├── DtfController.php
    │       ├── CosturaController.php
    │       ├── AcabamentoController.php
    │       ├── ExpedicaoController.php
    │       ├── AlmoxarifadoController.php
    │       ├── PilotoController.php # Molde, Peça Piloto, BOM e Custos
    │       ├── TecidosController.php
    │       └── ProducaoController.php
    ├── assets/                      # Recursos estáticos compartilhados
    │   ├── css/
    │   │   ├── theme.css            # Variáveis globais, cores Duck Golden, reset
    │   │   ├── components.css       # Botões, tabelas, grades, cards, modais, badges
    │   │   └── layout.css           # Header, sidebar, container responsivo
    │   ├── js/
    │   │   ├── api.js               # Cliente HTTP (fetch wrapper com tratamento de erro)
    │   │   ├── ui.js                # Modais, toasts, loaders, helpers de UI
    │   │   └── grade.js             # Renderizador e manipulador universal de grades
    │   └── img/
    ├── database/
    │   ├── schema.sql               # DDL completo das tabelas da v2
    │   ├── goldenfactory_v2.sqlite  # Banco relacional da v2
    │   └── migrations/              # Scripts de migração e carga inicial
    ├── docs/                        # Documentação técnica e operacional
    │   ├── ARQUITETURA.md
    │   ├── FICHA_TECNICA_BOM.md
    │   └── ROADMAP.md
    └── modules/                     # Interfaces dos setores (HTML limpo sem CSS inline)
        ├── colecoes/
        ├── corte/
        ├── bordado/
        ├── serigrafia/
        ├── dtf/
        ├── costura/
        ├── acabamento/
        ├── expedicao/
        ├── almoxarifado/
        ├── piloto/
        └── relogio/
```

---

## 3. Padrão da API Centralizada

### 3.1. Roteamento
As requisições frontend apontam para o roteador unificado:
`GET /v2/api/index.php?route=piloto/list` ou via URL amigável se reescrita ativa.

Exemplo de estrutura de rotas:
- `GET  /api/?route=piloto/list`
- `POST /api/?route=piloto/save`
- `POST /api/?route=piloto/calcular-custo`
- `GET  /api/?route=corte/lotes`
- `POST /api/?route=corte/lote`
- `GET  /api/?route=almoxarifado/itens`

### 3.2. Contrato de Resposta JSON
Todas as respostas da API seguem estritamente o padrão:

**Sucesso (HTTP 200 / 201):**
```json
{
  "ok": true,
  "data": { ... }
}
```

**Erro (HTTP 400 / 401 / 403 / 404 / 500):**
```json
{
  "ok": false,
  "error": "Descrição clara do erro para o usuário",
  "code": "CODIGO_OPCIONAL"
}
```

---

## 4. Persistência de Dados (SQLite Definitivo)

### 4.1. Configuração do SQLite
O banco opera com os seguintes parâmetros obrigatórios via PDO:
```sql
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA foreign_keys = ON;
PRAGMA busy_timeout = 5000;
```

### 4.2. Transações ACID
Operações multi-tabela (exemplo: salvar um lote e debitar insumos, ou salvar molde e seus itens de aviamento) utilizam transações atômicas:
```php
$db->beginTransaction();
try {
    // Insere ou atualiza cabeçalho
    // Insere ou atualiza itens dependentes
    $db->commit();
} catch (\Throwable $e) {
    $db->rollBack();
    throw $e;
}
```

---

## 5. Design System Centralizado

Para eliminar a repetição de centenas de linhas de CSS em cada arquivo HTML:

1. **`theme.css`**:
   - Define tokens como `--color-primary` (Duck Golden Gold/Yellow), `--color-bg-dark`, `--color-card-bg`, `--font-main`, `--radius-sm`, `--radius-md`.
2. **`components.css`**:
   - `.btn`, `.btn-primary`, `.btn-success`, `.btn-danger`, `.btn-secondary`
   - `.card`, `.card-header`, `.card-body`
   - `.grade-table` (estilização padronizada para as colunas PP, P, M, G, GG, XG, XXG)
   - `.modal`, `.badge`, `.toast`
3. **`layout.css`**:
   - Barra de navegação superior com indicação de setor logado, atalho para monitor e botão de logout.
   - Grid responsivo adaptado para monitores de fábrica e tablets.
