Cada renovacao que sai do orgao vira ciclo observado (protocolo -> emissao); a mediana por orgao/tipo estica o prazo de inicio de renovacao quando o orgao esta comprovadamente mais lento que o catalogo. O catalogo e piso legal: os 120 dias da LO nunca encolhem. Campos aditivos effectiveLeadDays/observed no upcoming e nos alertas; GET /compliance/lead-times; seed deterministico. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Changelog — documents
Formato baseado em Keep a Changelog; versionamento semântico.
[1.1.0] - 2026-08-07
Added
- Prazo de renovação dinâmico por órgão (Onda 1.2 do plano de IA). Cada renovação que sai do
órgão vira um ciclo observado (
renewal_cycle: protocolo → emissão), gravado automaticamente no save que zera um protocolo; ciclos implausíveis (negativos ou > 2 anos) são descartados com log. GET /compliance/lead-times?programId: mediana, p90 e prazo efetivo por órgão e por tipo. Régua:effectiveLeadDays = max(catálogo, mediana + 15)com amostra ≥ 3 — o catálogo é piso legal (os 120 dias da LO nunca encolhem), a estatística só estica quando o órgão está lento.GET /compliance/upcomingeGET /alerts/previewpassam a carregar os campos aditivoseffectiveLeadDayseobserved{count, medianDays}; o degrauleadda régua de alertas dispara pelo prazo dinâmico ("a SEMAD está levando 140 dias — comece agora").- Seed de demonstração
src/scripts/seed-demo-cycles.ts(determinístico) para o LAB.
[1.0.0] - 2026-08-07
Added
- Catálogo legal de postos com 15 obrigações semeadas por migration (Resolução ANP 948/2023,
CONAMA 273/2000, Portaria INMETRO 227/2022, IN IBAMA 22/2021, NRs 1/7/20/23) e variação por UF
(
document_type_uf_override; exemplos: AVCB SP 36 meses, GO 12; LO CETESB 60 meses/120 dias). - Documentos da loja com trilha de versões (renovação nunca sobrescreve) e upload de PDF em bucket GCS privado com URL assinada de vida curta.
- Status derivado na leitura (
valid/expiringSoon/inRenewal/expired) com a regra do protocolo tempestivo: renovação protocolada mantém o documento operante. - Resumo de conformidade com score 0–100 ponderado por criticidade (interdição 3, multa 2, administrativa 1) e contagem de pendências críticas.
- Análise de upload plugável (
DocumentAnalyzer): v1 heurística por keywords do catálogo; OCR/LLM entra no mesmo ponto na v1.1. - Régua de alertas (lead do tipo/30/15/7/1/vencido) com
GET /alerts/preview; envio real (WhatsApp/e-mail) é v1.2. - Infra completa: Dockerfile, k8s/hml, cd.yml via Cloud Build — mesmo desenho do
routines.