ComercialRS — CRM de Vendas
Localização
- - Path:
/var/www/comercialrs - - Porta: 3010
- - Build: TanStack Start (Vite)
- - Node: v20.20.2 (usar
nvm use 20antes de build) - - TanStack Start (React + Vite)
- - Supabase Cloud (
dauftiqcvgaydddoxqhh) — ⚠️ BLOQUEADO em 2026-06-23 (exceed_egress_quota) - - Meta WhatsApp Business API
- - Webhook:
/var/www/comercialrs/data/meta_webhook_vps_service.py - - Porta: 8083
- - Recebe botões e textos → atualiza tarefas
- - NÃO chama Chatwoot API
- -
reunioes_atrasadas: wrapper lock 9000s (2h30) + message_log anti-spam - -
task_alerts.py: wrapper lock 9000s - - Arquivo:
src/components/tasks/TaskCreateDialog.tsx - - Aparece quando: URL colada começa com
http+ contém/negocios/ou UUID - - Ícone:
- - Texto title: "Auto-preencher campos com dados do link"
- - Problema conhecido: Não aparece por cache do browser — fazer Ctrl+Shift+R
- - Funcionalidade: Extrai nome do negócio do link via Edge Function
firecrawl-extract-meeting - - Endpoint:
https://comercialrs.rochasalesseguros.com.br/functions/v1/firecrawl-extract-meeting - - Métodos (em cascata):
- - Regex extrai UUID:
(?:negocios/detalhe|crm/negocios)/([0-9a-f-]{36})— suporta ambos os formatos de URL - - Testes end-to-end (2026-06-25):
- - Settings.tsx: Toggle "Ocultar botões de canal ao criar tarefa" com EyeOff icon
- - TaskCreateDialog.tsx: Botões de canal (Mensagem/Video/Telefone) escondidos quando toggle está ON
- - Persistência: localStorage
hideChannelOnCreate - - Host: 31.97.243.106, porta 5433 (do container
deploy-vps-db-1) - - Consultar:
docker exec deploy-vps-db-1 psql -U postgres -d postgres -c "SQL" - - Tabelas principais:
- - NÃO confundir com n8n, Chatwoot ou Kanban
- - Cada um tem sua própria pasta e configuração
Stack
⚠️ ALERTA (2026-06-23)
Supabase Cloud dauftiqcvgaydddoxqhh bloqueado por exceder egress quota.
Migração para Self-Hosted documentada em: COMERCIALRS-MIGRACAO-CLOUD-PARA-SELF-HOSTED-2026-06.md
Meta WhatsApp (CUIDADO — NÃO CONFUNDIR COM CHATWOOT!)
Alertas
Build e Deploy
`bash
cd /var/www/comercialrs
node ./node_modules/vite/bin/vite.js build
Output vai pra dist/src/root.html (NÃO dist/index.html!)
Nginx serve em /var/www/comercialrs/dist
Site: comercialrs.rochasalesseguros.com.br
`
⚠️ TanStack Start Output path (CRITICAL)
TanStack Start build gera dist/src/root.html, NÃO dist/index.html.
O nginx deve ter: try_files $uri $uri/ /src/root.html; (não /index.html).
Se o build gerar dist/index.html missing → 500 redirect loop.
Features Implementadas
Botão Sparkles "Auto-preencher" ✅ (30/jun/2026)
1. Extração de Título via Firecrawl ✅ (2026-06-25)
1. GraphQL Auth0 (davi.freire@) → BLOQUEADO (access_denied)
2. Supabase self-hosted (crm_tarefas.negocio_id → titulo) → FUNCIONA ✅
3. Fallback: "Reunião"
- 4fd97a81-7765-44e5-8464-9b8aadcf6d55 → ROMALU COMERCIO DE ALIMENTOS LTDA ✅
- 8a35df0e-896f-4597-afbe-dc99cfb1d912 → iara ✅
- f733c613-a104-4885-b837-0402badefb64 → Reunião (não existe) ✅
2. Ocultar Canal ao Criar Tarefa (hideChannelOnCreate)
Bug Fix — Victoria e Nayara não veem reuniões ✅ (30/jun/2026)
Causa raiz: profiles.user_id não coincidia com auth.users.id
Correção aplicada:
`sql
UPDATE public.profiles
SET user_id = '
WHERE email IN ('victoria@rochasales.com.br', 'nayara@rochasales.com.br');
`
Usuários corrigidos:
profiles.user_id ANTIGO (errado) | auth.users.id (correto) | |
| --- | --- | --- |
| victoria@rochasales.com.br | b5962b21-1092-491a-a814-a823024c3a2e | 14af679a-c860-410d-b2d4-ce1720782635 |
| nayara@rochasales.com.br | 02bea24f-b246-4f07-af86-f1f04298bbac | 95cf1f71-d0d3-4f51-8dd8-5943a9296b6f |
Nota residual: tasks.responsible_id das reuniões existentes aponta para IDs que não existem no banco local (vieram do Supabase Cloud antigo). As reuniões precisam ser reatribuídas se Victoria/Nayara precisarem ver reuniões antigas.
Database (Supabase Self-Hosted)
- crm_tarefas: id, negocio_id (UUID do Painel), titulo, canal, data, etc.
- crm_leads: Id (UUID), Nome, Etapa, etc.
Sistema Separado
Última atualização: 2026-06-30