Pular para conteúdo

01 — Fundação: o fluxo de entrada ponta a ponta

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-09-09

Etapa reconstruída

Esta e as demais etapas foram escritas retroativamente na migração para a constituição 1.4.5, a partir do CHANGELOG, das decisões e do código. Descrevem o delta de cada momento; o estado consolidado é a Documentação Completa.

Entregue em v0.0.1–v0.0.3 (2026-07-21).

Escopo

Fechar o último trecho da plataforma de integração: as tabelas-espelho ficavam pendentes no banco do cliente sem ninguém que as gravasse no ERP. Esta etapa cria o programa que roda na máquina do cliente, recebe o dado da nuvem e grava no X-Adm chamando o runtime ZIM.

Fora de escopo: mais de um fluxo por instalação (etapa 02), observabilidade remota (etapa 02), qualquer garantia de conjunto entre linhas (etapa 05).

O que foi construído

  • Sincronização PowerSync das tabelas-espelho para um SQLite local, offline-first, com JWT auto-assinado RS256 aceito pela instância real; schema enxuto (só o que o cliente usa) e uma única classe Kotlin embrulhando o SDK.
  • Gateway ZIM: arquivo de envio fixed-width, execução do zimrtmu.exe com timeout e leitura validada do retorno, com matching por posição de linha.
  • Processador de lotes na ordem dos fatos, com a máquina de status 000 → 001 → 006 | 1XX | 9XX, restauração integral em falha e recuperação de 001 no startup.
  • Write-back do status ao Integrador, com fila offline-first quando a nuvem está fora.
  • Modo --debug: processamento manual pelo console, item a item ou pedido a pedido, para homologar o programa ZIM passo a passo com a equipe do ERP.
  • Distribuição: fat jar + properties de exemplo + scripts em dist/, e o runbook de instalação e operação.

Contratos

O contrato pAbast nasce aqui, campo a campo — é a fonte única dos dois lados. Ainda em v0.0.3 ele foi convergido ao que já rodava em produção: escalas monetárias em 2 casas e data_inc+hora_inc fundidos num datetime de 14 caracteres.

Decisões

Decisão Assunto
0001 runtime Java 8 — exceção registrada à constituição