From f6323ce5b4407a748e86d67b0a82d0e0826a38d5 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Sun, 7 Sep 2025 07:36:19 +0000 Subject: [PATCH 1/2] Improve how SAV statistics are displayed on the platform Update SAV module to address issues with the display of statistical cards. Replit-Commit-Author: Agent Replit-Commit-Session-Id: dc17873f-d870-4f45-9108-207794b849f7 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/dc17873f-d870-4f45-9108-207794b849f7/FxJjNBe --- attached_assets/image_1757230523455.png | Bin 0 -> 32363 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 attached_assets/image_1757230523455.png diff --git a/attached_assets/image_1757230523455.png b/attached_assets/image_1757230523455.png new file mode 100644 index 0000000000000000000000000000000000000000..4ddf04f20071ea6a54c5a21c23e203eada62e792 GIT binary patch literal 32363 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 YyXs+!hEf1_L`0;bsPVY`(epR|23J&*RR910 literal 0 HcmV?d00001 From 15e9d13e6a9e3370dc1bb3b056dbfa4756667a5b Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Sun, 7 Sep 2025 07:37:32 +0000 Subject: [PATCH 2/2] Improve ticket statistics calculation and data retrieval Refactors the database storage logic to separately query for ticket counts by status, priority, and total. This change enhances data retrieval efficiency and accuracy for displaying ticket statistics. Replit-Commit-Author: Agent Replit-Commit-Session-Id: dc17873f-d870-4f45-9108-207794b849f7 Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/dc17873f-d870-4f45-9108-207794b849f7/FxJjNBe --- server/storage.ts | 48 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/server/storage.ts b/server/storage.ts index 8a40786..e8c8687 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -2276,37 +2276,65 @@ export class DatabaseStorage implements IStorage { resolvedTickets: number; criticalTickets: number; }> { - let query = db.select({ count: sql`count(*)`, status: savTickets.status, priority: savTickets.priority }) - .from(savTickets); + let baseQuery = db.select().from(savTickets); if (groupIds?.length) { - query = query.where(inArray(savTickets.groupId, groupIds)); + baseQuery = baseQuery.where(inArray(savTickets.groupId, groupIds)); } - const results = await query.groupBy(savTickets.status, savTickets.priority); + // Get status counts + const statusResults = await db + .select({ + count: sql`count(*)`, + status: savTickets.status + }) + .from(savTickets) + .where(groupIds?.length ? inArray(savTickets.groupId, groupIds) : undefined) + .groupBy(savTickets.status); + + // Get priority counts + const priorityResults = await db + .select({ + count: sql`count(*)`, + priority: savTickets.priority + }) + .from(savTickets) + .where(groupIds?.length ? inArray(savTickets.groupId, groupIds) : undefined) + .groupBy(savTickets.priority); + + // Get total count + const totalResult = await db + .select({ count: sql`count(*)` }) + .from(savTickets) + .where(groupIds?.length ? inArray(savTickets.groupId, groupIds) : undefined); const stats = { - totalTickets: 0, + totalTickets: Number(totalResult[0]?.count || 0), newTickets: 0, inProgressTickets: 0, resolvedTickets: 0, criticalTickets: 0, }; - results.forEach(result => { - const count = result.count || 0; - stats.totalTickets += count; + // Process status results + statusResults.forEach(result => { + const count = Number(result.count || 0); if (result.status === 'nouveau') { - stats.newTickets += count; + stats.newTickets = count; } else if (['en_cours', 'attente_pieces', 'attente_echange'].includes(result.status)) { stats.inProgressTickets += count; } else if (['resolu', 'ferme'].includes(result.status)) { stats.resolvedTickets += count; } + }); + // Process priority results for critical tickets + priorityResults.forEach(result => { + const count = Number(result.count || 0); + if (result.priority === 'critique') { - stats.criticalTickets += count; + stats.criticalTickets = count; } });