From 52ac471d3e08242d7f198a741c4fc9fa1833869e Mon Sep 17 00:00:00 2001 From: Zahar Date: Sat, 27 Sep 2025 10:46:25 +0800 Subject: [PATCH] fix(ui,db): align status with backend enum Add mapping to convert dashboard status 'submitted', 'in_progress', 'fixed' to backend values 'New', 'In Progress', 'Fixed' before sending PATCH to /api/tickets/{id}/status. Keep dashboard format in local state when the API returns no body. Add debug logging for visibility during updates. Also update fixmate.db contents; no schema changes. --- backend/app/db/fixmate.db | Bin 45056 -> 45056 bytes dashboard/app.js | 16 ++++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/backend/app/db/fixmate.db b/backend/app/db/fixmate.db index 5a6fa7a648091caf278d6c393202e02a894edefd..611e24cc6c8a853c047a00c5a40fddfb725ea6f4 100644 GIT binary patch delta 302 zcmZp8z|`=7X@WGPz(g5mMuCk9OZ_?d>>2p%`PF&zHVXUVeEVlCI4U>Qw~T82S4d`1^qh zTlsbJ8QDTZg_VIeS|*!XS|sZlnVDMXnphYb=_Z+{B0cFgSQYY8Ns%ZPU th9enhWME{fYhbBsWUgQUbqyB-0|O)f4F>)jn*}GFbhN*f5m7#grdHLmeevToj#U%Qw}o7zBWl$N48tFlOUo00KA{ E0OvAU7ytkO diff --git a/dashboard/app.js b/dashboard/app.js index ae09862..0e5073d 100644 --- a/dashboard/app.js +++ b/dashboard/app.js @@ -332,12 +332,24 @@ function App(){ return Array.from(s); }, [rawData]); +// Map dashboard status format to backend enum format +const mapStatusToBackend = (dashboardStatus) => { + const statusMapping = { + 'submitted': 'New', + 'in_progress': 'In Progress', + 'fixed': 'Fixed' + }; + return statusMapping[dashboardStatus] || dashboardStatus; +}; + const updateTicketStatus = async (reportId, newStatus) => { try { + const backendStatus = mapStatusToBackend(newStatus); + console.log('Updating status:', newStatus, '->', backendStatus); const res = await fetch(`${BACKEND_BASE}/api/tickets/${reportId}/status`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ status: newStatus }) + body: JSON.stringify({ status: backendStatus }) }); if (res.ok) { // Prefer using returned updated ticket if provided @@ -348,7 +360,7 @@ const updateTicketStatus = async (reportId, newStatus) => { setRawData(prev => prev.map(r => r.id === reportId ? normalized : r)); if (selected && selected.id === reportId) setSelected(normalized); } else { - // No body returned - update local state + // No body returned - update local state (keep dashboard format) setRawData(prev=> prev.map(r=> r.id === reportId ? {...r, status: newStatus, updatedAt: new Date().toISOString()} : r)); if(selected && selected.id === reportId) setSelected(prev => ({...prev, status: newStatus, updatedAt: new Date().toISOString()})); }