Documentação Operacional — ecosif-automations

Público-alvo: DevOps / SRE
Módulo: ecosif-automations (importação e ETL)


1. Agendamentos e Gatilhos (Sem Cron)

O módulo não utiliza cron jobs no código. O processamento é event-driven:

Gatilho Onde O que dispara
S3 ObjectCreated Bucket de import (.IPL) Lambda import — regista janela ou processa imediato (IMPORT_DEFER_ENABLED).
SQS import-defer …-automations-import-defer Mensagens FLUSHLambda import-dispatcher → fila entries FIFO.
SQS entries FIFO …-automations-entries.fifo Lambda entries (MessageGroupId = fundo).
SQS consolidation-defer …-automations-consolidation-defer FLUSH com debounce → Lambda consolidation-scheduler.
SQS consolidation FIFO …-automations-consolidation.fifo Lambda consolidation (MessageGroupId = empresa|filial).

Em modo local (ECOSIF_LOCAL_MODE=true), não há filas; os scripts em scripts/ chamam os serviços diretamente (ex.: test_local_import.py, test_local_full.py).


2. Pastas de Entrada e Saída

2.1 Em AWS (S3)

Pasta (prefixo no bucket) Variável Descrição
Entrada Qualquer prefixo; o evento S3 contém a key do .IPL. O ficheiro mestre CT32.LD deve existir na chave definida em CT32_MASTER_KEY.
importError/files/ AWS_S3_ERROR_FILES_FOLDER (default: importError/files/) .IPL com falha de validação/import/consolidação.
importError/ (raiz) AWS_S3_ERROR_FOLDER CSV ERRO_<nome_ipl>.csv (mensagem de erro).
imported/files/ AWS_S3_IMPORTED_FILES_FOLDER (default: imported/files/) .IPL processados com sucesso.
imported/reports/ AWS_S3_REPORTS_FOLDER Resumo mensal {FUNDO}_{YYYYMM}_report.csv e {nome}.CHANGES.csv.
imported/reports/details/ AWS_S3_REPORTS_DETAILS_FOLDER Relatório linha a linha {nome}.IPL.REPORT.csv.
Raiz do bucket Apenas CT32.LD (mestre) e .IPL à espera de processamento.

2.2 Em Modo Local

Com ECOSIF_LOCAL_MODE=true e ECOSIF_LOCAL_BASE_DIR (default: ./local_data):

Pasta Uso
local_data/input/ Colocar .IPL para processamento e garantir CT32.LD na chave configurada por CT32_MASTER_KEY.
local_data/imported/ Ficheiros processados com sucesso.
local_data/importError/ Ficheiros com erro.
local_data/imported/reports/ Relatórios de processamento.

3. Variáveis de Ambiente Principais

Variável Obrigatória Descrição
ECOSIF_LOCAL_MODE Local: sim true = usa sistema de ficheiros; false = usa S3/SQS.
ECOSIF_LOCAL_BASE_DIR Não Base para pastas locais (default: ./local_data).
AWS_S3_BUCKET_NAME / AWS_S3_BUCKET AWS: sim Nome do bucket S3.
AWS_S3_ERROR_FOLDER Não Prefixo para erros (default: importError/).
AWS_S3_IMPORTED_FOLDER Não Prefixo para importados (default: imported/).
AWS_S3_REPORTS_FOLDER Não Prefixo para relatórios (default: imported/reports/).
CT32_MASTER_KEY Não Chave S3 (ou path local relativo) do ficheiro mestre CT32 (default: CT32.LD).
AWS_SQS_ENTRIES_QUEUE_URL AWS (import / dispatcher) URL da fila FIFO entries.
AWS_SQS_IMPORT_DEFER_QUEUE_URL AWS (import) Fila de agendamento da janela de importação por fundo.
IMPORT_DEFER_ENABLED Não true = janela por fundo (default produção CFN).
IMPORT_WINDOW_TABLE Se defer DynamoDB …-import-window.
IMPORT_DEBOUNCE_SEC / IMPORT_MAX_WAIT_SEC Se defer 30 / 300 (defaults CFN).
AWS_SQS_CONSOLIDATION_QUEUE_URL AWS (entries) URL da fila FIFO de consolidação (nome termina em .fifo). MessageGroupId = empresa\|filial.
Republicar consolidação (IPL na raiz) Ops python scripts/republish-root-consolidation.py (ver script; requer entries já gravados).
CONSOLIDATION_DEFER_ENABLED Não true = janela debounce antes de consolidar (fase 4); false = envio imediato após entries.
CONSOLIDATION_DEBOUNCE_SEC Se defer Segundos de calma após o último IPL (default 120).
CONSOLIDATION_MAX_WAIT_SEC Se defer Teto desde o primeiro IPL da janela (default 600).
CONSOLIDATION_WINDOW_TABLE Se defer Tabela DynamoDB da janela por período.
CONSOLIDATION_LOCK_TABLE Se defer Tabela DynamoDB de lock por empresa\|filial.
AWS_REGION AWS Região (ex.: us-east-1).
ECOSIF_API_BASE_URL Sim (validação/import) Base das APIs (ex.: http://localhost ou https://api.ecosif.com).
ECOSIF_AUTH_PORT, ECOSIF_AUTOMATIONS_SERVICE_SECRET AWS (import) Sign-in ecosif-auth (8081 default).
ECOSIF_MASTERDATA_PORT, ECOSIF_MASTERDATA_CONTEXT_PATH Sim Masterdata (8082 default).
ECOSIF_MOVIMENTS_PORT, ECOSIF_MOVIMENTS_CONTEXT_PATH Sim Moviments (8083 default).
ECOSIF_API_URL_MODE Não alb (default) ou gateway.

Credenciais AWS: IAM role (Lambda) ou variáveis AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY (conforme ambiente).


4. Como Monitorar se uma Importação Falhou

4.1 Ficheiros e Pastas

4.2 Logs

4.3 Fila SQS

4.4 CT32 mestre


5. Dependências e Execução Local

Para layouts dos ficheiros e guia "O que fazer quando uma importação falha", ver user/visao_geral.md. Para fluxos e integração com moviments/masterdata, ver architecture/arquitetura.md.