Package br.com.xadm.ingestao


package br.com.xadm.ingestao
Seam de ingestão XLS/CSV (ADR 0019, raiz/001 Fase 5, plano 003 T6): o esqueleto agnóstico de domínio + as SPIs que os apps implementam. O reader, o motor de upsert e os processadores de domínio divergem de verdade entre onpetro (POI-SAX + 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.