Arcádia CRM — Mapa Completo do Sistema de Relacionamento
Mapa da arquitetura CRM nativa da Arcádia Suite: módulos, tabelas,
APIs, comunicação unificada (WhatsApp/Email), motor de comissões,
integração Frappe/ERPNext e frontend.
Atualizado em: Março 2026
1. Visão Geral
O CRM da Arcádia Suite é 100% nativo — construído internamente em Node.js + PostgreSQL com Drizzle ORM. Ele opera em três camadas que se complementam, unificadas por um Motor de Comunicação e alimentadas por IA (Manus/GPT-4o):
┌─────────────────────────────────────────────────────────────────────┐
│ CAMADA DE EXPERIÊNCIA │
│ │
│ ┌────────────────────────┐ ┌───────────────────────┐ │
│ │ Arcádia CRM (Crm.tsx) │ │ XOS CRM (XosCrm.tsx) │ │
│ │ 2.700 linhas │ │ 752 linhas │ │
│ │ 12 abas │ │ Kanban visual │ │
│ │ Gestão completa │ │ Deals + Pipeline │ │
│ └────────────┬───────────┘ └───────────┬───────────┘ │
│ │ │ │
│ └──────────┬────────────────┘ │
│ │ │
│ ┌───────────────────────▼───────────────────────────────────┐ │
│ │ WhatsApp.tsx — Interface de Atendimento │ │
│ │ Multi-sessão, tickets, IA auto-reply │ │
│ └───────────────────────────────────────────────────────────┘ │
└──────────────────────────┬───────────────────────────────────────────┘
│
┌──────────────────────────▼───────────────────────────────────────────┐
│ CAMADA DE ORQUESTRAÇÃO │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Routes │ │ Storage │ │ Comm. │ │Commission│ │ WA │ │
│ │ (1.592L) │ │ (708L) │ │ (289L) │ │ Engine │ │ Bridge │ │
│ │ │ │ │ │ │ │ (418L) │ │ (126L) │ │
│ │ 90+ │ │CrmStorage│ │ Connect/ │ │ Revenue │ │ Sessão │ │
│ │ endpoints│ │ class │ │ Send/ │ │ Schedule │ │ ↔ Canal │ │
│ │ │ │ │ │ Receive │ │ Comissões│ │ Eventos │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Frappe Svc │ │Google Calendar│ │ Knowledge │ │
│ │ ERPNext sync │ │ OAuth + Sync │ │ Graph Feed │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────┬───────────────────────────────────────────┘
│
┌──────────────────────────▼───────────────────────────────────────────┐
│ CAMADA DE DADOS │
│ │
│ PostgreSQL — 30 tabelas CRM (crm_*) + 15 tabelas XOS (xos_*) │
│ + 8 tabelas Communication (comm_*) │
│ │
│ Drizzle ORM — Schema em shared/schema.ts │
└─────────────────────────────────────────────────────────────────────┘
2. Os Três CRMs
2.1 — Arcádia CRM (Principal)
O CRM completo da plataforma. Gerencia todo o ciclo de relacionamento: da captação de leads até contratos e comissões.
┌─────────────────────────────────────────────────────────────┐
│ ARCÁDIA CRM │
│ client/src/pages/Crm.tsx (2.700 linhas) │
│ /api/crm/* (90+ endpoints) │
│ │
│ 12 Abas: │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │Dashboard │ Leads │ Opps │ Produtos │ │
│ ├──────────┼──────────┼──────────┼──────────┤ │
│ │Parceiros │ Clientes │Contratos │Mensagens │ │
│ ├──────────┼──────────┼──────────┼──────────┤ │
│ │Calendário│Integrações│Config │Multitenant│ │
│ └──────────┴──────────┴──────────┴──────────┘ │
│ │
│ Domínios: │
│ • Pipeline de Vendas (Leads → Opps → Propostas → Contratos)│
│ • Parceiros & Certificações │
│ • Produtos & Catálogo │
│ • Comunicação Multicanal (WhatsApp, Email) │
│ • Comissões & Revenue Schedule │
│ • Agenda (Google Calendar) │
│ • Integração Frappe/ERPNext │
│ • Multi-tenant │
└─────────────────────────────────────────────────────────────┘
2.2 — XOS CRM (Kanban/Pipeline)
Visão simplificada e visual focada em gestão de deals com drag & drop.
┌─────────────────────────────────────────────────────────────┐
│ XOS CRM │
│ client/src/pages/XosCrm.tsx (752 linhas) │
│ │
│ Foco: │
│ • Kanban visual de deals │
│ • Pipeline com estágios customizáveis │
│ • Contatos & Empresas │
│ • Conversas & Tickets │
│ • Campanhas & Automações │
│ • Filas de atendimento │
│ │
│ Tabelas próprias: xos_contacts, xos_companies, │
│ xos_pipelines, xos_pipeline_stages, xos_deals, │
│ xos_conversations, xos_messages, xos_tickets, │
│ xos_campaigns, xos_automations, xos_activities, │
│ xos_queues, xos_queue_users, xos_internal_notes, │
│ xos_quick_messages │
└─────────────────────────────────────────────────────────────┘
2.3 — Plus CRM (Legado/PHP)
Módulo CRM dentro do Arcádia Plus (Laravel), focado em anotações e histórico.
┌─────────────────────────────────────────────────────────────┐
│ PLUS CRM (Legado) │
│ plus/app/Http/Controllers/CrmController │
│ │
│ • Anotações de clientes (crm_anotacoes) │
│ • Histórico de interações │
│ • Integrado ao ERP Plus (fiscal, estoque, financeiro) │
│ • Proxy reverso via /plus │
│ • Banco MySQL (separado do PostgreSQL) │
└─────────────────────────────────────────────────────────────┘
3. Ciclo de Vida do Cliente
┌────────┐ ┌────────┐ ┌────────────┐ ┌──────────┐ ┌──────────┐
│ LEAD │───▶│ OPP │───▶│ PROPOSTA │───▶│ CONTRATO │───▶│ CLIENTE │
│ │ │ │ │ │ │ │ │ │
│ Nome │ │ Valor │ │ Itens │ │ Receita │ │ Ativo │
│ Email │ │ Stage │ │ Preços │ │ Parcelas │ │ Suporte │
│ Fone │ │ Prob% │ │ Desconto │ │ Comissão │ │ Upsell │
│ Source │ │ Close │ │ Aprovação │ │ Marcos │ │ │
│ Status │ │ Owner │ │ PDF │ │ Duração │ │ │
└────┬───┘ └────┬───┘ └────────────┘ └──────────┘ └──────────┘
│ │
│ convert │ won/lost
│ │
▼ ▼
POST /leads/ POST /opportunities/
:id/convert :id/won
:id/lost
:id/bill
:id/open-project
Fluxo detalhado:
| Etapa |
Ação |
Endpoint |
Resultado |
| 1 |
Captação |
POST /api/crm/leads |
Lead criado (status: new) |
| 2 |
Qualificação |
PATCH /api/crm/leads/:id |
Lead atualizado (status: qualified) |
| 3 |
Conversão |
POST /api/crm/leads/:id/convert |
Cria Opportunity + Client automaticamente |
| 4 |
Negociação |
PATCH /api/crm/opportunities/:id/stage |
Move entre estágios do pipeline |
| 5 |
Proposta |
POST /api/crm/proposals |
Proposta com itens e preços |
| 6 |
Ganho |
POST /api/crm/opportunities/:id/won |
Marca como ganha |
| 7 |
Contrato |
POST /api/crm/contracts |
Contrato com receita e marcos |
| 8 |
Faturamento |
POST /api/crm/opportunities/:id/bill |
Gera faturamento |
| 9 |
Projeto |
POST /api/crm/opportunities/:id/open-project |
Abre projeto no Process Compass |
| 10 |
Perda |
POST /api/crm/opportunities/:id/lost |
Marca como perdida + motivo |
4. Comunicação Multicanal
┌─────────────────────────────────────────────────────────────────────┐
│ SISTEMA DE COMUNICAÇÃO │
│ │
│ ┌───────────┐ ┌────────────────┐ ┌──────────────────┐ │
│ │ WhatsApp │ │ Communication │ │ CRM Threads │ │
│ │ (Baileys) │───▶│ Service │───▶│ & Messages │ │
│ │ │ │ │ │ │ │
│ │ Multi- │ │ connectChannel │ │ crm_channels │ │
│ │ sessão │ │ sendMessage │ │ crm_threads │ │
│ │ QR Code │ │ receiveMessage │ │ crm_messages │ │
│ │ Auto-reply│ │ getOrCreate │ │ crm_quick_msgs │ │
│ │ (GPT-4o) │ │ Thread │ │ │ │
│ └─────┬─────┘ └────────────────┘ └──────────────────┘ │
│ │ │
│ ┌─────▼─────────────────────────────────────┐ │
│ │ WhatsApp Bridge │ │
│ │ │ │
│ │ Evento "message" → handleIncoming │ │
│ │ Evento "connected"→ updateChannelStatus │ │
│ │ Evento "qr" → storeQRCode │ │
│ │ Evento "disconnect"→ markDisconnected │ │
│ │ │ │
│ │ sessionChannelMap: Session ↔ CRM Channel │ │
│ └────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ Motor de Comunicação (:8006) │ │
│ │ │ │
│ │ Unifica: │ │
│ │ • CRM Threads (crm_threads) │ │
│ │ • XOS Conversations (xos_conversations) │ │
│ │ • WhatsApp Tickets (xos_tickets) │ │
│ │ │ │
│ │ Tabelas comm_*: │ │
│ │ comm_contacts, comm_threads, │ │
│ │ comm_messages, comm_channels, │ │
│ │ comm_queues, comm_quick_messages, │ │
│ │ comm_events → Knowledge Graph │ │
│ └────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Fluxo de mensagem WhatsApp:
Cliente envia mensagem no WhatsApp
│
▼
Baileys (whatsappService) recebe
│
▼ emite evento "message"
WhatsApp Bridge captura
│
▼ mapeia session → channelId
CommunicationService.receiveMessage()
│
├──▶ getOrCreateThread() → cria/reutiliza thread
│
├──▶ crmMessages → INSERT (direction: "incoming")
│
├──▶ AI Auto-Reply? (GPT-4o-mini em horário comercial)
│
└──▶ Knowledge Graph → graph_nodes + graph_edges
Canais suportados:
| Canal |
Tecnologia |
Status |
| WhatsApp |
Baileys (multi-device) |
Ativo |
| Email |
SMTP + IMAP |
Planejado |
| SMS |
API (Twilio/etc.) |
Futuro |
| Telegram |
Bot API |
Futuro |
| Chat Interno |
Socket.IO |
Ativo (Comunidades) |
5. Motor de Comissões
┌─────────────────────────────────────────────────────────────┐
│ COMMISSION ENGINE │
│ server/crm/commission-engine.ts (418L) │
│ │
│ ┌── Revenue Schedule ──────────────────────────────────┐ │
│ │ │ │
│ │ generateRevenueSchedule(contractId) │ │
│ │ │ │
│ │ • Mensal: projeta N parcelas (até 24 meses) │ │
│ │ • Anual: projeta N anos (até 10 anos) │ │
│ │ • Calcula datas de vencimento │ │
│ │ • Status: pending → paid → overdue │ │
│ │ │ │
│ │ Contrato R$ 5.000/mês × 12 meses: │ │
│ │ → 12 registros em crm_revenue_schedule │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌── Commission Rules ─────────────────────────────────┐ │
│ │ │ │
│ │ crm_commission_rules │ │
│ │ │ │
│ │ Regras baseadas em: │ │
│ │ • Tipo de receita: recurring / one-time │ │
│ │ • Cenário de venda: direct / partner │ │
│ │ • Mês do contrato (faixas) │ │
│ │ │ │
│ │ Exemplo: │ │
│ │ Meses 1-5 (aquisição): 15% sobre receita │ │
│ │ Meses 6-12 (retenção): 10% sobre receita │ │
│ │ Meses 13+ (maturidade): 5% sobre receita │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌── Cálculo de Comissões ─────────────────────────────┐ │
│ │ │ │
│ │ calculateCommissions(contractId) │ │
│ │ │ │
│ │ Para cada parcela da revenue schedule: │ │
│ │ 1. Identifica o mês do contrato │ │
│ │ 2. Busca regra aplicável (tipo + cenário + faixa) │ │
│ │ 3. Calcula valor = parcela × percentual │ │
│ │ 4. Cria registro em crm_commissions │ │
│ │ │ │
│ │ Status: pending → approved → paid │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
6. Integração Frappe/ERPNext
┌─────────────────────────────────────────────────────────────┐
│ FRAPPE SERVICE │
│ server/crm/frappe-service.ts │
│ │
│ Autenticação: token apiKey:apiSecret │
│ Base URL: configurável por conector │
│ │
│ Sync Bidirecional: │
│ │
│ Arcádia CRM ←──────────→ ERPNext/Frappe │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Entidade Arcádia DocType Frappe │ │
│ │ ─────────────────── ───────────────── │ │
│ │ crm_leads → Lead │ │
│ │ crm_opportunities→ Opportunity │ │
│ │ crm_products → Item │ │
│ │ crm_partners → Supplier (tipo: partner) │ │
│ │ crm_clients → Customer │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ Funcionalidades: │
│ • POST /frappe/connectors → Cria conector │
│ • POST /frappe/connectors/:id/test → Testa conexão │
│ • POST /frappe/connectors/:id/sync → Sincroniza dados │
│ • GET /frappe/connectors/:id/logs → Logs de sync │
│ • CRUD /frappe/connectors/:id/mappings → Mapeamentos │
│ │
│ Tabelas: crm_frappe_connectors, crm_frappe_mappings │
└─────────────────────────────────────────────────────────────┘
7. Google Calendar
┌─────────────────────────────────────────────────────────────┐
│ GOOGLE CALENDAR INTEGRATION │
│ server/crm/google-calendar.ts │
│ │
│ OAuth 2.0 Flow: │
│ GET /api/crm/google/auth → Inicia OAuth │
│ GET /api/crm/google/callback → Recebe token │
│ GET /api/crm/google/status → Status da conexão │
│ POST /api/crm/google/disconnect → Desconecta │
│ POST /api/crm/google/sync → Sincroniza eventos │
│ GET /api/crm/google/events → Lista eventos │
│ POST /api/crm/google/events → Cria evento │
│ │
│ Tabela: crm_google_tokens │
│ Tabela: crm_events (sincronizado) │
└─────────────────────────────────────────────────────────────┘
8. Banco de Dados — Todas as Tabelas
8.1 — Tabelas CRM (crm_*) — 30 tabelas
Entidades Principais
┌──────────────────────────┐ ┌──────────────────────────┐
│ crm_leads │ │ crm_clients │
│ │ │ │
│ id, tenantId, name, │ │ id, tenantId, name, │
│ email, phone, company, │ │ email, phone, company, │
│ source, status (new| │ │ type, address, city, │
│ contacted|qualified| │ │ state, notes, segment, │
│ proposal|won|lost), │ │ isActive, createdAt, │
│ notes, assignedTo, │ │ updatedAt │
│ estimatedValue, │ │ │
│ createdAt, updatedAt │ └──────────────────────────┘
└──────────────────────────┘
┌──────────────────────────┐ ┌──────────────────────────┐
│ crm_opportunities │ │ crm_partners │
│ │ │ │
│ id, tenantId, name, │ │ id, tenantId, companyName,│
│ clientId, value, │ │ contactName, email, phone,│
│ probability, stageId, │ │ type (reseller|referral| │
│ expectedCloseDate, │ │ integrator|consultant), │
│ status (open|won|lost), │ │ status (active|inactive| │
│ lostReason, assignedTo, │ │ suspended), tier (gold| │
│ notes, approvalStatus, │ │ silver|bronze|platinum), │
│ approvedBy, createdAt │ │ commissionRate, region, │
│ │ │ specializations, notes │
└──────────────────────────┘ └──────────────────────────┘
Pipeline e Propostas
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_pipeline_stages │ │ crm_proposals │
│ │ │ │
│ id, tenantId, name, │ │ id, tenantId, opportunityId│
│ order, color, isDefault, │ │ title, description, │
│ probability, createdAt │ │ totalValue, discount, │
│ │ │ validUntil, status (draft| │
│ │ │ sent|approved|rejected), │
│ │ │ approvedBy, notes, │
│ │ │ createdAt, updatedAt │
└───────────────────────────┘ └───────────────────────────┘
┌───────────────────────────┐
│ crm_proposal_items │
│ │
│ id, proposalId, productId, │
│ description, quantity, │
│ unitPrice, discount, │
│ totalPrice, createdAt │
└───────────────────────────┘
Contratos e Financeiro
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_contracts │ │ crm_revenue_schedule │
│ │ │ │
│ id, tenantId, name, │ │ id, contractId, month, │
│ clientId, partnerId, │ │ dueDate, value, status │
│ type (recurring|one_time), │ │ (pending|paid|overdue), │
│ totalValue, monthlyValue, │ │ paidDate, createdAt │
│ startDate, endDate, │ │ │
│ billingCycle (monthly| │ └───────────────────────────┘
│ yearly), status (draft| │
│ active|completed|cancelled)│ ┌───────────────────────────┐
│ autoRenew, notes, │ │ crm_contract_milestones │
│ createdAt, updatedAt │ │ │
└───────────────────────────┘ │ id, contractId, name, │
│ description, dueDate, │
┌───────────────────────────┐ │ status (pending|in_progress│
│ crm_commission_rules │ │ |completed|delayed), │
│ │ │ completedAt, notes │
│ id, tenantId, name, │ └───────────────────────────┘
│ revenueType (recurring| │
│ one_time), saleType │
│ (direct|partner), │
│ percentage, monthFrom, │
│ monthTo, isActive │
└───────────────────────────┘
┌───────────────────────────┐
│ crm_commissions │
│ │
│ id, tenantId, contractId, │
│ partnerId, userId, │
│ revenueScheduleId, month, │
│ baseValue, percentage, │
│ commissionValue, status │
│ (pending|approved|paid), │
│ paidDate, createdAt │
└───────────────────────────┘
Comunicação
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_channels │ │ crm_threads │
│ │ │ │
│ id, tenantId, name, │ │ id, tenantId, channelId, │
│ type (whatsapp|email|sms| │ │ contactPhone, contactName, │
│ telegram), status │ │ status (open|waiting| │
│ (connected|disconnected| │ │ resolved|closed), │
│ pending_qr), identifier, │ │ assignedTo, priority, │
│ qrCode, sessionData, │ │ subject, tags, unreadCount,│
│ lastConnectedAt, │ │ lastMessageAt, closedAt, │
│ createdAt, updatedAt │ │ createdAt, updatedAt │
└───────────────────────────┘ └───────────────────────────┘
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_messages │ │ crm_quick_messages │
│ │ │ │
│ id, threadId, direction │ │ id, tenantId, title, │
│ (incoming|outgoing), │ │ content, shortcut, │
│ content, contentType │ │ category, isActive, │
│ (text|image|audio|video| │ │ createdAt │
│ document), externalId, │ │ │
│ status (sent|delivered| │ │ Uso: /atalho → mensagem │
│ read|failed), senderName, │ │ rápida pré-definida │
│ metadata, createdAt │ │ │
└───────────────────────────┘ └───────────────────────────┘
Outros
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_products │ │ crm_opportunity_products │
│ │ │ │
│ id, tenantId, name, sku, │ │ id, opportunityId, │
│ description, category, │ │ productId, quantity, │
│ unitPrice, costPrice, │ │ unitPrice, discount, │
│ type (product|service| │ │ totalPrice │
│ subscription), isActive │ └───────────────────────────┘
└───────────────────────────┘
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_campaigns │ │ crm_campaign_contacts │
│ │ │ │
│ id, tenantId, name, type, │ │ id, campaignId, contactId, │
│ status, channelId, │ │ status (pending|sent| │
│ message, scheduledAt, │ │ delivered|failed|replied), │
│ sentCount, deliveredCount, │ │ sentAt, deliveredAt, │
│ failedCount, createdAt │ │ repliedAt │
└───────────────────────────┘ └───────────────────────────┘
┌───────────────────────────┐ ┌───────────────────────────┐
│ crm_events │ │ crm_google_tokens │
│ │ │ │
│ id, tenantId, title, │ │ id, userId, accessToken, │
│ description, type, │ │ refreshToken, expiresAt, │
│ startDate, endDate, │ │ calendarId, createdAt │
│ isAllDay, location, │ │ │
│ attendees, googleEventId, │ └───────────────────────────┘
│ color, reminders, │
│ createdBy, createdAt │ ┌───────────────────────────┐
│ │ │ crm_opportunity_registrations│
└───────────────────────────┘ │ │
│ id, opportunityId, partnerId,│
┌───────────────────────────┐ │ status (pending|approved| │
│ crm_partner_certifications │ │ rejected), registeredAt │
│ │ └───────────────────────────┘
│ id, partnerId, name, │
│ issuer, certDate, expDate, │ ┌───────────────────────────┐
│ status, documentUrl │ │ crm_partner_performance │
│ │ │ │
└───────────────────────────┘ │ id, partnerId, period, │
│ revenue, deals, activeContracts│
│ satisfaction, churnRate │
└───────────────────────────┘
8.2 — Tabelas XOS CRM (xos_*) — 15 tabelas
xos_contacts → Contatos unificados (nome, email, phone, company, tags)
xos_companies → Empresas (nome, CNPJ, segmento, tamanho, receita)
xos_pipelines → Pipelines customizáveis
xos_pipeline_stages → Estágios de pipeline (nome, ordem, cor, prob%)
xos_deals → Negócios/Deals (valor, estágio, expected close)
xos_conversations → Conversas (canal, status, prioridade)
xos_messages → Mensagens individuais
xos_tickets → Tickets de suporte (SLA, prioridade)
xos_campaigns → Campanhas de marketing
xos_automations → Regras de automação (trigger, action)
xos_activities → Atividades (calls, emails, meetings, tasks)
xos_queues → Filas de atendimento
xos_queue_users → Usuários nas filas
xos_internal_notes → Notas internas de deals/contatos
xos_quick_messages → Mensagens rápidas/templates
8.3 — Tabelas Comunicação Unificada (comm_*) — 8 tabelas
comm_channels → Canais unificados
comm_contacts → Contatos unificados (merge CRM + XOS + WA)
comm_threads → Threads unificadas
comm_messages → Mensagens unificadas
comm_queues → Filas unificadas
comm_queue_members → Membros das filas
comm_quick_messages → Templates unificados
comm_events → Eventos (alimentam Knowledge Graph)
9. API REST Completa (/api/crm/*)
Parceiros
| Método |
Endpoint |
Função |
| GET |
/partners |
Lista parceiros |
| GET |
/partners/:id |
Detalhe do parceiro |
| POST |
/partners |
Cria parceiro |
| PATCH |
/partners/:id |
Atualiza parceiro |
| DELETE |
/partners/:id |
Remove parceiro |
| GET |
/partners/:id/certifications |
Certificações |
| POST |
/partners/:id/certifications |
Adiciona certificação |
| GET |
/partners/:id/performance |
Performance |
| POST |
/partners/:id/performance |
Registra performance |
| POST |
/partners/:id/convert-to-client |
Converte para cliente |
Clientes
| Método |
Endpoint |
Função |
| GET |
/clients |
Lista clientes |
| GET |
/clients/:id |
Detalhe do cliente |
| POST |
/clients |
Cria cliente |
| PATCH |
/clients/:id |
Atualiza cliente |
| DELETE |
/clients/:id |
Remove cliente |
Leads
| Método |
Endpoint |
Função |
| GET |
/leads |
Lista leads |
| GET |
/leads/:id |
Detalhe do lead |
| POST |
/leads |
Cria lead |
| PATCH |
/leads/:id |
Atualiza lead |
| DELETE |
/leads/:id |
Remove lead |
| POST |
/leads/:id/convert |
Converte para Opportunity + Client |
Oportunidades
| Método |
Endpoint |
Função |
| GET |
/opportunities |
Lista oportunidades |
| GET |
/opportunities/:id |
Detalhe |
| POST |
/opportunities |
Cria oportunidade |
| PATCH |
/opportunities/:id |
Atualiza |
| DELETE |
/opportunities/:id |
Remove |
| PATCH |
/opportunities/:id/stage |
Muda estágio do pipeline |
| POST |
/opportunities/:id/won |
Marca como ganha |
| POST |
/opportunities/:id/lost |
Marca como perdida |
| POST |
/opportunities/:id/approve |
Aprova (governance) |
| POST |
/opportunities/:id/reject |
Rejeita |
| POST |
/opportunities/:id/open-project |
Abre projeto no Compass |
| POST |
/opportunities/:id/bill |
Gera faturamento |
| GET |
/opportunities/:id/products |
Produtos da opp |
| POST |
/opportunities/:id/products |
Adiciona produto |
| DELETE |
/opportunity-products/:id |
Remove produto |
| GET |
/opportunities/:id/proposals |
Propostas da opp |
Propostas
| Método |
Endpoint |
Função |
| GET |
/proposals |
Lista propostas |
| GET |
/proposals/:id |
Detalhe |
| POST |
/proposals |
Cria proposta |
| PATCH |
/proposals/:id |
Atualiza |
| DELETE |
/proposals/:id |
Remove |
| GET |
/proposals/:id/items |
Itens da proposta |
| POST |
/proposals/:id/items |
Adiciona item |
| PATCH |
/proposal-items/:id |
Atualiza item |
| DELETE |
/proposal-items/:id |
Remove item |
Contratos
| Método |
Endpoint |
Função |
| GET |
/contracts |
Lista contratos |
| GET |
/contracts/:id |
Detalhe |
| POST |
/contracts |
Cria contrato |
| PATCH |
/contracts/:id |
Atualiza |
| GET |
/contracts/:id/revenue |
Revenue schedule |
| GET |
/contracts/:id/milestones |
Marcos |
| POST |
/contracts/:id/milestones |
Adiciona marco |
| PATCH |
/milestones/:id |
Atualiza marco |
| DELETE |
/milestones/:id |
Remove marco |
| POST |
/contracts/:id/process-commissions |
Calcula comissões |
| POST |
/contracts/:id/extend-schedule |
Estende schedule |
| POST |
/contracts/extend-all |
Estende todos |
Comissões
| Método |
Endpoint |
Função |
| GET |
/commission-rules |
Lista regras |
| POST |
/commission-rules |
Cria regra |
| POST |
/commission-rules/seed |
Seed regras padrão |
| GET |
/commissions |
Lista comissões |
| GET |
/commissions/summary |
Resumo financeiro |
| POST |
/commissions/:id/mark-paid |
Marca como paga |
Comunicação
| Método |
Endpoint |
Função |
| GET |
/channels |
Lista canais |
| POST |
/channels |
Cria canal |
| PATCH |
/channels/:id |
Atualiza canal |
| POST |
/channels/:id/whatsapp/connect |
Conecta WhatsApp |
| POST |
/channels/whatsapp/new |
Novo canal WhatsApp |
| POST |
/channels/:id/whatsapp/disconnect |
Desconecta |
| GET |
/threads |
Lista threads |
| GET |
/threads/:id |
Detalhe da thread |
| POST |
/threads |
Cria thread |
| PATCH |
/threads/:id |
Atualiza thread |
| GET |
/threads/:id/messages |
Mensagens da thread |
| POST |
/threads/:id/messages |
Envia mensagem |
| POST |
/threads/:id/send |
Envia via WhatsApp |
| POST |
/threads/:id/read |
Marca como lida |
| POST |
/threads/:id/assign |
Atribui a agente |
| POST |
/threads/:id/close |
Fecha thread |
| POST |
/threads/:id/reopen |
Reabre thread |
| GET |
/threads/stats |
Estatísticas de threads |
| GET |
/quick-messages |
Mensagens rápidas |
| POST |
/quick-messages |
Cria mensagem rápida |
Produtos
| Método |
Endpoint |
Função |
| GET |
/products |
Lista produtos |
| GET |
/products/:id |
Detalhe |
| POST |
/products |
Cria produto |
| PATCH |
/products/:id |
Atualiza |
| DELETE |
/products/:id |
Remove |
Pipeline
| Método |
Endpoint |
Função |
| GET |
/pipeline-stages |
Lista estágios |
| POST |
/pipeline-stages |
Cria estágio |
| PATCH |
/pipeline-stages/:id |
Atualiza |
| DELETE |
/pipeline-stages/:id |
Remove |
Eventos e Calendário
| Método |
Endpoint |
Função |
| GET |
/events |
Lista eventos |
| POST |
/events |
Cria evento |
| PATCH |
/events/:id |
Atualiza |
| PUT |
/events/:id |
Atualiza (full) |
| DELETE |
/events/:id |
Remove |
| GET |
/google/auth |
Inicia OAuth Google |
| GET |
/google/callback |
Callback OAuth |
| GET |
/google/status |
Status conexão |
| POST |
/google/disconnect |
Desconecta Google |
| POST |
/google/sync |
Sincroniza eventos |
| GET |
/google/events |
Eventos Google |
| POST |
/google/events |
Cria evento Google |
Frappe/ERPNext
| Método |
Endpoint |
Função |
| GET |
/frappe/connectors |
Lista conectores |
| GET |
/frappe/connectors/:id |
Detalhe |
| POST |
/frappe/connectors |
Cria conector |
| PATCH |
/frappe/connectors/:id |
Atualiza |
| DELETE |
/frappe/connectors/:id |
Remove |
| POST |
/frappe/connectors/:id/test |
Testa conexão |
| POST |
/frappe/connectors/:id/sync |
Sincroniza dados |
| GET |
/frappe/connectors/:id/logs |
Logs de sync |
| GET |
/frappe/connectors/:id/mappings |
Mapeamentos |
| POST |
/frappe/connectors/:id/mappings |
Cria mapeamento |
Estatísticas
| Método |
Endpoint |
Função |
| GET |
/stats |
KPIs gerais |
| GET |
/stats/sales |
Estatísticas de vendas |
Total: 90+ endpoints
10. Arquivos-Chave
| Arquivo |
Função |
Linhas |
client/src/pages/Crm.tsx |
Interface principal (12 tabs) |
2.700 |
client/src/pages/XosCrm.tsx |
CRM Kanban/Pipeline |
752 |
client/src/pages/WhatsApp.tsx |
Interface WhatsApp |
— |
server/crm/routes.ts |
API REST (90+ endpoints) |
1.592 |
server/crm/storage.ts |
CrmStorage class (Drizzle ORM) |
708 |
server/crm/communication.ts |
CommunicationService |
289 |
server/crm/commission-engine.ts |
CommissionEngine |
418 |
server/crm/whatsapp-bridge.ts |
WhatsAppBridge |
126 |
server/crm/frappe-service.ts |
Integração ERPNext |
— |
server/crm/google-calendar.ts |
Google Calendar OAuth |
— |
server/whatsapp/service.ts |
WhatsApp (Baileys) |
— |
server/communication/engine.ts |
Motor Comunicação (:8006) |
— |
shared/schema.ts |
53 tabelas CRM/XOS/Comm |
— |
11. Resumo Visual
┌─────────────────────────────────────────────────────────────────────┐
│ ARCÁDIA CRM STACK │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ FRONTEND │ │
│ │ Crm.tsx (12 tabs) + XosCrm.tsx (Kanban) + WhatsApp.tsx │ │
│ └────────────────────────────┬────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────▼────────────────────────────────┐ │
│ │ API: /api/crm/* — 90+ endpoints │ │
│ │ Router → CrmStorage → PostgreSQL │ │
│ └───┬─────────┬─────────┬──────────┬──────────┬──────────────┘ │
│ │ │ │ │ │ │
│ ┌───▼───┐ ┌───▼───┐ ┌───▼────┐ ┌───▼───┐ ┌───▼────────┐ │
│ │Comm │ │Comissão│ │WhatsApp│ │Frappe │ │Google Cal │ │
│ │Service│ │Engine │ │Bridge │ │Service│ │OAuth │ │
│ └───┬───┘ └───────┘ └───┬────┘ └───────┘ └────────────┘ │
│ │ │ │
│ │ ┌─────▼──────┐ │
│ │ │ Baileys │ │
│ │ │ WhatsApp │ │
│ │ │ Multi-Sess│ │
│ │ └─────┬──────┘ │
│ │ │ │
│ ┌───▼────────────────────▼──────────────────────────────────┐ │
│ │ Motor de Comunicação (:8006) │ │
│ │ Unifica: CRM + XOS + WhatsApp → comm_* tables │ │
│ │ Alimenta: Knowledge Graph + Manus IA │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ PostgreSQL: 53 tabelas (30 crm_* + 15 xos_* + 8 comm_*) │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘