Sistema de prestação de contas de viagens com extração automática de notas fiscais por IA de visão local.
prestacaocontas.sistematica.pro
O projeto foi pausado em 13/07/2026 para liberar memória e processamento da VPS
(o container de IA de visão consumia ~3,3 GiB de RAM residentes). Toda a stack Docker foi desligada,
porém nenhum dado foi apagado: banco (volumes/pg-data), imagens das notas
(volumes/uploads) e modelos de IA (volumes/ollama) permanecem intactos no servidor.
Este relatório é servido como HTML estático e não depende do projeto estar no ar.
O colaborador em viagem fotografa a nota fiscal e faz o upload pelo site ou pelo app.
O sistema extrai automaticamente Estabelecimento, Data/Hora e Valor usando IA de visão
local (Ollama, modelo qwen2.5vl:3b) com o Tesseract como segunda análise independente.
O processamento é assíncrono "estilo YouTube": o upload responde na hora (HTTP 202)
e o usuário recebe uma notificação (sino/badge) quando a nota termina de processar. Um humano então
revisa, corrige se necessário e confirma.
React 19 + Vite + TypeScript, servido por nginx. Responsivo mobile-first, PWA (atalho iOS em tela cheia) e download do APK Android na tela de login.
Java 25 + Spring Boot 3: API REST, autenticação JWT/BCrypt, Flyway (migrações V1–V6),
worker @Scheduled de OCR com recovery de notas presas.
Python 3.12 + FastAPI: pré-processamento OpenCV, correção de orientação, e duas análises
independentes — visão (Ollama qwen2.5vl:3b) e Tesseract — com timeout e medição de tempo.
PostgreSQL 16 dedicado (porta local 15433), UUID em todas as tabelas (pgcrypto), análises salvas em JSONB.
App Flutter (WebView) único para Android e iOS. APK de ~44 MB compilado via Docker; build iOS previsto via Codemagic (macOS na nuvem).
Docker Compose com 5 containers (postgres, backend, ocr, ollama, frontend) na rede
prestacao-pc-net; HTTPS via proxy-nginx compartilhado + Let's Encrypt.
Desenvolvimento concentrado entre 20 e 21 de junho de 2026, registrado em docs/CHANGELOG.md.
SenhaProvisoriaFilter).legivel virou informativo).prestacao-ollama dedicado (12 GB / 4 núcleos), isolado da infra compartilhada.qwen2.5vl:3b; imagem reduzida a ~1400 px; botões de girar no upload./admin/notas + GET /api/admin/notas).asyncio.to_thread + timeout de 120s com kill de processos órfãos).| Migração | O que introduziu |
|---|---|
V1__init | Esquema inicial: usuários, notas e notificações, tudo com PK UUID (pgcrypto). |
V2__login_e_senha_provisoria | Login por usuário (único, case-insensitive) e flag de senha provisória. |
V3__admin | Coluna admin — controle de acesso administrativo. |
V4__tempo_processamento | Início e duração do processamento — base do countdown autocalibrado. |
V5__analises_separadas | JSONB analise_visao e analise_tesseract — análises independentes. |
V6__local_nota | Campo local (cidade onde a nota foi gerada). |
evoluções entregues em 2 dias de desenvolvimento intensivo (20–21/jun/2026).
containers Docker: postgres, backend, ocr, ollama e frontend.
colaboradores cadastrados, sendo 3 administradores.
motores de extração independentes por nota: IA de visão + Tesseract.
cd /root/PROJETO_PRESTACAO_DE_CONTAS && docker compose up -dproxy_pass http://prestacao-frontend:80; em /root/proxy/conf.d/prestacaocontas.sistematica.pro.conf (instruções comentadas no próprio arquivo).docker exec proxy-nginx nginx -t && docker exec proxy-nginx nginx -s reloadTodos os dados (usuários, notas, imagens e modelo de IA já baixado) estarão exatamente como ficaram na pausa.