Pular para o conteúdo
Voltar aos projetos
01 2024–2026
Full-Stack Ciência de Dados Automação

AppTech — Plataforma de Gestão

Um ERP-satélite que unifica vendas, recebimentos, fiscal, jurídico e RH de uma construtora.

processos no pipeline histórico
~2,7M
módulos com permissão por usuário
13
pipelines de ETL incrementais
20+

Da dor ao resultado

Fig. 01 — Fluxo de dados 12 nós · 11 arestas
UAU (SQL Server) TOTVS RM via VPN Planilhas Bases judiciais públicas + fonte paga ETL incremental watermark + UPSERT por chave natural Enriquecimento rate limit + teto de custo PostgreSQL Flask API 13 módulos React SPA WhatsApp PDF / XML Lançamentos no ERP fila com heartbeat
Origem Externo Processo Persistência Aplicação Saída
01

Antes

Dezenas de planilhas e consultas manuais ao ERP. Cada área tinha sua própria cópia dos números, muitas vezes desatualizada.

A operação dependia de dezenas de planilhas e consultas manuais ao ERP UAU (SQL Server) e ao TOTVS RM (folha de pagamento). Fechamentos de vendas, conciliação bancária, fiscal e jurídico consumiam horas e eram propensos a erro.

Não havia uma visão única e confiável: cada área tinha sua própria cópia dos números, muitas vezes desatualizada.

E cada demanda nova de um setor virava mais uma planilha ou mais um sisteminha isolado — o que multiplicava logins, bases divergentes e manutenção.

02

Como · 1/5

Construí uma aplicação Flask + React com um banco PostgreSQL próprio, alimentado por mais de vinte pipelines de ETL que extraem incrementalmente do UAU, do TOTVS RM e de planilhas — com watermarks, UPSERT por chave natural e resiliência a RESTORE das réplicas.

03

Como · 2/5

Sobre esses dados, entreguei 13 módulos com permissão por usuário — Vendas, Recebimentos, Área dos Administrativos, Conciliação Bancária, Fiscal/Contabilidade, Jurídico, RH/Departamento Pessoal, Protestos, Centro de Inovação, Usuários, entre outros. Os maiores se desdobram: o RH reúne onze sub-módulos e o Fiscal, oito.

04

Como · 3/5

A decisão de arquitetura que sustenta isso: toda ferramenta nova entra como módulo do AppTech, nunca como aplicação separada. Cada setor ganha seu próprio painel agrupando o que lhe interessa, mas a base de dados, a autenticação e o deploy continuam sendo um só.

05

Como · 4/5

O sistema jurídico, que nasceu como aplicação separada, foi o teste dessa regra: migrei-o para dentro do AppTech como módulo — processos judiciais, rateios entre obras, pagamentos a escritórios e empresas monitoradas —, trouxe o histórico conferido 1:1 (197 rateios, 3.340 itens) e desliguei o legado.

06

Como · 5/5

Tudo empacotado em Docker e servido em produção via Docker Swarm + Traefik, com deploys rolling e healthchecks.

07

Depois

Uma plataforma única ao redor do ERP: vendas, financeiro, fiscal, jurídico e RH em 13 módulos, com uma só base e um só login. Demanda nova vira módulo, não mais uma planilha.

~2,7M
processos no pipeline histórico
13
módulos com permissão por usuário
20+
pipelines de ETL incrementais

Como ler o diagrama

Mais de vinte pipelines incrementais consolidam os sistemas de origem num Postgres; sobre ele, treze módulos e as saídas que a operação usa — inclusive os lançamentos jurídicos de volta no ERP. A folha entra por VPN, aberta só durante a extração. O Postgres desenhado como um só é uma simplificação: reúne o banco do AppTech e o banco jurídico que ele lê e enriquece.

Destaques técnicos

  1. 1 Pipeline histórico de ~2,7 milhões de processos de pagamento desde 2014. A primeira carga é fatiada por ano e resumível — em volume desse tamanho, um job que precisa recomeçar do zero a cada queda nunca termina. Depois disso, só incremental por janela deslizante.
  2. 2 ETL fiscal resiliente a RESTORE da réplica SQL Server: a réplica é restaurada periodicamente e isso invalidaria o controle de posição. Watermark mais UPSERT por chave natural fazem a carga se recuperar sozinha em vez de duplicar ou perder linha.
  3. 3 A folha de pagamento vive atrás de VPN. O ETL do TOTVS RM abre o túnel apenas durante a extração e o fecha em seguida, via context manager — a janela de exposição é o tempo da query, não o uptime da aplicação.
  4. 4 Lançamento jurídico no ERP em sequência de passos — gerar o processo, anexar o documento, comentar — como fila assíncrona: o progresso fica na própria linha, com heartbeat, e o item que para no meio é detectado e liberado para nova tentativa. Depois que o processo existe no ERP, o rateio trava: o sistema recusa a edição em vez de deixar o banco divergir do ERP.
  5. 5 Enriquecimento de processos judiciais cruzando bases públicas e uma fonte paga, com rate limiting em janela deslizante e controle de custo: antes de cada consulta tarifada o robô confere o saldo e para sozinho ao atingir a reserva mínima. A cidade sai do cruzamento do órgão julgador com a base oficial de municípios.
  6. 6 Notificação por WhatsApp com entrega verificada: a API respondia sucesso e a mensagem simplesmente não chegava, por uma divergência no identificador do destinatário. Passei a confirmar o identificador válido antes de enviar, com cache e degradação segura.
  7. 7 Geração de planilhas de terceiros preservando macros, imagens e vetores — que qualquer biblioteca de escrita destrói ao salvar o arquivo.
  8. 8 Deploy em Docker Swarm com Traefik, DNS interno resolvido por requisição no Nginx — sem isso o proxy quebra se o backend ainda não subiu — e healthcheck com carência de inicialização para não derrubar container que só está começando.