documents/AI-HISTORY.md
Breno Pires 2006f2475f
All checks were successful
CD / build (pull_request) Successful in 7s
feat(radar): validacao de conformidade por CNPJ (Radar de Conformidade)
Consulta Receita em cadeia de fallback e repasse da ANP (ISO-8859-1);
autoavaliacao de 17 itens por programa+loja+CNPJ em jsonb; motor de score
com regra de gargalo e tres numeros, espelho do frontend. 21 testes novos.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 02:55:57 -03:00

5.2 KiB
Raw Permalink Blame History

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-11 03:00 — Radar de Conformidade: validação por CNPJ (1.2.0)

  • Tempo: ~30 min
  • Prompt: "em documentos, crie uma funcionalidade de validar conformidade" (spec: Obsidian 18 - Radar de Conformidade — metodologia do score + fontes de dados testadas em 11/08)
  • Mudanças: módulo radar: RadarLookupService (Receita em cadeia BrasilAPI→minhareceita→CNPJá, QSA reduzido a contagem por LGPD; repasse da ANP com decode ISO-8859-1, falha degrada para available:false); RadarScoreService (motor de 17 itens/7 esferas, R1R7, teto por gargalo, três números — espelho do frontend); entity+migration radar_assessment (única por programa+loja+CNPJ, respostas em jsonb, diagnóstico sempre recalculado); controller /radar/company|anp|assessments. 21 testes novos (83 no total).
  • Artefatos: branch feat/compliance-radar

2026-08-07 02:45 — Prazo de renovação dinâmico por órgão (Onda 1.2)

  • Tempo: ~30 min
  • Prompt: substituir o lead fixo do catálogo pelo tempo real observado de emissão por órgão na carteira (v0 do plano de IA — estatística descritiva, sem ML).
  • Mudanças: entity + migration renewal_cycle (gravada automaticamente quando um save zera um protocolo; descarta intervalos implausíveis); LeadTimeService (mediana/p90 por tipo e por órgão; effectiveLeadDays = max(catálogo, mediana+15) com amostra ≥ 3 — catálogo é piso); GET /compliance/lead-times; campos aditivos effectiveLeadDays/observed no upcoming e no alerts/preview, com o degrau lead da régua usando o prazo dinâmico; seed determinístico seed-demo-cycles.ts; 16 testes novos (54 no total, 7 suites). CHANGELOG 1.1.0.
  • Artefatos: branch feat/dynamic-lead-times (worktree documentos/documents-service-lead)

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.