📄 WORKFLOWS.md

← Vault

Workflows — Fluxos de Trabalho

Fluxo: Lead entra pelo Painel do Corretor

`

Painel do Corretor (Trindade)

↓ (GraphQL API)

Chatwoot Kanban Sync (cron */5)

↓ (chatwoot_painel_map)

Chatwoot (conversa criada)

↓ (n8n automation)

WhatsApp (mensagem para corretor)

`

Detalhes

1. Lead criado no Painel do Corretor

2. Script /var/www/chatwoot-kanban/run-sync.sh executa a cada 5 min

3. Mapeia phone → Chatwoot conversation_id na tabela chatwoot_painel_map

4. n8n dispara mensagem WhatsApp para corretor responsável


Fluxo: Corretor clica "Link para Corretor" (DocCorretor)

`

Admin clica "Link para Corretor"

Token gerado + pasta criada (client_id=null)

Link copiado com folder_id

Externo recebe link, acessa formulário

Externo preenche (nome, email, documento)

API atualiza pasta com client_id

Documento fica disponível no DocCorretor

`

⚠️ NÃO ALTERAR

Este fluxo é crítico. A pasta é criada ANTES do externo preencher. Sem este fluxo, o DocCorretor não funciona.


Fluxo: Alerta de Reunião Atrasada (ComercialRS)

`

Cron */5 task_alerts.py

Query: tasks WHERE status='todo' AND dueDate < NOW()

Verifica throttle (alert_throttle table)

↓ (se não bloqueado)

Envia WhatsApp para responsible_id

Registra em alert_throttle (expira em 2h30)

`

Anti-spam


Fluxo: Deploy ComercialRS (VPS)

`

Desenvolvedor faz изменения no código

Commit + push para GitHub

↓ (opcional)

VPS recebe via webhook ou pull manual

Build: nvm use 20 && npm run build

dist/ copiado para /var/www/comercialrs/dist/

Nginx serve novo build

`

Build rápido

`bash

cd /var/www/comercialrs

nvm use 20

npm run build

`


Fluxo: Deploy DocCorretor (VPS)

`

Build local ou no VPS

PATH="/root/.nvm/versions/node/v20.20.2/bin:$PATH" nvm use 20

node ./node_modules/vite/bin/vite.js build

dist/ → /var/www/documentos2/app/dist/

sudo systemctl restart documentos

`

Verificar

`bash

systemctl status documentos

curl -s https://documentos.rochasalesseguros.com.br | head -5

`


Fluxo: Migrar documento do Google Drive (DocCorretor)

`

Identificar documento no Google Drive

Fazer download via gdown (url pública)

Upload para Supabase Storage

Criar registro em documents + storage_files

Atualizar folder com client_id

Verificar permissões (o+r)

`

Comando típico

`bash

gdown "https://drive.google.com/uc?id=FILE_ID" -O /tmp/doc.pdf

Upload via API ou script

`


Fluxo: Sync Obsidian Vault (VPS ↔ GitHub)

`

Cron */5: git add -A && git commit && git push

Cron : git pull (a cada 1 min)

GitHub como intermediário

Obsidian no PC ←→ GitHub ←→ VPS

`

Para editar do PC

1. Instalar Obsidian no PC

2. Clonar repo: git clone https://github.com/tecrochasales-a11y/obsidian-vault.git

3. Editar notas localmente

4. Push para GitHub

5. Cron no VPS puxa automaticamente


Fluxo: Nova Edge Function (Supabase Cloud)

`

Criar arquivo em supabase/functions//index.ts

Implementar lógica

Testar local: supabase functions serve

Deploy: npx supabase functions deploy

Testar em produção

`

Estrutura

`typescript

import { serve } from 'https://deno.land/std@0.177.0/http/server.ts'

serve(async (req) => {

// lógica

return new Response(JSON.stringify({ ok: true }))

})

`


Fluxo: Debug 401 em Edge Function

`

401 retornado

Verificar JWT (Authorization header)

Edge Functions não recebem JWT automaticamente

Solução: usar service_role key OU configurar JWT na função

Ou: criar função sem auth (public)

`

Soluções

1. supabase.functions.invoke com Authorization: Bearer

2. JWT manual na função (verifyJWT)

3. Função pública (sem verificação)


Última atualização: 2026-06-15