From 74f9a221fbe8954045478167d39db20ac4c69b81 Mon Sep 17 00:00:00 2001 From: 1AhmedYasser <26207361+1AhmedYasser@users.noreply.github.com> Date: Thu, 26 Feb 2026 15:05:50 +0200 Subject: [PATCH] chore(644): Enhanced Total Count --- .../POST/chat-count-only-chatbot.sql | 32 +++++++++++-------- .../POST/chat-count-with-csa-and-chatbot.sql | 26 +++++---------- .../analytics/POST/chat-count-with-csa.sql | 8 ++--- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/DSL/Resql/analytics/POST/chat-count-only-chatbot.sql b/DSL/Resql/analytics/POST/chat-count-only-chatbot.sql index b74aaad3..79ebde1c 100644 --- a/DSL/Resql/analytics/POST/chat-count-only-chatbot.sql +++ b/DSL/Resql/analytics/POST/chat-count-only-chatbot.sql @@ -4,6 +4,20 @@ FROM chat c WHERE c.status = 'ENDED' AND c.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz ORDER BY c.base_id, c.updated DESC +), +csa_ids AS ( + SELECT DISTINCT base_id + FROM latest_per_base lp + WHERE EXISTS ( + SELECT 1 FROM message m + WHERE m.chat_base_id = lp.base_id + AND m.author_role = 'backoffice-user' + ) + AND EXISTS ( + SELECT 1 FROM message m + WHERE m.chat_base_id = lp.base_id + AND (m.event = 'taken-over' OR m.event = 'pending-assigned') + ) ) SELECT DATE_TRUNC(:period, lp.ended) AS time, @@ -12,19 +26,11 @@ FROM latest_per_base lp WHERE (:showTest = TRUE OR lp.test = FALSE) AND ( array_length(ARRAY[:urls]::TEXT[], 1) IS NULL - OR lp.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) - ) + OR lp.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) + ) AND NOT EXISTS ( - SELECT 1 - FROM message m - WHERE m.chat_base_id = lp.base_id - AND m.author_role = 'backoffice-user' - ) - AND NOT EXISTS ( - SELECT 1 - FROM message m - WHERE m.chat_base_id = lp.base_id - AND m.event = 'taken-over' - ) + SELECT 1 FROM csa_ids c + WHERE c.base_id = lp.base_id + ) GROUP BY time ORDER BY time ASC; diff --git a/DSL/Resql/analytics/POST/chat-count-with-csa-and-chatbot.sql b/DSL/Resql/analytics/POST/chat-count-with-csa-and-chatbot.sql index 31e34c4a..01932e19 100644 --- a/DSL/Resql/analytics/POST/chat-count-with-csa-and-chatbot.sql +++ b/DSL/Resql/analytics/POST/chat-count-with-csa-and-chatbot.sql @@ -11,19 +11,18 @@ WHERE c.status = 'ENDED' AND c.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz ORDER BY c.base_id, c.updated DESC ), - -chatbot_ids AS ( +csa_ids AS ( SELECT DISTINCT time, base_id FROM latest_per_base b - WHERE NOT EXISTS ( + WHERE EXISTS ( SELECT 1 FROM message m WHERE m.chat_base_id = b.base_id AND m.author_role = 'backoffice-user' ) - AND NOT EXISTS ( + AND EXISTS ( SELECT 1 FROM message m WHERE m.chat_base_id = b.base_id - AND m.event = 'taken-over' + AND (m.event = 'taken-over' or m.event = 'pending-assigned') ) AND ( :showTest = TRUE @@ -34,19 +33,12 @@ chatbot_ids AS ( OR b.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) ) ), - -csa_ids AS ( +chatbot_ids AS ( SELECT DISTINCT time, base_id FROM latest_per_base b - WHERE EXISTS ( - SELECT 1 FROM message m - WHERE m.chat_base_id = b.base_id - AND m.author_role = 'backoffice-user' - ) - AND EXISTS ( - SELECT 1 FROM message m - WHERE m.chat_base_id = b.base_id - AND (m.event = 'taken-over' or m.event = 'pending-assigned' or m.event = 'forwarded_to_backoffice') + WHERE NOT EXISTS ( + SELECT 1 FROM csa_ids c + WHERE c.base_id = b.base_id ) AND ( :showTest = TRUE @@ -57,13 +49,11 @@ csa_ids AS ( OR b.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) ) ), - combined AS ( SELECT time, base_id FROM chatbot_ids UNION SELECT time, base_id FROM csa_ids ) - SELECT time, COUNT(*) AS sum_count FROM combined GROUP BY time diff --git a/DSL/Resql/analytics/POST/chat-count-with-csa.sql b/DSL/Resql/analytics/POST/chat-count-with-csa.sql index ec79e56c..525552a9 100644 --- a/DSL/Resql/analytics/POST/chat-count-with-csa.sql +++ b/DSL/Resql/analytics/POST/chat-count-with-csa.sql @@ -18,13 +18,13 @@ WHERE (:showTest = TRUE OR lp.test = FALSE) SELECT 1 FROM message m WHERE m.chat_base_id = lp.base_id - AND m.author_role = 'backoffice-user' - ) + AND m.author_role = 'backoffice-user' + ) AND EXISTS ( SELECT 1 FROM message m WHERE m.chat_base_id = lp.base_id - AND m.event = 'taken-over' or m.event = 'pending-assigned' - ) + AND (m.event = 'taken-over' OR m.event = 'pending-assigned') + ) GROUP BY time ORDER BY time ASC;