# π€ 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 */}
```