Guia de desenvolvimento — equiparação com ecosif-automations

Módulo alvo: ecosif-moviments
Referência: alterações do ecosif-automations nos últimos 7 dias
Premissa: o ecosif-moviments deve processar importação e consolidação somente por API Java, sem iniciar fluxo por Lambda, trigger S3 ou consumidor SQS.


1. Objetivo

Este guia orienta o desenvolvimento necessário para aproximar o comportamento do ecosif-moviments ao que foi implementado no ecosif-automations, preservando a arquitetura própria do serviço Java.

O objetivo não é copiar a implementação Python/AWS, mas replicar as regras de negócio:


2. O que mudou no ecosif-automations

Foram considerados os commits recentes do ecosif-automations, principalmente:

Principais áreas alteradas:

Área Comportamento implementado no automations
Importação IPL Parser valida layout, data, tipo simples/contrapartida, fundo, CT32 e payload para entries.
Entries SQL Grava ct_lote, ct_documentos, ct_lancamento diretamente, com rastreio de arquivo.
Contrapartida Tipo 2 gera duas linhas contábeis: uma débito e uma crédito.
Totalização Débito/crédito usam cálculo decimal e refletem linhas geradas, não apenas linhas IPL.
Lote por arquivo/dia Arquivos diferentes no mesmo mês não sobrescrevem o mesmo lote; novo arquivo aloca próximo lote.
Flags ct_controle documento, loteencerra, lanencerra definem criação, rejeição, atualização ou substituição.
Relatórios Gera relatório por IPL, relatório mensal agregado e relatório de alterações.
Validações Conta, histórico, calendário e dia bloqueado são refletidos por linha no relatório.
Consolidação Pré-checks, catálogo de mensagens PT, cascata mensal e serialização por filial.
Consolidação diferida Janela debounce/lock em DynamoDB e fila FIFO para agrupar vários IPLs antes da consolidação.

3. O que já está alinhado no ecosif-moviments

O branch feature/import-process-refactory já contém uma primeira etapa de paridade:

Documento relacionado: importacao_ipl_api.md.


4. Diretriz API-only

No ecosif-moviments, a implementação deve ficar dentro do padrão:

Cliente / serviço chamador
  -> API REST ecosif-moviments
  -> Services Java transacionais
  -> Repositories JPA / SQL
  -> PostgreSQL
  -> resposta HTTP + relatório persistido/disponível

Não deve ser copiado como mecanismo de execução:

Esses itens podem inspirar semântica e requisitos operacionais, mas no Java devem virar serviços, transações, endpoints, tabelas de controle e jobs explícitos somente se forem acionados pela API ou por rotina Java controlada.


5. Gaps funcionais a fechar

5.1 Validação estrutural do IPL

Expandir IplImportRules para validar:

Decisão pendente: definir a data canônica do IPL no Java. A documentação atual do ecosif-moviments trata como ddMMyy; o ecosif-automations recente usa o prefixo YYMMDD em suas regras. Esta decisão deve ser fechada antes de ampliar validações.

5.2 CT32 e resolução de fundo

No ecosif-automations, o CT32 resolve fundo para empresa/filial. No ecosif-moviments, empresa e filial vêm na URL.

Contrato recomendado para API-only:

5.3 Conta reduzida e tipo de plano

Alinhar busca de conta ao comportamento do automations:

Hoje o Java já normaliza o código, mas a consulta ainda deve ser reforçada para refletir todos os filtros de negócio.

5.4 Calendário

Alinhar a validação de ct_calendario:

5.5 Lote por dia e arquivo

Implementar a mesma semântica de lote por arquivo/dia:

Referência do automations: docs/PROCESSO-LOTE-POR-DIA-E-ARQUIVO.md.

5.6 Matriz ct_controle

Replicar a matriz:

loteencerra lanencerra Comportamento esperado
N N Lote existente rejeita arquivo; lançamento existente rejeita linha.
S S Permite substituir lançamento e gera relatório de alterações.
N S Não altera estrutura do lote; insere/substitui lançamentos conforme dia compatível.
S N Pode reabrir lote, mas não substitui lançamento existente; apenas novos códigos entram.

No Java, evitar deleção global por número de lançamento. Toda alteração deve restringir por empresa, filial, período, lote, documento e lançamento.

5.7 Relatórios e rastreio

Padronizar relatório com granularidade equivalente:

Se a API não gravar relatórios em S3, ela deve expor endpoint ou persistência suficiente para o cliente consultar o mesmo conteúdo.

5.8 Consolidação, cota e fechamento

O automations avançou em pré-checks, cascata mensal e mensagens PT. Para o Java:

Se houver convivência entre Java e automations, definir um lock comum por empresa/filial para evitar consolidação simultânea.


6. Roadmap recomendado

Fase 1 — Contrato e validação estrutural

Fase 2 — Validações de domínio

Fase 3 — Lote, documento e flags

Fase 4 — Relatórios

Fase 5 — Consolidação API-only


7. Critérios de aceite


8. Referências