Files
gerador-proposta/docs/gerador-propostas/adr/ADR-002-template-ingestion-engine.md
2026-10-03 00:00:45 -03:00

41 lines
2.3 KiB
Markdown

# ADR-002 — Motor de ingestão de PDF, PPTX e DOCX
- Status: Proposed
- Data: 2026-10-02
- Pendência: P-010
- Decisão: nenhuma
## Contexto
Admin ou Gestor importa um modelo PDF, PPTX ou DOCX. O campo dinâmico nasce só de um marcador `[campo]` escrito no arquivo. O sistema não infere trecho variável. IA não substitui essa validação.
O motor que lê o arquivo e devolve texto ou estrutura ainda não foi escolhido. Sem essa escolha, não há parser real nesta fase.
## Alternativas
1. Bibliotecas locais por formato, com uma etapa posterior e determinística que só aceita `[campo]`.
2. Conversão por processo externo (por exemplo LibreOffice) para um formato intermediário, seguida da mesma detecção determinística.
3. Serviço externo de extração de documento, seguido da mesma detecção determinística.
4. Modelo de linguagem lendo o arquivo para achar campos. Esta alternativa conflita com a regra de marcador explícito e com a proibição de a IA substituir a validação. Está listada para não reaparecer como atalho. Não é candidata aceitável para descobrir campos.
As alternativas 1, 2 e 3 continuam abertas. Nenhuma foi escolhida. Claude permanece na stack para capacidades de IA que venham a ser aprovadas; não é o motor de marcadores.
## Critérios para sair de Proposed
- Fidelidade dos marcadores em PDF, PPTX e DOCX reais, inclusive repetidos e partidos por formatação.
- O que acontece com arquivo sem marcador, arquivo protegido e extração incompleta. O último ponto também depende de P-006.
- Isolamento do processo que abre o arquivo, tempo máximo e falha sem criar rascunho de modelo. O limite numérico continua em P-006 e P-012.
- O workspace só lê o próprio arquivo.
## Impacto no código desta fase
`TemplateIngestionService` devolve `blocked / P-006` enquanto a política de arquivo não existir, e `blocked / P-010` mesmo que um teste marque a política como aprovada. Não há adapter que leia bytes.
## Impacto no prompt 02
Pode existir coluna ou objeto para `source_file_ref`, `normalized_template` e `analysis_json`. O conteúdo desses JSON não fica preso a um motor. Não há worker de conversão nesta fase nem na migration.
## O que este ADR não decide
Tamanho máximo, antivírus, sandbox e extração parcial continuam no ADR-004.