feat: sync convex companies and dashboard metrics

This commit is contained in:
Esdras Renan 2025-10-18 21:13:20 -03:00
parent 4f52114b48
commit 7a3eca9361
10 changed files with 356 additions and 19 deletions

View file

@ -347,6 +347,22 @@ export const dashboardOverview = query({
const trend = percentageChange(newTickets.length, previousTickets.length);
const inProgressCurrent = tickets.filter((ticket) => {
if (!ticket.firstResponseAt) return false;
const status = normalizeStatus(ticket.status);
if (status === "RESOLVED") return false;
return !ticket.resolvedAt;
});
const inProgressPrevious = tickets.filter((ticket) => {
if (!ticket.firstResponseAt || ticket.firstResponseAt >= lastDayStart) return false;
if (ticket.resolvedAt && ticket.resolvedAt < lastDayStart) return false;
const status = normalizeStatus(ticket.status);
return status !== "RESOLVED" || !ticket.resolvedAt;
});
const inProgressTrend = percentageChange(inProgressCurrent.length, inProgressPrevious.length);
const lastWindowStart = now - 7 * ONE_DAY_MS;
const previousWindowStart = now - 14 * ONE_DAY_MS;
@ -396,6 +412,11 @@ export const dashboardOverview = query({
previous24h: previousTickets.length,
trendPercentage: trend,
},
inProgress: {
current: inProgressCurrent.length,
previousSnapshot: inProgressPrevious.length,
trendPercentage: inProgressTrend,
},
firstResponse: {
averageMinutes: averageWindow,
previousAverageMinutes: averagePrevious,