feat: implement advanced funnel management with multiple funnels and team assignments
All checks were successful
Build and Deploy / build-and-push (push) Successful in 2m32s

- Updated DB schema to support multiple funnels (funnels table) and their stages (funnel_stages table).

- Added funnel_id to teams table to link teams to specific funnels.

- Redesigned /admin/funnels page ('Meus Funis') to allow creating multiple funnels, managing their stages, and assigning them to teams.

- Updated Dashboard, UserDetail, and AttendanceDetail to dynamically load the correct funnel based on the selected team or user's assigned team.
This commit is contained in:
Cauê Faleiros
2026-03-13 14:19:52 -03:00
parent 7ab54053db
commit ea8441d4be
7 changed files with 432 additions and 128 deletions

View File

@@ -17,17 +17,25 @@ export const AttendanceDetail: React.FC = () => {
setLoading(true);
try {
const tenantId = localStorage.getItem('ctms_tenant_id') || '';
const [att, fDefs] = await Promise.all([
const [att, fetchedFunnels] = await Promise.all([
getAttendanceById(id),
getFunnels(tenantId)
]);
setData(att);
setFunnelDefs(fDefs);
if (att) {
const u = await getUserById(att.user_id);
setAgent(u);
// Determine which funnel was used based on the agent's team
const targetTeamId = u?.team_id || null;
let activeFunnel = fetchedFunnels[0];
if (targetTeamId) {
const matchedFunnel = fetchedFunnels.find(f => f.teamIds?.includes(targetTeamId));
if (matchedFunnel) activeFunnel = matchedFunnel;
}
setFunnelDefs(activeFunnel && activeFunnel.stages ? activeFunnel.stages : []);
}
} catch (error) {
console.error("Error loading details", error);