# Histórico de mudanças com IA Registro das alterações feitas neste repositório com apoio de IA (Claude), incluindo tempo aproximado. Ordem cronológica — **mais recente no topo**. ## Formato de entrada ``` ### YYYY-MM-DD HH:MM — Título curto - **Tempo:** ~X min - **Prompt:** resumo do pedido - **Mudanças:** o que foi feito - **Artefatos:** branch, PR #, commit hash ``` --- ### 2026-08-07 — Análise por LLM com confiança por campo (Onda 1.1) - **Tempo:** ~30 min - **Prompt:** executar a Onda 1.1 do PLANO-DOCUMENTOS-IA: extração real por LLM atrás da interface `DocumentAnalyzer`, com confiança por campo, dupla passada em datas e fallback. - **Mudanças:** `analyzer/anthropicAnalyzer.ts` (Messages API via fetch nativo, content block de document/image em base64, duas passadas com fraseados diferentes, merge com bônus de concordância e teto 0,98, parse tolerante, timeout 60s); contrato ganha `fieldConfidences` e `evidence` (interface + DTO, retrocompatível); factory `documentAnalyzerFactory` no módulo (sem `ANTHROPIC_API_KEY` → heurística v1 intacta); testes com fetch mockado (8 casos: passadas convergentes/divergentes, erro de API, tipo inválido, arquivo grande, factory); `.env.example` e README. Build limpo; 46 testes verdes (38 + 8). - **Artefatos:** branch `feat/llm-analyzer` ### 2026-08-07 — Criação do serviço (espelho do routines) - **Tempo:** ~60 min - **Prompt:** criar o microserviço `documents` para a feature Documentos e Licenças do painel, espelhando o `routines` (padrões, storage, infra), com catálogo por UF, documentos com versões, conformidade, análise de upload e régua de alertas. - **Mudanças:** - Esqueleto NestJS 10 + Fastify + TypeORM copiado do `routines` (main/app/ormconfig/ interceptor/tenant DTOs/storage/mocks de teste idênticos, nomes adaptados, prefixo `DOC`). - Módulos: `catalog` (tipos + override por UF aplicado na leitura), `document` (obrigação única por tipo/loja com unique no banco; renovação = versão nova + protocolo zerado; upload multipart com campos antes do arquivo e checagem de `truncated`, igual às fotos de Rotinas), `compliance` (score ponderado — porte fiel do `buildComplianceSummary` do painel), `alerts` (régua lead/30/15/7/1/vencido; protocolado não alerta; envio real é v1.2). - Regra de status em `status.util.ts` — porte fiel do `resolveStatus` da simulação do painel; datas comparadas em meio-dia UTC para não depender de fuso/horário de verão. - Análise plugável: interface `DocumentAnalyzer` + `KeywordAnalyzer` (v1); OCR/LLM troca o provider `DOCUMENT_ANALYZER` sem tocar controller/service. - Migration única: DDL + seed dos 15 tipos (cópia exata do catálogo do frontend, inserts parametrizados por causa dos acentos) + 3 overrides de exemplo (AVCB SP/GO, LO SP). - 38 testes (status, score, analyzer, save/renovação/protocolo/tenant, régua). Desvio consciente do jest.config do routines: `storage/**` fora da cobertura (testar seria mockar o SDK do GCS; controllers e interceptors já ficavam fora no original). - Infra: Dockerfile, k8s/hml (deployment com cloudsql-proxy, service, ingress com `proxy-body-size: 12m` para PDFs), cloudbuild/cd.yml adaptados. - **Verificação:** `yarn build` limpo; `yarn test` 6 suites / 38 testes verdes, cobertura 98,5% stmts / 80,4% branches (mínimos 73/65). - **Artefatos:** repo novo, branch master, commit inicial.