1. Visão geral
O Atlantis GeradorLR é a plataforma interna para automatizar a geração da LR (Listagem de Receitas e Despesas) mensal de cada empresa do grupo (ADV, ADC, OPR, PPG, HIL, NOT, ADS, OPL, etc).
O sistema cobre quatro grandes fluxos:
- Importar e gerar — receber template contábil + extração do sistema interno + extrato bancário, cruzar tudo e produzir uma LR consolidada.
- Conferir e editar — visualizar, filtrar, editar (linha-a-linha ou modo planilha tipo Excel), pausar para terminar depois e finalizar.
- Salvar e compartilhar — persistir no banco (
lr_history) para que toda a equipe veja a mesma LR daquela empresa naquele mês. - Analisar — dashboard agregado (modo Geral), relatórios comparativos e extratos por empresa.
2. Arquitetura do sistema
Stack técnico
- Frontend: React 19 + TanStack Start v1 + Vite 7, com Tailwind v4. UI baseada em
shadcn/ui. - Roteamento: file-based via
src/routes/(TanStack Router). - Backend: Lovable Cloud (Supabase) — Postgres + Auth + RLS.
- Server functions:
createServerFnde TanStack para chamadas autenticadas RPC. - Deploy: Edge (Cloudflare Workers).
Camadas e responsabilidades
┌────────────────────────────────────────────────────────────────┐
│ CLIENTE (React + TanStack Router) │
│ │
│ Rotas (src/routes/): │
│ / → Gerador de LR (principal) │
│ /nova-lr → criação manual de lançamento │
│ /historico-lr → todas as LRs salvas │
│ /relatorios → comparativos, extratos │
│ /rateios → fornecedores e colaboradores │
│ /regras-rateio → regras customizadas de processamento │
│ /admin-usuarios→ aprovação e papéis (admin) │
│ /auth → login / solicitação de acesso │
│ /ajuda → esta página │
│ │
│ Componentes-chave (src/components/): │
│ GeradorLR.tsx — workspace principal │
│ EditableLRTable.tsx — modo planilha (Excel-like) │
│ NovaLR.tsx — formulário de linha manual │
│ RegrasRateio.tsx — editor de regras │
│ AppSidebar.tsx — menu lateral global │
│ ThemeProvider.tsx — tema claro/escuro │
└────────────────────────────────────────────────────────────────┘
│
▼ (chamadas autenticadas)
┌────────────────────────────────────────────────────────────────┐
│ CAMADA SERVER (TanStack server functions) │
│ │
│ src/lib/admin.functions.ts — gestão de usuários/papéis │
│ src/server/generate-lr.ts — pipeline de geração da LR │
│ src/start.ts — middleware que anexa o JWT │
│ │
│ Auth middleware: requireSupabaseAuth │
└────────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────┐
│ BACKEND (Lovable Cloud — Postgres + RLS) │
│ │
│ Tabelas principais: │
│ profiles — perfil do usuário │
│ user_roles — papel (admin / user) │
│ access_requests — solicitações de acesso pendentes │
│ lr_history — LRs salvas (rows JSON, status, mês, │
│ empresa, autor, criado_em) │
│ │
│ Políticas: │
│ SELECT em lr_history → liberado a authenticated │
│ UPDATE/DELETE → apenas autor │
│ INSERT → authenticated │
└────────────────────────────────────────────────────────────────┘
Fluxo de dados (gerar LR)
Usuário ─► Upload Template ─┐
Usuário ─► Upload Sistema ──┼─► Parser CSV/XLSX ─► Normalização
Usuário ─► Upload Banco ────┘ │
▼
Aplicação de Regras de Rateio
(Fornecedores / Colaboradores / Custom)
│
▼
Conciliação Banco ↔ Sistema ↔ Template
│
▼
LR consolidada (em memória)
│
┌────────────────────┼────────────────┐
▼ ▼ ▼
Dashboard Modo Edição Pendentes
│ │ │
└────────────────────┼────────────────┘
▼
"Salvar no banco" → lr_history
│
▼
Visível para toda a equipe; aparece no
Histórico, Relatórios e Dashboard Geral.
Estado e persistência local
- localStorage: preferências de UI, regras de rateio custom (
RegrasRateio), tema. - Supabase: tudo que é compartilhado entre usuários (LRs, papéis, acessos).
- Sessão: token JWT é gerenciado pelo Supabase client e injetado nas server functions via
attachSupabaseAuth.
3. Login & solicitação de acesso
Página /auth. Três modos:
- Entrar — email + senha. Botão "olho" mostra/oculta a senha.
- Solicitar acesso — usuário envia nome + email + justificativa. A solicitação cai em
access_requestse fica visível ao admin. - Reset — link de recuperação por email.
Enquanto o admin não aprovar, o usuário consegue logar mas não tem permissão de escrita. Só quem tem papel user (ou superior) na tabela user_roles consegue salvar LRs.
4. Topbar (barra de controle)
- Atlantis Group — logo, leva à home.
- Rail de empresas — pílulas com pontinho:
- verde = LR salva completa naquele mês
- vermelho/amarelo = LR parcial (pausada)
- cinza = nenhuma LR ainda
- Seletor de mês — setas ‹ › ou clique no chip
MM/AApara popover com lista completa. - + Criar LR — abre o hub de importação.
- Seção: Geral — força o dashboard a agregar todas as empresas do mês.
- ❓ Ajuda — abre esta página.
- Tema (☀/☾) — alterna claro/escuro.
6. Página: Gerador de LR (/)
É o coração do sistema. Tem três views:
6.1 View "Criar LR"
Três cards de upload: Template, Sistema, Banco. Aceita .xlsx, .xls e .csv. Não aceita .numbers — exporte como CSV no Apple Numbers antes.
Quando os três arquivos estão carregados, "Gerar LR" fica ativo. A empresa é detectada automaticamente do template (pode sobrescrever em Multi-empresa, quando aplicável).
6.2 View "Workspace" — abas internas
- Dashboard — KPIs (Receitas, Despesas, Saldo, Qtd), fluxo diário, saúde da LR (verificadas, não verificadas, pendentes, flags), top contas, atividade recente. No modo Geral, agrega todas as empresas.
- LR Gerada — tabela completa. Filtros: Todas, Receitas, Despesas, Pendentes, Verificadas, Não verificadas, Flags. Busca textual global. Clique numa linha para editar no modal; ou ative Modo Edição para editar inline tipo Excel.
- Pendentes — lançamentos do banco não casados; conferir manualmente ou ignorar.
6.3 Ações principais
- + Adicionar linha manual — abre modal ou (no Modo Edição) insere linha vazia no fim.
- Exportar CSV — arquivo no formato da contabilidade.
- Salvar no banco — persiste em
lr_history. - Pausar construção — marca como parcial (vermelho) para retomar depois.
7. Página: Nova LR (/nova-lr)
Formulário para criar uma linha avulsa fora de uma importação. Campos: emoji, data, empresa (com auto-preenchimento de código), conta, categoria, histórico, valor (receita ou despesa), OBS, etc.
Após salvar, abre confirmação "Enviar para a aba da empresa?". Se sim, a linha é anexada à LR da empresa/mês correspondente. Histórico recente fica visível com badge ✓ EMPRESA.
8. Página: Histórico (/historico-lr)
Lista todas as LRs salvas no banco — por qualquer usuário do grupo. Filtros por empresa, mês, autor, status (completa/parcial) e busca textual. Ações: abrir, reexportar CSV, apagar (somente autor).
9. Página: Relatórios (/relatorios)
Três abas:
- Geral — visão agregada do mês (todas as empresas).
- Por empresa — drill-down de uma empresa.
- Comparativo — confronto entre empresas/meses (com seletor de empresa).
Cada relatório pode ser exportado em CSV. Os números vêm das LRs em lr_history (chaves RECEITA, DESPESA, CONTA, etc).
10. Página: Rateios (/rateios)
Gerencia os CSVs de classificação automática:
- Fornecedores → fornecedor → conta/categoria/empresa.
- Colaboradores → nome → conta de pessoal.
São privados por usuário (cada um mantém o próprio mapeamento). Atualize antes de gerar para que novos fornecedores não caiam em Pendentes.
11. Página: Regras de Rateio (/regras-rateio)
Regras customizadas com condições (regex/keyword sobre histórico, valor, conta), mapeamentos (código → valor) e saída com placeholders. Cada regra tem botão "Testar". Há também um botão Ajuda no header da página com modal detalhado.
Regras ficam em localStorage e são aplicadas durante a geração.
12. Página: Admin Usuários (/admin-usuarios)
Visível apenas para usuários com papel admin. Permite:
- Ver e aprovar/rejeitar solicitações de acesso pendentes.
- Listar usuários e alterar papéis (admin / user).
- Desabilitar contas.
13. Modo Edição (planilha tipo Excel)
Botão ✏ Modo Edição na barra de ações da LR. Ativa o componente EditableLRTable:
- Edição inline célula a célula (commit por blur/Enter).
- Dropdowns para colunas MÊS, EMPRESA, CONTA, CATEGORIA com valores únicos extraídos da própria LR.
- Filtros por coluna via dropdown (escolha múltipla por valor).
- Drag-to-fill (alça de preenchimento) para copiar valor da célula para baixo/para cima.
- Atalhos: Enter confirma, Esc cancela, Tab próxima célula.
Funciona tanto em LR recém-gerada quanto em LR já salva (verde) — basta selecionar empresa+mês e ativar o modo.
14. Pausar / Retomar LR
Durante a conferência você pode parar no meio:
- Clique em Pausar construção.
- A LR é gravada com
status = 'partial'. - Na topbar a empresa fica com pontinho vermelho indicando parcial.
- Para retomar: selecione a empresa+mês, abra a LR e continue. Ao concluir, clique em Salvar no banco para marcar como
completa(verde).
15. Boas práticas
- Revise Pendentes e Flags antes de salvar.
- Mantenha uma LR por empresa/mês. Para regerar, apague a anterior no Histórico.
- Atualize Rateios e Regras assim que aparecer um fornecedor novo.
- Confira empresa + mês na topbar ao trocar de contexto.
- Use Modo Edição para correções em massa; o modal para edições pontuais.
16. FAQ
Subi um arquivo e diz que está vazio
Quase sempre é .numbers ou XLSX exportado com encoding errado. Exporte como CSV UTF-8 e tente de novo.
A LR salva por outro usuário não aparece
Confirme empresa + mês na topbar; recarregue a página. Toda LR salva é visível para qualquer usuário autenticado.
Posso apagar LR de outra pessoa?
Não — apenas o autor original (ou um admin via banco) pode apagar.
O dashboard está vazio
Ou não há LR gerada/salva para a combinação selecionada, ou você está em Modo Geral sem dados naquele mês.
Como funciona a detecção de empresa?
O sistema lê o cabeçalho do template + valores no campo EMPRESA das linhas. Em caso de ambiguidade, use Multi-empresa para forçar.
