documents/CHANGELOG.md
Breno Pires 50a2d0b628 feat(analyze): extracao por LLM com confianca por campo e dupla passada em datas
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 02:41:39 -03:00

2.1 KiB
Raw Blame History

Changelog — documents

Formato baseado em Keep a Changelog; versionamento semântico.

[1.1.0] - 2026-08-07

Added

  • Análise por LLM (AnthropicAnalyzer, Onda 1.1 do PLANO-DOCUMENTOS-IA): com ANTHROPIC_API_KEY, o POST /documents/analyze extrai tipo, datas e número do PDF/imagem via modelo multimodal (default Haiku, configurável por DOCUMENTS_LLM_MODEL), com confiança por campo (fieldConfidences), citação do trecho de origem (evidence) e dupla passada em datas — divergência entre as duas leituras zera o campo e devolve dateMismatch (data errada é pior que campo vazio). Warnings novos no contrato: dateMismatch, lowConfidence, llmUnavailable.
  • Fallback gracioso: erro de API, arquivo >10MB ou mime não suportado caem na heurística por nome de arquivo com llmUnavailable — a análise nunca falha por causa do LLM. Sem a chave, o comportamento v1 fica intacto (factory em document.module.ts).

[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 0100 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.