refine queue metrics and devices ui

This commit is contained in:
Esdras Renan 2025-11-04 19:53:54 -03:00
parent 1e45324460
commit c2acd65764
11 changed files with 181 additions and 116 deletions

View file

@ -113,20 +113,39 @@ export const summary = query({
const queues = await ctx.db.query("queues").withIndex("by_tenant", (q) => q.eq("tenantId", tenantId)).collect();
const result = await Promise.all(
queues.map(async (qItem) => {
const pending = await ctx.db
const tickets = await ctx.db
.query("tickets")
.withIndex("by_tenant_queue", (q) => q.eq("tenantId", tenantId).eq("queueId", qItem._id))
.collect();
const waiting = pending.filter((t) => {
const status = normalizeStatus(t.status);
return status === "PENDING" || status === "PAUSED";
}).length;
const open = pending.filter((t) => {
const status = normalizeStatus(t.status);
return status !== "RESOLVED";
}).length;
const breached = 0;
return { id: qItem._id, name: renameQueueString(qItem.name), pending: open, waiting, breached };
let pending = 0;
let inProgress = 0;
let paused = 0;
let breached = 0;
const now = Date.now();
for (const ticket of tickets) {
const status = normalizeStatus(ticket.status);
if (status === "PENDING") {
pending += 1;
} else if (status === "AWAITING_ATTENDANCE") {
inProgress += 1;
} else if (status === "PAUSED") {
paused += 1;
}
if (status !== "RESOLVED") {
const dueAt = typeof ticket.dueAt === "number" ? ticket.dueAt : null;
if (dueAt && dueAt < now) {
breached += 1;
}
}
}
return {
id: qItem._id,
name: renameQueueString(qItem.name),
pending,
inProgress,
paused,
breached,
};
})
);
return result;