Package br.com.xadm.ingestao
executeBatch) e
vantroba (leitura própria + COPY) — por isso são SPIs, não código compartilhado.
Esqueleto (aqui): ZipXlsExtrator (anti-zip-bomb),
ConjuntoLote(+Repository+Service) (tracking de lote com fechamento
atômico single-winner), ResultadoProcessamento (métricas no
retorno — mata os 3 Consumer callback), UpsertResultado
(superconjunto das duas métricas) e DespachanteXlsProcessor
(dispatch por Map — mata o switch).
SPIs (o app implementa): XlsReader (SAX/CSV),
BulkUpsertStrategy (executeBatch/COPY),
XlsProcessor (processador de domínio),
ContadorProcessamentosFinalizados (contagem sobre o schema do app)
e ResumoLoteNotificador (entrega do resumo).
A tabela xls_conjunto_lote é da lib (o adotante provê a migration). A paridade do
app (dedupe, anti-deadlock 40P01, linhas_efetivas) é verificada no e2e do T7 —
fora do gate deste módulo.
-
ClassDescriptionSPI do motor de upsert em lote.Tabela
xls_conjunto_lote: rastreia um lote de arquivos enviados juntos num .zip.Persistência deConjuntoLote(lote por zip).Coordena o ciclo de vida de um lote (.zip).SPI de contagem de processamentos finalizados de um lote.Despacha um arquivo para oXlsProcessordo seu tipo.Resultado de um processamento de arquivo — carrega as métricas no retorno, eliminando osConsumer<...>callback que onpetro usava para acumularlinhas_efetivas/linhas_removidas(over-eng menor do BI, R5).Arquivo ignorado por regra de negócio.Processamento concluído com sucesso.SPI de notificação do resumo de um lote fechado.Métrica de um upsert em lote — superconjunto que serve as duas técnicas:executeBatch(onpetro, que só conheceenviadas/efetivas) eCOPY+CTERETURNING xmax=0(vantroba, que separa inseridas/atualizadas/removidas).SPI do processador de um tipo de arquivo.SPI de leitura de planilha: transforma os bytes de um arquivo em linhas deString[], sem conhecimento de domínio.Desempacota o .zip de lote em suas entradas .xlsx (o zip É o lote).Uma entrada .xlsx do zip.