From 7f94d3e7f854944a9e6215826cf70cc300de387b Mon Sep 17 00:00:00 2001 From: MoonTestUse1 Date: Sun, 5 Jan 2025 02:27:24 +0600 Subject: [PATCH] add websockets suppor8 --- backend/app/crud/requests.py | 13 ++++++++++--- .../src/components/admin/StatisticsPanel.vue | 18 ++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/backend/app/crud/requests.py b/backend/app/crud/requests.py index 377e646..8d541ec 100644 --- a/backend/app/crud/requests.py +++ b/backend/app/crud/requests.py @@ -84,10 +84,17 @@ def get_statistics(db: Session) -> dict: .all() ) - # Формируем словарь статусов - by_status = {} + # Формируем словарь статусов с преобразованием в нижний регистр + by_status = { + 'new': 0, + 'in_progress': 0, + 'completed': 0, + 'rejected': 0 + } + for status, count in status_counts: - by_status[status] = count + status_key = status.lower() if isinstance(status, str) else status.value.lower() + by_status[status_key] = count # Возвращаем статистику в нужном формате return { diff --git a/frontend/src/components/admin/StatisticsPanel.vue b/frontend/src/components/admin/StatisticsPanel.vue index b5e6d53..4f48128 100644 --- a/frontend/src/components/admin/StatisticsPanel.vue +++ b/frontend/src/components/admin/StatisticsPanel.vue @@ -99,10 +99,15 @@ const fetchStatistics = async () => { ]); console.log('StatisticsPanel: Received statistics:', statsResponse.data); - // Принудительно обновляем реактивное состояние + // Обновляем статистику statistics.value = { total: statsResponse.data.total, - by_status: statsResponse.data.by_status || {} + by_status: { + new: statsResponse.data.by_status?.new || 0, + in_progress: statsResponse.data.by_status?.in_progress || 0, + completed: statsResponse.data.by_status?.completed || 0, + rejected: statsResponse.data.by_status?.rejected || 0 + } }; chartData.value = chartsResponse.data; } catch (error) { @@ -119,10 +124,15 @@ const handleWebSocketMessage = (data: any) => { console.log('StatisticsPanel: Old statistics:', statistics.value); console.log('StatisticsPanel: Updating statistics:', data.statistics); - // Принудительно обновляем реактивное состояние + // Обновляем статистику statistics.value = { total: data.statistics.total, - by_status: data.statistics.by_status || {} + by_status: { + new: data.statistics.by_status?.new || 0, + in_progress: data.statistics.by_status?.in_progress || 0, + completed: data.statistics.by_status?.completed || 0, + rejected: data.statistics.by_status?.rejected || 0 + } }; console.log('StatisticsPanel: New statistics:', statistics.value);