From bb439a4d93db305ce6397817692c80871ce839df Mon Sep 17 00:00:00 2001 From: root Date: Thu, 28 May 2026 10:22:31 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20clean=20action=20log=20=E2=80=94=20no=20?= =?UTF-8?q?UUID/ID=20duplicates,=20smart=20expanded=20row?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/admin/ActionLogPanel.jsx | 30 ++++++++++++------- src/services/supabase/orderGroupRepository.js | 2 +- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/components/admin/ActionLogPanel.jsx b/src/components/admin/ActionLogPanel.jsx index b25481b..7f54bda 100644 --- a/src/components/admin/ActionLogPanel.jsx +++ b/src/components/admin/ActionLogPanel.jsx @@ -301,24 +301,31 @@ export const ActionLogPanel = ({ orderGroupId = null }) => { )} - {expandedId === log.id && ( + {expandedId === log.id && (() => { + const hasChange = log.old_value && log.new_value && log.old_value !== log.new_value; + const isDriverAction = log.action === "driver_assigned" || log.action === "driver_removed"; + const detailEntries = (log.details && typeof log.details === "object") + ? Object.entries(log.details).filter(([k]) => k !== "source" && k !== "driver_name" && k !== "driver_id") + : []; + return (
- {log.old_value && ( -
Было: {resolveName(log.old_value)}
+ {hasChange && !isDriverAction && ( +
Было: {resolveName(log.old_value)} → Стало: {resolveName(log.new_value)}
)} - {log.new_value && ( -
Стало: {resolveName(log.new_value)}
+ {isDriverAction && log.details?.driver_name && !log.old_value && ( +
Водитель: {log.details.driver_name}
)} - {log.details && typeof log.details === "object" && ( + {isDriverAction && log.old_value && ( +
Было: {resolveName(log.old_value)} → Стало: {log.details?.driver_name || resolveName(log.new_value)}
+ )} + {detailEntries.length > 0 && (
- {Object.entries(log.details) - .filter(([k]) => k !== "source") - .map(([k, v]) => ( + {detailEntries.map(([k, v]) => (
- {{driver_name: "Водитель", driver_id: "ID", problem_type: "Тип проблемы", delivery_date_source: "Источник даты"}[k] || k}: + {{problem_type: "Тип проблемы", delivery_date_source: "Источник даты"}[k] || k}: {UUID_RE.test(String(v)) ? resolveName(String(v)) : String(v)}
))} @@ -336,7 +343,8 @@ export const ActionLogPanel = ({ orderGroupId = null }) => {
- )} + ); + })()} ))} diff --git a/src/services/supabase/orderGroupRepository.js b/src/services/supabase/orderGroupRepository.js index 87fc869..4303822 100644 --- a/src/services/supabase/orderGroupRepository.js +++ b/src/services/supabase/orderGroupRepository.js @@ -274,7 +274,7 @@ export const assignDriverToOrderGroup = async ({ const driverName = data?.assigned_driver?.name || driverId || "—"; const oldDriverName = currentGroup?.assigned_driver?.name || currentGroup?.assigned_driver_id || ""; const logPayload = driverId - ? { orderGroupId, action: "driver_assigned", oldValue: oldDriverName || undefined, newValue: driverName, details: { driver_id: driverId, driver_name: driverName } } + ? { orderGroupId, action: "driver_assigned", oldValue: oldDriverName || undefined, newValue: driverName, details: { driver_name: driverName } } : { orderGroupId, action: "driver_removed", oldValue: oldDriverName, newValue: "Снят", details: { driver_name: oldDriverName } }; await logAction(logPayload).catch(() => {});