Go-live industrial
Ordem para ligar flags num tenant de padaria, o que não copiar do HML, limites do produto e checklist operacional.
O HML Sanclerlandia provou o caso pão (NF → OP → doação → recall → venda) e encerrou o lab (overrides enabled: false). Os documentos HML-IND-* ficam no tenant de teste. Não replique NF, OP, lote, recall ou doação para produção.
Checklist antes de ligar
Cadastro
Só a linha que a fábrica rastreia com lotControl / expirationControl. Depósito real. BOM ACTIVE com quantityPer e yieldTolerancePercent calibrados.
Flags globais
Confirme GET /feature-flags: as seis industrial.* OFF. Se alguém ligou o global, desligue antes.
Override só da empresa da padaria
Nunca o global. Motivo preenchido. Ordem: Flags.
Uma NF de 1 unidade de teste
Confirmar lote no FALOT01, ATP = FEFO, kardex com lot_id.
Uma OP pequena
Release, report com consumptions, complete. Conferir lote do PA e genealogia.
Simular recall
GET /lot-recall/impact/{lotId} antes de abrir campanha.
Comunicar QA
Se for ligar inbound-quarantine, avise: o saldo some do ATP até o release.
O que o produto não promete
| Tema | Estado |
|---|---|
| ANVISA / laudo / amostra / aprovador | não há entidade de inspeção |
| Cron que vence lote à meia-noite | não implementado; POST …/expire é manual; movimento já recusa data < hoje |
| Substitutos automáticos no BOM | não |
| Chão de fábrica (máquina, turno, apontamento por operador) | não |
Expedição com lote (FATEX01.lot_id) | coluna sem writer industrial |
Gate RBAC fino (recall.manage, etc.) | documentado; API ainda é JWT + menu |
| MES paralelo | fora de escopo — o M3R acopla BOM, OP e estoque existentes |
Não vender “pronto para recall regulatório” só porque a campanha existe: a lista de impacto fura devolução antiga sem lote e expedição sem lot_id.
Encerrar um piloto
- Override
enabled: falsenas seis chaves. - Não apague lotes — são histórico de estoque.
- SKUs de teste (
HML-IND-*) podem permanecer inativos no cadastro.
Homologação repetível
Scripts no repositório (não vão para o site em produção):
- seed de Farinha/Pão/BOM:
farmus-web/e2e/scripts/seed-industrial-products.mjs - caso pão:
run-industrial-onda2.mjs - desligar flags:
close-industrial-hml.mjs - ATP HML:
validate-atp-hml.mjs - Playwright fumaça:
E2E_INDUSTRIAL=1 yarn test:e2e:industrial
Playbook interno: docs/industrial/INDUSTRIAL-HML.md. Relatório: INDUSTRIAL-HML-RELATORIO.md.
Versões de referência
| Pacote | Versão | Papel |
|---|---|---|
| farmus-api | 1.0.167 | companyIdFromReq em recall/doação |
| farmus-api | 1.0.169 | ATP alinhado ao FEFO |
| farmus-web | 1.0.183+ | Central, recall, doações, QA |
Flags default OFF em qualquer deploy novo: o seed não liga produção comercial.
