Plataforma de Inteligência Tributária & Empresarial · Documento de Arquitetura

Tributário 360 — Plataforma de Inteligência Tributária e Empresarial

Arquitetura & Roadmap de Consolidação

Domínio de referência: painel.tributario360.com.br Atualizado: 2026-06-18 · v4 (ecossistema + multi-tenant + integrações certificadas)

Documento de referência viva. Define onde estamos, a arquitetura-alvo (multiusuário, multi-tenant e segura) e o roadmap de consolidação.

O painel é a camada de inteligência de dados que se integra aos módulos já existentes do ecossistema — Business Plan (bp.tributario360.com.br) e Diagnóstico Estratégico (diagnostico.tributario360.com.br) — adotando a mesma identidade visual e o mesmo padrão de qualidade.


1. Onde estamos — Fase 0 concluída ✅

Decisões fechadas: domínio único painel.tributario360.com.br; dados no CT105 (isolado); aplicação na VM103; entrada/TLS no Caddy CT101.


2. Ecossistema Tributário 360 — sistemas de referência

Análise feita com leitura do código e do schema na VM103 (2026-06-18). Os dois sistemas e o painel formam um ecossistema único — e o Diagnóstico já prevê a nossa base como sua "Fase B".

Business Plan — bp.tributario360.com.br

Diagnóstico Estratégico — diagnostico.tributario360.com.br

🔌 Integração concreta — o painel é a "Fase B" do Diagnóstico

O conector rfb_local (texto do próprio sistema): "a base completa de CNPJs da Receita (~50GB) baixada no nosso servidor, consultada por SQL local… contagem exata de concorrentes por CNAE+município e grafo de sócios — É a Fase B." Essa Fase B é exatamente o que construímos no CT105.

Conector do Diagnóstico Fornecido pelo nosso ativo
rfb_local Base CNPJ (CT105) — concorrentes por CNAE+município, grafo de sócios
cnpj_brasilapi Substituível pela nossa base (sem limite de requisições)
ibge_municipio crossref.municipio_ibge
caged crossref.emprego_rais
ibpt carga tributária por CNAE (a popular em crossref)
bcb_sgs indicadores macro (contexto)

1ª integração do painel: expor a base via API para o rfb_local e para a validation (fatos oficiais por CNPJ). Liga Diagnóstico ↔ painel de imediato.

Identidade visual compartilhada (já aplicada)

navy #101C30/#0A1322, dourado #CA9A43 (+#F1D286/#A67426), Montserrat+Inter. Cores por categoria do diagnóstico confirmadas no código.

Autenticação — realidade e alvo

Três cadastros hoje: bp (SQLite), diagnóstico (app_user em Postgres), painel (app em Postgres). Alvo: identidade unificada (SSO) sobre o schema app multi-tenant, migrando os cadastros existentes.

Acesso de análise obtido (2026-06-18): leitura de código + schema na VM103. Os sistemas estão na própria VM103 (não em servidor externo); o Diagnóstico já roda em PostgreSQL local, o que facilita a integração.


3. Princípios de produto (guia de todas as decisões)

  1. Multi-tenant desde o núcleo — cada cliente (escritório contábil, advocacia, empresa) é um tenant isolado; usuários pertencem a um tenant.
  2. Acesso por modalidade e contrato — liberação de módulos/dados conforme o plano contratado (contador, advogado, empresa, consultor).
  3. Segurança em camadas — dado público, dado privado do tenant e dado sensível obtido via certificado digital têm isolamentos distintos.
  4. UI/UX de primeira — bonito, elegante, moderno, consistente com o Diagnóstico/BP, acessível e rápido. (Detalhe na seção 10.)
  5. Modular — cada consulta/integração é um módulo (menu/aba) ativável por plano, sem reescrever o núcleo.

4. Arquitetura-alvo

                        Internet (contadores, advogados, empresas)
                                     │  HTTPS
                ┌────────────────────▼─────────────────────┐
                │  Caddy (CT101) — TLS, WAF leve, rate-limit │
                │        painel.tributario360.com.br         │
                └───────┬───────────────────────────┬────────┘
                        │ /                          │ /api
              ┌─────────▼─────────┐        ┌─────────▼──────────┐
              │ Frontend (Next.js)│───────▶│  API (FastAPI)     │  VM103
              │ multi-tenant SPA  │  JWT   │  tenant-aware (RLS) │
              └───────────────────┘        └───┬──────────┬─────┘
                                               │          │
                       ┌───────────────────────┘          │
                       │                                   │
            ┌──────────▼───────────┐          ┌────────────▼─────────────┐
            │ PostgreSQL (CT105)   │          │ Workers de Integração     │
            │ ├ cnpj/api (PÚBLICO) │          │ (Celery) — usam certificado│
            │ ├ app (tenants,users)│          │ em ambiente isolado        │
            │ └ tenant data (RLS)  │          └───────────┬───────────────┘
            └──────────┬───────────┘                      │ certificado/procuração
                       │                       ┌──────────▼───────────────┐
            ┌──────────▼───────────┐           │ APIs externas (gov):      │
            │ Redis (cache/sessão) │           │ e-CAC/RFB, SERPRO, SEFAZ, │
            └──────────────────────┘           │ NF-e, Simples/DAS, CNDs…  │
            ┌──────────────────────┐           └───────────────────────────┘
            │ Cofre de Certificados│  A1 cifrado (KMS/Vault) — chave nunca exposta
            └──────────────────────┘

5. Multi-tenancy & multiusuário

Modelo

Isolamento de dados (3 camadas)

Camada Conteúdo Estratégia de isolamento
Pública CNPJ/Receita (schemas cnpj/api) Compartilhada, somente leitura p/ todos os tenants
Privada do tenant Carteira, diagnósticos, anotações, configurações Row-Level Security (RLS) por tenant_id em tabelas no schema app
Sensível (certificada) Dados fiscais obtidos via certificado/procuração Tabelas tenant-scoped com RLS + criptografia em repouso + auditoria

RLS no PostgreSQL: a API autentica o usuário, extrai tenant_id do JWT e executa SET app.current_tenant = <id>; policies garantem que cada query só enxergue as linhas do próprio tenant — isolamento no banco, não só na app.

Conexão & contexto


6. Modalidades, planos e contratos


7. Módulos & navegação (menus/abas)

Cada consulta/instância é um módulo no menu lateral, exibido conforme o plano do tenant:


8. Instâncias de integração via certificação / contrato

Integrações com fontes que exigem certificado digital (e-CNPJ/e-CPF A1/A3), procuração eletrônica e-CAC e/ou contrato/credencial. Cada uma é uma instância que o tenant ativa, sob autorização formal do cliente.

Instância Fonte Habilitação
Situação Fiscal / Pendências RFB e-CAC Procuração e-CAC + certificado
DCTFWeb / DARF / Parcelamentos RFB e-CAC Procuração e-CAC
Simples Nacional / PGDAS / DAS / DEFIS RFB/SN Procuração e-CAC
NF-e (distribuição de DF-e) SEFAZ Certificado e-CNPJ
Cadastro ICMS / SPED SEFAZ estaduais Certificado
Consulta CNPJ Integra / Datavalid SERPRO Contrato + credencial (+ cert.)
CND Federal · CRF/FGTS · CNDT RFB/Caixa/TST Certificado / consulta autenticada
eSocial / EFD-Reinf Gov Certificado
NFS-e municipais Prefeituras Certificado / credencial

Padrão da instância: o tenant (1) aceita o contrato/termo que autoriza o acesso, (2) fornece o certificado A1 (upload seguro) ou configura A3 via agente local, e/ou (3) concede procuração e-CAC. A partir daí, workers assíncronos consultam a fonte e gravam o resultado na camada sensível do tenant.


9. Segurança de dados e de certificados

Tratar certificado digital de cliente é responsabilidade alta (técnica e jurídica). Princípios inegociáveis:


10. Design system & UI/UX (prioridade)

Padrão visual alinhado ao Diagnóstico/BP (consistência de marca):


11. Banco de dados

A API consome o schema api (público) e o schema app (tenant, com RLS). Núcleo público já carregado: empresas, estabelecimentos, socios, simples_nacional + referência. Campos priorizados: CNPJ, razão/fantasia, CNAE (+desc/setor), porte, natureza, situação, UF/município/região, Simples/MEI, capital, sócios (CPF mascarado/restrito).

Novos schemas (Fase 1+): - apptenants, users, roles, plans, contracts, audit_log, client_portfolio (carteira de CNPJs), certificates (metadados; binário no cofre), integration_jobs, fiscal_data_* (camada sensível, RLS). - crossref — IBGE/RAIS/IDH/PIB + cadastro_privado + empresa_rag.

Performance: agregações materializadas, índices btree + GIN trigram, PgBouncer, Redis; particionamento por UF / read-replica quando escalar.


12. Backend — API (FastAPI / Python 3.12, VM103)


13. Frontend — painel (Next.js + React + TS, VM103)

SPA multi-tenant, menu lateral por módulo (seção 7), tema do design system (seção 10), ECharts para gráficos, TanStack Table para grandes volumes, i18n pt-BR. Build servido na VM103 atrás do Caddy.


14. IA / RAG (roadmap)

pgvector → embeddings do texto-base por empresa → busca semântica + text-to-SQL (/api/ia/consulta com Claude, citando números reais) → relatórios inteligentes cruzando CNPJ + IBGE/RAIS/IDH + diagnóstico.


15. Infraestrutura (Proxmox)


16. Roadmap de consolidação

Fase Entrega Status
0 — Fundação de dados Base CNPJ + ETL + views/agregações + domínio ✅ Concluída
1 — Núcleo multi-tenant + API schema app (tenants/users/RBAC/RLS) + FastAPI + auth + /api 🔜 Próxima
2 — Painel: Visão Geral + Consulta Login multi-tenant + KPIs + mapa + busca/filtros (design system)
3 — Carteira & Ficha & exportação Carteira de CNPJs + ficha + sócios + export por plano
4 — Cofre + 1ª integração certificada Cofre de certificados + Situação Fiscal (e-CAC)
5 — Diagnóstico & Business Plan Integração dos módulos existentes ao painel
6 — Mercado & cruzamentos IBGE/RAIS/IDH + indicadores estratégicos
7 — IA/RAG pgvector + busca semântica + text-to-SQL + relatórios
8 — Liberação comercial Planos/contratos self-service + cotas + faturamento

Próximos passos imediatos (Fase 1)

  1. Criar o schema app (tenants, users, roles, plans, contracts, audit) com RLS por tenant_id.
  2. Provisionar a stack na VM103 (FastAPI + PgBouncer + Redis) e o usuário de banco read-only.
  3. Autenticação JWT multi-tenant + RBAC; publicar /api no Caddy → VM103.
  4. Definir o modelo de planos/modalidades (contador/advogado/empresa) e o catálogo inicial de instâncias de integração.

Integração prioritária (já mapeada): implementar o conector rfb_local do Diagnóstico apontando para a base CNPJ (CT105) — concorrentes por CNAE+município e grafo de sócios — e alimentar a validation com fatos oficiais por CNPJ. (Acesso de código/schema à VM103 já obtido.)