# Requisitos Técnicos - Arcádia Suite ## Documento de Arquitetura e Especificações Técnicas ### Fevereiro 2026 --- ## 1. VISÃO GERAL DO SISTEMA **Nome:** Arcádia Suite - Sistema Operacional Empresarial (SOE) **Tipo:** Plataforma ERP/SaaS Multi-Tenant com Inteligência Artificial **Arquitetura:** Monolito Modular com Microserviços Python auxiliares **Licença:** Proprietário - Arcádia Business SIG --- ## 2. STACK TECNOLÓGICO ### 2.1 Linguagens de Programação | Linguagem | Versão | Uso | |-----------|--------|-----| | TypeScript | 5.6.3 | Linguagem principal (Frontend + Backend) | | JavaScript (ES Modules) | ES2022 | Runtime Node.js | | Python | 3.11.14 | Microserviços de IA, BI, Fiscal, Contábil | | SQL | PostgreSQL 16 | Queries, migrations, procedures | | HTML5 / CSS3 | - | Marcação e estilos via JSX/Tailwind | ### 2.2 Runtime e Ambiente | Componente | Versão | Descrição | |------------|--------|-----------| | Node.js | 20.20.0 | Runtime principal do servidor | | Python | 3.11.14 | Runtime dos microserviços auxiliares | | npm | 10.x | Gerenciador de pacotes Node.js | | pip | 24.x | Gerenciador de pacotes Python | --- ## 3. FRAMEWORKS E BIBLIOTECAS PRINCIPAIS ### 3.1 Backend (Servidor) | Tecnologia | Versão | Função | |------------|--------|--------| | **Express.js** | 4.21.2 | Framework HTTP principal, API REST | | **Drizzle ORM** | 0.39.3 | ORM para PostgreSQL (type-safe) | | **Drizzle Kit** | 0.31.4 | Ferramenta de migrations do banco | | **Drizzle Zod** | 0.7.1 | Validação de schemas com Zod | | **Socket.IO** | 4.8.3 | Comunicação em tempo real (WebSocket) | | **Passport.js** | 0.7.0 | Autenticação (estratégia local) | | **Express Session** | 1.18.1 | Gerenciamento de sessões | | **Connect PG Simple** | 10.0.0 | Sessões persistidas no PostgreSQL | | **Zod** | 3.25.76 | Validação de dados e schemas | | **OpenAI SDK** | 6.15.0 | Integração com GPT-4o / GPT-4o-mini | | **Multer** | 2.0.2 | Upload de arquivos | | **Nodemailer** | 7.0.12 | Envio de emails (SMTP) | | **Octokit** | 22.0.1 | Integração com GitHub API | | **Baileys** | 7.0.0-rc.9 | WhatsApp Web API (multi-sessão) | | **node-fetch** | 3.3.2 | Requisições HTTP | | **pg** | 8.16.3 | Driver PostgreSQL nativo | | **ws** | 8.18.0 | WebSocket nativo | | **cheerio** | 1.1.2 | Web scraping / parsing HTML | | **pdf-parse** | 2.4.5 | Extração de texto de PDFs | | **xlsx** | 0.18.5 | Leitura/escrita de planilhas Excel | | **docx** | 9.5.1 | Geração de documentos Word | | **jspdf** | 4.0.0 | Geração de documentos PDF | | **papaparse** | 5.5.3 | Parsing de arquivos CSV | | **adm-zip** | 0.5.16 | Compactação/descompactação ZIP | | **qrcode** | 1.5.4 | Geração de QR Codes | | **imap / mailparser** | 0.8.19 / 3.9.1 | Leitura de emails (IMAP) | | **http-proxy-middleware** | 3.0.5 | Proxy reverso para microserviços | | **p-limit / p-retry** | 7.2.0 / 7.1.1 | Controle de concorrência e retry | | **esbuild** | 0.25.0 | Bundler do servidor para produção | | **tsx** | 4.20.5 | Execução de TypeScript em desenvolvimento | ### 3.2 Frontend (Cliente) | Tecnologia | Versão | Função | |------------|--------|--------| | **React** | 19.2.0 | Biblioteca de UI principal | | **React DOM** | 19.2.0 | Renderização DOM | | **Vite** | 7.1.9 | Build tool e dev server | | **Tailwind CSS** | 4.1.14 | Framework de estilos utilitários | | **shadcn/ui (Radix UI)** | Múltiplas | 55 componentes de interface | | **TanStack React Query** | 5.60.5 | Gerenciamento de estado servidor | | **React Hook Form** | 7.66.0 | Gerenciamento de formulários | | **Wouter** | 3.3.5 | Roteamento SPA (leve) | | **Recharts** | 2.15.4 | Gráficos e visualização de dados | | **Framer Motion** | 12.23.24 | Animações e transições | | **Lucide React** | 0.545.0 | Biblioteca de ícones | | **Monaco Editor** | 4.7.0 | Editor de código (IDE integrada) | | **Xterm.js** | 5.3.0 | Terminal integrado | | **XYFlow (React Flow)** | 12.10.0 | Diagramas de fluxo e workflows | | **TipTap** | 3.15.3 | Editor de texto rico (WYSIWYG) | | **Embla Carousel** | 8.6.0 | Carrosséis de conteúdo | | **React Day Picker** | 9.11.1 | Seletor de datas | | **React Resizable Panels** | 2.1.9 | Painéis redimensionáveis | | **Socket.IO Client** | 4.8.3 | WebSocket no cliente | | **cmdk** | 1.1.1 | Command palette (Ctrl+K) | | **Sonner** | 2.0.7 | Notificações toast | | **html2canvas** | 1.4.1 | Captura de tela / screenshots | | **file-saver** | 2.0.5 | Download de arquivos | | **next-themes** | 0.4.6 | Tema claro/escuro | | **Vaul** | 1.1.2 | Drawer mobile | | **input-otp** | 1.4.2 | Input para códigos OTP | ### 3.3 Microserviços Python (FastAPI) | Serviço | Porta | Função | |---------|-------|--------| | **Fiscal (Fisco)** | 8002 | NF-e/NFC-e via nfelib, comunicação SEFAZ | | **Contábil** | 8003 | Serviços contábeis auxiliares | | **People (RH)** | 8004 | Cálculos de folha de pagamento | | **BI Engine** | 8004 | Motor de Business Intelligence, SQL, Pandas | | **Automation Engine** | 8005 | Scheduler cron, event bus, workflows | --- ## 4. BANCO DE DADOS ### 4.1 Especificações | Item | Detalhe | |------|---------| | **SGBD** | PostgreSQL 16 (Neon-backed na nuvem) | | **ORM** | Drizzle ORM (type-safe, schema-first) | | **Migrations** | Drizzle Kit (push strategy) | | **Schema** | Arquivo único: `shared/schema.ts` | | **Total de Tabelas** | 331 tabelas | | **Linhas de Schema** | 7.146 linhas | | **Sessões** | Persistidas em PostgreSQL (connect-pg-simple) | ### 4.2 Domínios de Dados (Principais) | Domínio | Prefixo | Tabelas | Descrição | |---------|---------|---------|-----------| | Retail | `retail_*` | 24 | Lojas, vendedores, estoque, vendas, comissões | | CRM | `crm_*` | 23 | Leads, oportunidades, propostas, contratos | | Fiscal | `fiscal_*` | 11 | NCMs, CFOPs, notas fiscais, certificados | | Financeiro | `fin_*` | 7 | Contas bancárias, a pagar, a receber | | Contábil | `contabil_*` | 7 | Plano de contas, lançamentos, saldos | | People (RH) | `people_*` | 13 | Funcionários, folha, férias, ponto | | Qualidade | `quality_*` | 7 | Amostras, laudos, RNC, documentos | | Projetos | `pc_*` | 12 | Projetos, tarefas, membros, atividades | | XOS Governança | `xos_*` | 22 | Agents, pipelines, auditoria, políticas | | Comunicação | `comm_*` | 8 | Contatos, threads, mensagens unificadas | | WhatsApp | `whatsapp_*` | 5 | Sessões, mensagens, contatos, tickets | | Comunidades | `community_*` | 4 | Grupos, canais, membros, mensagens | | Valuation | `valuation_*` | 14 | Avaliação empresarial, cap table | | BI | `bi_*` | 4 | Dashboards, gráficos, datasets | | Automações | `automation_*` | 3 | Workflows, ações, logs | | Knowledge | `graph_*` | 2 | Grafo semântico (nós e arestas) | | Marketplace | `marketplace_*` | 3 | Módulos, assinaturas, uso | | DocTypes (FA) | `arc_*` / `doctype_*` | 9 | Framework de documentos customizados | | Multi-Tenant | `tenants` | 1 | Tenants com features JSONB | --- ## 5. ARQUITETURA DO SISTEMA ### 5.1 Diagrama de Camadas ``` ┌─────────────────────────────────────────────────────────────────────┐ │ CAMADA DE APRESENTAÇÃO │ │ │ │ React 19 + TypeScript + Tailwind CSS 4 + shadcn/ui │ │ 55 componentes UI + 67 páginas │ │ SPA com roteamento Wouter │ │ 89.858 linhas de código │ │ │ │ Porta: 5000 (dev via Vite HMR) │ └────────────────────────────┬────────────────────────────────────────┘ │ HTTP/WebSocket ┌────────────────────────────▼────────────────────────────────────────┐ │ CAMADA DE ORQUESTRAÇÃO │ │ │ │ Express.js 4 + Socket.IO 4 + Passport.js │ │ 45 arquivos de rotas │ ~1.386 endpoints REST │ │ 153 arquivos TypeScript servidor │ │ 58.393 linhas de código │ │ │ │ Porta: 5000 (API + WebSocket + Static) │ └──────┬─────────┬──────────┬──────────┬─────────┬───────────────────┘ │ │ │ │ │ ┌──────▼───┐ ┌───▼────┐ ┌──▼───┐ ┌────▼──┐ ┌───▼─────┐ │ Fisco │ │Contábil│ │People│ │ BI │ │Automação│ │ FastAPI │ │FastAPI │ │FastAPI│ │FastAPI│ │FastAPI │ │ :8002 │ │ :8003 │ │:8004 │ │:8004 │ │ :8005 │ └──────────┘ └────────┘ └──────┘ └───────┘ └─────────┘ │ │ │ │ │ ┌──────▼─────────▼──────────▼──────────▼─────────▼───────────────────┐ │ CAMADA DE DADOS │ │ │ │ PostgreSQL 16 (Neon) │ 331 tabelas │ Drizzle ORM │ │ Schema: 7.146 linhas │ Multi-Tenant com JSONB features │ │ Sessões persistidas em PostgreSQL │ │ │ └─────────────────────────────────────────────────────────────────────┘ ``` ### 5.2 Padrões Arquiteturais | Padrão | Implementação | |--------|--------------| | **Monolito Modular** | Servidor Node.js único com módulos isolados por domínio | | **Multi-Tenant** | Coluna `tenantId` em todas as tabelas, tenant scoping obrigatório | | **Schema-First** | Schema Drizzle como fonte de verdade para tipos e validação | | **API RESTful** | Endpoints organizados por domínio (`/api/{modulo}/*`) | | **Proxy Pattern** | Microserviços Python acessados via proxy reverso Express | | **Event-Driven** | Socket.IO para comunicação real-time (WhatsApp, chat, notificações) | | **Adapter Pattern** | Motors (Plus, ERPNext, Fisco) selecionados por adaptador | | **Singleton** | ManusIntelligence como cérebro central de IA único | | **Agent Loop** | Thought → Action → Observation para agentes autônomos | --- ## 6. INTEGRAÇÕES EXTERNAS ### 6.1 APIs e Serviços | Integração | Protocolo | Uso | |------------|-----------|-----| | **OpenAI API** | REST (HTTPS) | GPT-4o para agentes IA, GPT-4o-mini para auto-replies | | **WhatsApp (Baileys)** | WebSocket | Multi-sessão WhatsApp, mensagens, tickets | | **GitHub API (Octokit)** | REST (HTTPS) | Commits automáticos, PRs, análise de código | | **ERPNext** | REST (HTTPS) | Clientes, produtos, ordens de venda, financeiro | | **Arcádia Plus (Laravel)** | REST (HTTPS) | ERP completo, NF-e/NFC-e, POS, fiscal | | **SEFAZ** | SOAP/XML | Emissão e consulta de notas fiscais eletrônicas | | **SMTP/IMAP** | Email | Envio (Nodemailer) e recebimento (IMAP) de emails | | **Portais Bancários** | Planejado | Conciliação bancária automatizada | ### 6.2 Protocolos de Interoperabilidade | Protocolo | Endpoint | Descrição | |-----------|----------|-----------| | **MCP** (Model Context Protocol) | `/api/mcp/v1/` | Exposição de ferramentas para agentes externos | | **A2A** (Agent to Agent) | `/api/a2a/v1/` | Comunicação bidirecional entre agentes | | **REST API** | `/api/*` | API principal (~1.386 endpoints) | | **WebSocket** | Socket.IO | Real-time: chat, WhatsApp, notificações | --- ## 7. SEGURANÇA | Aspecto | Implementação | |---------|--------------| | **Autenticação** | Passport.js (estratégia local) com sessões PostgreSQL | | **Autorização** | Multi-tenant: tenant scoping obrigatório (403 se ausente) | | **Sessões** | Express Session + connect-pg-simple (persistidas no banco) | | **Governança** | XOS Governance Layer com 5 políticas de segurança | | **Auditoria** | Audit trail imutável (`xos_audit_trail`) | | **Políticas** | Proteção de arquivos críticos, bloqueio de comandos destrutivos, aprovação humana para produção | | **Secrets** | Gerenciados via variáveis de ambiente (nunca expostos em código) | | **API Keys** | Header `X-API-Key` para protocolos MCP/A2A | --- ## 8. INFRAESTRUTURA E DEPLOY ### 8.1 Ambiente de Desenvolvimento | Item | Detalhe | |------|---------| | **Plataforma** | Replit (NixOS) | | **Dev Server** | Vite 7 com HMR (Hot Module Replacement) | | **Backend Dev** | tsx (execução direta de TypeScript) | | **Porta** | 5000 (unificada: frontend + API + WebSocket) | ### 8.2 Ambiente de Produção (VPS) | Item | Detalhe | |------|---------| | **Containerização** | Docker + Docker Compose | | **Base Image** | `node:20-alpine` (multi-stage build) | | **Build** | Vite (frontend) + esbuild (backend → `dist/index.cjs`) | | **Banco** | PostgreSQL 16 Alpine (container separado) | | **Volumes** | `pgdata` (banco) + `uploads` (arquivos) | | **Healthcheck** | HTTP GET `/` a cada 30s | | **Porta** | 5000 | ### 8.3 Variáveis de Ambiente | Variável | Obrigatória | Descrição | |----------|-------------|-----------| | `DATABASE_URL` | Sim | String de conexão PostgreSQL | | `SESSION_SECRET` | Sim | Chave secreta para sessões | | `SSO_SECRET` | Sim | Chave para SSO multi-tenant | | `PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE` | Sim | Credenciais PostgreSQL | | `OPENAI_API_KEY` | Não | API key OpenAI (funcionalidades IA) | | `ERPNEXT_URL/API_KEY/API_SECRET` | Não | Integração ERPNext | | `GITHUB_TOKEN` | Não | Integração GitHub | | `MANAGER_PASSWORD` | Não | Senha do gerente (Retail) | | `PLUS_URL/PLUS_API_TOKEN` | Não | Integração Arcádia Plus | | `FISCO_PYTHON_URL` | Não | URL do serviço fiscal Python | | `CONTABIL_PYTHON_URL` | Não | URL do serviço contábil Python | --- ## 9. MÉTRICAS DO PROJETO ### 9.1 Tamanho do Código | Métrica | Valor | |---------|-------| | **Linhas de código (Frontend)** | 89.858 | | **Linhas de código (Backend)** | 58.393 | | **Linhas de Schema (Banco)** | 7.146 | | **Total estimado** | ~155.000+ linhas | | **Arquivos TypeScript (Server)** | 153 | | **Arquivos TSX (Client)** | 154 | | **Arquivos Python** | 6 | | **Total de arquivos de código** | ~313 | ### 9.2 Complexidade | Métrica | Valor | |---------|-------| | **Tabelas no banco de dados** | 331 | | **Endpoints de API** | ~1.386 | | **Páginas/Telas** | 67 | | **Componentes UI (shadcn)** | 55 | | **Arquivos de rotas (server)** | 45 | | **Módulos do servidor** | 40+ domínios | | **Dependências (produção)** | 108 pacotes | | **Dependências (desenvolvimento)** | 22 pacotes | --- ## 10. REQUISITOS MÍNIMOS DO SERVIDOR (VPS) ### 10.1 Hardware Recomendado | Recurso | Mínimo | Recomendado | |---------|--------|-------------| | **CPU** | 2 vCPU | 4 vCPU | | **RAM** | 4 GB | 8 GB | | **Disco** | 40 GB SSD | 80 GB SSD | | **Banda** | 100 Mbps | 1 Gbps | | **SO** | Ubuntu 22.04+ / Debian 12+ | Ubuntu 24.04 LTS | ### 10.2 Software Necessário | Software | Versão Mínima | |----------|--------------| | Docker | 24.0+ | | Docker Compose | 2.20+ | | Git | 2.40+ | | (Opcional) Nginx | 1.24+ (proxy reverso com SSL) | | (Opcional) Certbot | 2.0+ (certificados Let's Encrypt) | ### 10.3 Configuração Nginx (Proxy Reverso com SSL) ```nginx server { listen 80; server_name seu-dominio.com.br; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name seu-dominio.com.br; ssl_certificate /etc/letsencrypt/live/seu-dominio.com.br/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/seu-dominio.com.br/privkey.pem; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` --- ## 11. ESTRUTURA DE DIRETÓRIOS ``` arcadia-suite/ ├── client/ # Frontend React │ ├── src/ │ │ ├── pages/ # 67 páginas da aplicação │ │ ├── components/ │ │ │ ├── ui/ # 55 componentes shadcn/ui │ │ │ └── *.tsx # Componentes de negócio │ │ ├── hooks/ # Custom hooks React │ │ ├── contexts/ # Context providers │ │ ├── lib/ # Utilitários │ │ ├── modules/ # Módulos dinâmicos │ │ ├── App.tsx # Roteamento principal │ │ └── main.tsx # Entry point │ └── index.html # HTML base │ ├── server/ # Backend Node.js │ ├── admin/ # Administração │ ├── retail/ # Módulo Retail (PDV) │ ├── crm/ # CRM │ ├── financeiro/ # Financeiro │ ├── contabil/ # Contabilidade │ ├── fisco/ # Fiscal │ ├── people/ # RH / Pessoas │ ├── quality/ # Qualidade │ ├── erp/ # SOE (Sistema Operacional) │ ├── bi/ # Business Intelligence │ ├── whatsapp/ # WhatsApp multi-sessão │ ├── chat/ # Chat interno │ ├── manus/ # Agente IA central │ ├── xos/ # Governança e Dev Center │ ├── autonomous/ # Agentes autônomos (6 agentes) │ ├── governance/ # Políticas e auditoria │ ├── protocols/ # MCP e A2A │ ├── python/ # 6 microserviços FastAPI │ ├── modules/ # Módulos dinâmicos │ ├── routes.ts # Registro central de rotas │ ├── storage.ts # Interface de armazenamento │ └── index.ts # Entry point do servidor │ ├── shared/ # Código compartilhado │ ├── schema.ts # Schema Drizzle (331 tabelas) │ └── schemas/ # Schemas de módulos dinâmicos │ ├── db/ # Configuração do banco ├── migrations/ # Arquivos de migração ├── script/ # Scripts de build │ ├── Dockerfile # Build de produção ├── docker-compose.yml # Orquestração de containers ├── deploy.sh # Script de deploy VPS ├── .env.example # Template de variáveis ├── package.json # Dependências Node.js ├── tsconfig.json # Configuração TypeScript ├── vite.config.ts # Configuração Vite ├── drizzle.config.ts # Configuração Drizzle └── postcss.config.js # Configuração PostCSS ``` --- ## 12. FLUXO DE BUILD E DEPLOY ``` Desenvolvimento (Replit) │ ├── npm run dev → tsx server/index.ts (TypeScript direto) │ Vite HMR para frontend │ ├── npm run build → script/build.ts │ ├── Vite build → client/dist/ (frontend estático) │ └── esbuild bundle → dist/index.cjs (servidor minificado) │ └── npm run start → node dist/index.cjs (produção) Deploy (VPS Docker) │ ├── docker compose build → Multi-stage Dockerfile │ ├── Stage 1 (builder) → npm install + npm run build │ └── Stage 2 (runner) → Copia dist/ + node_modules │ ├── docker compose up -d → Inicia PostgreSQL + App │ └── npx drizzle-kit push → Aplica schema no banco ```