VendeeDocs
Backend

Funções

RPCs de dashboard, propostas e administração

As RPCs do Vendee concentram a lógica de agregação e mutações que envolvem múltiplas tabelas. Elas rodam dentro do Postgres (SECURITY DEFINER quando necessário), respeitam RLS via get_user_workspace_ids() e são consumidas pelo client via supabase.rpc().

RPCs de Dashboard

Chamadas pelo hook use-dashboard.ts. Todas recebem p_workspace_id, p_start_date / p_end_date, e opcionalmente p_owner_id (NULL = empresa toda).

FunçãoDescrição
get_dashboard_kpisKPIs básicos do período (receita, qtd ganhos, taxa)
get_dashboard_kpis_extendedKPIs estendidos (deal velocity, recurring, ticket médio)
get_deals_timelineNegócios criados e ganhos por semana
get_deals_timeline_monthlyTimeline mensal (últimos 6 meses)
get_deals_by_ownerReceita e qtd de negócios por responsável
get_deals_by_sourceNegócios e receita por origem
get_deals_stalledNegócios sem atividade por mais de N dias
get_activities_by_typeAtividades agrupadas por tipo no período
get_activities_daily_by_typeAtividades por dia e tipo (últimos 30 dias)
get_activities_summaryResumo de atividades realizadas e pendentes
get_lost_deals_detailedNegócios perdidos com detalhes (motivo, valor, etapa)
get_qualifications_distributionDistribuição de scores de qualificação

RPCs de Admin

Chamadas pelo hook use-super-admin.ts.

FunçãoDescrição
admin_list_workspacesLista workspaces com métricas (usuários ativos, deals, atividades 7d)
is_super_adminVerifica se o usuário autenticado é super admin
get_user_admin_workspace_idsIDs de workspaces para super admin (bypassa members)

RPCs utilitárias

FunçãoDescrição
set_default_owner_idTrigger function — fallback de owner ao arquivar membro
change_deal_stageMove um negócio de etapa e emite eventos correspondentes

Padrão de chamada RPC

const { data, error } = await supabase.rpc("get_dashboard_kpis_extended", {
  p_workspace_id: workspaceId,
  p_start_date: fromISO,
  p_end_date: toISO,
  p_owner_id: ownerId ?? null,
});

Tipos de RPC

Supabase às vezes marca argumentos opcionais como required no tipo gerado. Faça cast do objeto de argumento se necessário:

type Args = Parameters<typeof supabase.rpc<"get_dashboard_kpis">>[1];

Event logs (event_logs e pipeline_logs)

A timeline do hub do negócio é construída a partir de uma união de comments e event_logs. Os event types emitidos automaticamente são:

  • deal_created — quando um negócio é inserido
  • stage_changed — quando change_deal_stage move o negócio de etapa
  • deal_won — emitido junto com stage_changed ao entrar em etapa terminal de vitória
  • deal_lost — emitido junto com stage_changed ao entrar em etapa terminal de derrota

Não use fractional-indexing para ordenação do kanban. Os cards são ordenados por updated_at DESC. Qualquer ação no negócio (mudança de etapa, nova atividade, comentário, edição de campo) deve chamar bumpDealUpdatedAt() em src/lib/deal-bump.ts para subir o card para o topo da coluna.

Nesta página