arcadiasuite/MAPA_CRM_ARCADIA.md

51 KiB
Raw Blame History

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_*) │   │
│  └───────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────┘