# πŸ€– ReferΓͺncia RΓ‘pida para Agentes - ArcΓ‘dia Suite > Guia de referΓͺncia para desenvolvimento autΓ΄nomo no projeto ArcΓ‘dia Suite --- ## πŸ“ DocumentaΓ§Γ£o TΓ©cnica por Componente ### NavegaΓ§Γ£o (Navbar) - **EspecificaΓ§Γ£o Completa:** [`docs/SPEC_NAVBAR.md`](docs/SPEC_NAVBAR.md) - **Arquivo Fonte:** `client/src/components/Browser/BrowserFrame.tsx` - **Hook de Tracking:** `client/src/hooks/use-navigation-tracking.ts` - **Error Boundary:** `client/src/components/ErrorBoundary.tsx` (tratamento de erros lazy loading) ### Banco de Dados (Schema) - **Arquivo Principal:** `shared/schema.ts` (7.000+ linhas) - **Tabelas Principais:** - `users`, `profiles`, `roles` - AutenticaΓ§Γ£o e RBAC - `tenants`, `tenantUsers` - Multi-tenancy - `workspacePages`, `pageBlocks` - Produtividade (estilo Notion) - `conversations`, `messages` - Chat/Agente - `whatsappSessions`, `whatsappMessages` - WhatsApp - `crmPartners`, `crmContracts` - CRM - `fiscalNcms`, `fiscalGruposTributacao` - Fiscal - `retailStores`, `posSales`, `mobileDevices` - Retail - `manusRuns`, `manusSteps` - Agente Manus - `biDatasets`, `biCharts`, `biDashboards` - BI ### Backend (API Routes) - **Registro de Rotas:** `server/routes.ts` - **AutenticaΓ§Γ£o:** `server/auth.ts` - **Agente Manus:** `server/manus/service.ts` + `server/manus/tools.ts` - **WhatsApp:** `server/whatsapp/routes.ts` + `server/whatsapp/service.ts` - **CRM:** `server/crm/routes.ts` - **Fiscal:** `server/fisco/routes.ts` - **Retail:** `server/retail/routes.ts` - **Blackboard (Agentes):** `server/blackboard/routes.ts` ### Frontend (PΓ‘ginas) - **Router:** `client/src/App.tsx` (inclui ErrorBoundary + Suspense) - **Cockpit (Home):** `client/src/pages/Cockpit.tsx` - **Agent:** `client/src/pages/Agent.tsx` - **DevCenter:** `client/src/pages/DevCenter.tsx` - **Crm:** `client/src/pages/Crm.tsx` - **Fisco:** `client/src/pages/Fisco.tsx` - **Retail:** `client/src/pages/ArcadiaRetail.tsx` - **WhatsApp:** `client/src/pages/WhatsApp.tsx` - **ErrorBoundary:** `client/src/components/ErrorBoundary.tsx` --- ## πŸ—οΈ Arquitetura do Sistema ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CAMADA DE APRESENTAÇÃO β”‚ β”‚ React 18 + TypeScript + Tailwind CSS + shadcn/ui β”‚ β”‚ 66 pΓ‘ginas / Interface tipo browser com abas β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CAMADA DE ORQUESTRAÇÃO β”‚ β”‚ Express.js + Socket.IO + Manus Agent β”‚ β”‚ API REST + WebSocket em tempo real β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CAMADA DE INTELIGÊNCIA β”‚ β”‚ FastAPI (ContΓ‘bil 8003, BI 8004, AutomaΓ§Γ£o 8005) β”‚ β”‚ OpenAI GPT-4o + LiteLLM Gateway + Ollama β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CAMADA DE DADOS β”‚ β”‚ PostgreSQL 16 + Drizzle ORM + pgvector β”‚ β”‚ Session Store + Multi-tenant β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ› οΈ Stack TecnolΓ³gico | Camada | Tecnologia | |--------|------------| | **Frontend** | React 18, TypeScript, Tailwind CSS, shadcn/ui | | **Backend** | Express.js, Socket.IO, Passport.js | | **Banco** | PostgreSQL 16, Drizzle ORM, pgvector | | **Python** | FastAPI (microserviΓ§os nas portas 8001-8005) | | **IA** | OpenAI GPT-4o, LiteLLM, Ollama | | **Deploy** | Docker Compose, Coolify, PM2 | --- ## πŸ”§ Comandos Úteis ```bash # Desenvolvimento npm run dev # Inicia servidor de desenvolvimento npm run dev:client # Apenas frontend (porta 5000) # Banco de dados npm run db:push # Aplica migrations Drizzle npm run db:apply-rls # Aplica polΓ­ticas RLS # Build npm run build # Build para produΓ§Γ£o npm run start # Inicia em produΓ§Γ£o # Docker docker compose up -d # Sobe todos os serviΓ§os docker compose --profile ai up # Sobe com IA (Ollama + LiteLLM) ``` --- ## πŸ“‹ ConvenΓ§Γ΅es de CΓ³digo ### Nomenclatura - **Componentes:** PascalCase (ex: `BrowserFrame.tsx`) - **Hooks:** camelCase com prefixo `use` (ex: `useAuth.tsx`) - **UtilitΓ‘rios:** camelCase (ex: `navigation-tracking.ts`) - **Rotas API:** kebab-case (ex: `/api/whatsapp/connect`) ### Estrutura de Pastas ``` client/src/ components/ # Componentes reutilizΓ‘veis pages/ # PΓ‘ginas da aplicaΓ§Γ£o hooks/ # Custom hooks lib/ # UtilitΓ‘rios e configuraΓ§Γ΅es server/ [modulo]/ # Um diretΓ³rio por mΓ³dulo routes.ts # Rotas da API service.ts # LΓ³gica de negΓ³cio storage.ts # Acesso a dados ``` --- ## πŸ§ͺ Test IDs Sempre adicione `data-testid` em elementos interativos: ```tsx ``` --- ## πŸ“š DocumentaΓ§Γ£o Adicional - **DocumentaΓ§Γ£o TΓ©cnica Completa:** [`DOCUMENTATION.md`](DOCUMENTATION.md) - **Mapa do Sistema:** [`MAPA_SISTEMA_ARCADIA.md`](MAPA_SISTEMA_ARCADIA.md) - **Contexto para Claude:** [`CLAUDE.md`](CLAUDE.md) - **README:** [`README.md`](README.md) --- ## πŸ†˜ Precisa de Ajuda? 1. Consulte a especificaΓ§Γ£o tΓ©cnica especΓ­fica em `docs/` 2. Verifique exemplos similares no cΓ³digo existente 3. Siga os padrΓ΅es jΓ‘ estabelecidos no projeto --- *Última atualizaΓ§Γ£o: 2026-04-08* --- ## πŸ› Tratamento de Erros - Lazy Loading ### Problema Resolvido: Loading Infinito na NavegaΓ§Γ£o **Sintoma:** Ao clicar em itens da navbar, se a pΓ‘gina tivesse erro (import quebrado, sintaxe invΓ‘lida), o loading ficava infinito. **Causa:** `React.lazy()` falha silenciosamente e `Suspense` nΓ£o tem como capturar o erro. **SoluΓ§Γ£o:** 1. **ErrorBoundary** (`client/src/components/ErrorBoundary.tsx`): - Captura erros de renderizaΓ§Γ£o, incluindo lazy load - Mostra UI de fallback com botΓ£o de retry 2. **LoadingFallback com Timeout** (`client/src/App.tsx`): - 3s: mensagem "Isso estΓ‘ demorando..." - 10s: alerta amarelo com botΓ£o recarregar 3. **IntegraΓ§Γ£o:** ```tsx }> {/* rotas */} ```