Configuração

Integrações

OpenAI, Resend, WhatsApp Cloud API, Supabase, Vercel Cron

OpenAI (IA copiloto em cotações)

Usado em:

  • Extração de propostas em PDF / foto / áudio (mapa comparativo)
  • OCR de NF-e quando XML não disponível
  • Geração de mensagens de negociação

Configuração

Variável de ambiente: OPENAI_API_KEY

Modelos:

  • gpt-4o-mini — extração e OCR
  • whisper-1 — transcrição de áudio

Custo médio por cotação (3 propostas): R$ 0,10–0,30 (tokens + transcrição).

Fallback

Se a chave não estiver configurada, módulo de extração IA fica desabilitado. Mapa comparativo continua funcionando — apenas o usuário precisa preencher manualmente os campos das propostas.

Resend (email transacional)

Usado em:

  • Convites de RFQ a fornecedores
  • Lembretes diários de RFQ próximas do prazo
  • Digest de CNDs vencendo
  • Emails de aprovação pendente
  • Alertas de divergência

Configuração

RESEND_API_KEY=re_xxx
RESEND_FROM_EMAIL=noreply@suaempresa.com
RESEND_FROM_NAME=OctaBuild

Domínio precisa estar verificado em Resend. SPF/DKIM/DMARC configurados.

WhatsApp Cloud API

Usado em:

  • Distribuição de RFQ a fornecedores (text message com link)
  • Lembretes
  • Notificações críticas (CND vencida, aprovação fora SLA)

Configuração

Microserviço separado em whatsapp-service/ (Docker, deploy em Render).

WHATSAPP_SERVICE_URL=https://whatsapp.suaempresa.com
WHATSAPP_SERVICE_TOKEN=xxx (compartilhado com o serviço)

WABA (WhatsApp Business Account) precisa estar verificada na Meta. Templates aprovados:

  • rfq_invite_supplier — convite RFQ
  • rfq_reminder — lembrete prazo
  • (outros conforme necessidade)

Fallback

Se serviço não estiver configurado, distribuição WhatsApp falha graciosamente. Comprador pode copiar link e enviar manualmente.

Supabase

Banco de dados (PostgreSQL 17) + Storage + Auth.

Configuração

NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxx
SUPABASE_SERVICE_ROLE_KEY=eyJxxx

Service role key é usada em rotas que precisam bypassar RLS (ex: rotas públicas com token).

RLS (Row Level Security)

Todas as tabelas com dados de negócio têm RLS habilitada. Helpers padrão:

  • is_org_member(org_id)
  • is_org_admin(org_id)
  • get_active_organization_id()

Storage buckets

  • procurement-documents — RFQ specs, PC PDF, contrato PDF, NF-e XMLs
  • procurement-supplier-uploads — propostas de fornecedores (acesso via token)
  • procurement-receipts — fotos de recebimento
  • compras-fundos-comprovantes — cupons fiscais de fundos
  • compras-cnds — certidões de fornecedores
  • project-documents — projetos arquitetônicos, ARTs

Todos são privados, RLS por org.

Vercel Cron

Jobs agendados em app/vercel.json:

PathSchedule UTCFunção
/api/cron/deadline-notifications0 11 * * *Notifica tasks vencendo
/api/cron/cleanup-suppressions0 4 * * *Limpa email suppressions antigas
/api/cron/rfq-reminders0 13 * * *Lembretes de RFQ a fornecedores
/api/cron/cnds-vencimento0 14 * * *Reclassifica CNDs e alerta

Auth via Authorization: Bearer ${CRON_SECRET}.

BrasilAPI (CNPJ lookup)

Usado em:

  • Auto-lookup de CNPJ ao cadastrar fornecedor

API pública, sem chave. Rate limit razoável (~200 req/min).

Open Finance (planejado)

Phase 2.5+: integração direta com bancos para conciliação automática. Por ora, importação manual de OFX/CSV.

SEFAZ (planejado)

Phase 2.5+: validação real de chave de NF-e via Focus NFe ou similar (~R$ 0,05 por consulta). Por ora, parser de XML local valida estrutura mas não consulta status na SEFAZ.

Observabilidade

  • Logs: console.error com prefixo [Modulo]. Em produção, agregados por Vercel ou serviço externo.
  • Sentry (planejado) para errors de runtime.
  • Analytics de uso: PostHog ou Amplitude (planejado).

On this page