Backend
Funcoes
RPCs de dashboard, seed e auto-close
O banco possui funcoes RPC (Remote Procedure Call) chamadas pelo frontend via supabase.rpc().
RPCs de Dashboard
Usadas pelo hook use-dashboard.ts para calcular metricas:
| Funcao | Descricao |
|---|---|
get_dashboard_kpis | KPIs principais (total de negocios, valor, taxa de conversao) |
get_deals_timeline | Timeline de negocios por periodo |
get_deals_by_owner | Negocios agrupados por responsavel |
get_loss_reasons_distribution | Distribuicao de motivos de perda |
get_activities_summary | Resumo de atividades por periodo |
get_qualifications_distribution | Distribuicao de scores de qualificacao |
Uso no frontend
const { data } = useQuery({
queryKey: ["dashboard-kpis", workspaceId, dateRange],
queryFn: async () => {
const { data, error } = await supabase.rpc("get_dashboard_kpis", {
p_workspace_id: workspaceId,
p_start_date: startDate,
p_end_date: endDate,
});
if (error) throw error;
return data;
},
});Event logs
O sistema registra eventos automaticamente em event_logs e pipeline_logs:
deal_created— Negocio criadostage_changed— Etapa alteradadeal_won— Negocio ganhodeal_lost— Negocio perdido
Esses logs sao usados na tab "Historico" do detalhe do negocio.
Kanban ordering
O Kanban usa fractional indexing (fractional-indexing package) para ordenar cards sem precisar reindexar todos:
import { generateKeyBetween } from "fractional-indexing";
const newOrder = generateKeyBetween(prevOrder, nextOrder);