From ad5cd26363f3c19ed28ada94d641b53ba7a4cdfd Mon Sep 17 00:00:00 2001 From: kitos Date: Wed, 3 Jun 2026 11:22:28 +0200 Subject: [PATCH] fix(tests): replace updated_at (doesn't exist) with real timestamps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TestsPage 'Updated' column: compute lastActivityDate() from the most recent available timestamp — blue_validated_at > red_validated_at > blue_work_started_at > blue_started_at > red_started_at > created_at. Also fixes the sort-by-updated_at case. ValidatedTestsPage 'Validated' column: use blue_validated_at (when Blue Lead approved) falling back to red_validated_at. Fixes both the display and the default sort-by-validated. --- frontend/src/pages/TestsPage.tsx | 23 ++++++++++++++++++++--- frontend/src/pages/ValidatedTestsPage.tsx | 9 +++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/frontend/src/pages/TestsPage.tsx b/frontend/src/pages/TestsPage.tsx index 3b6390e..1c6188b 100644 --- a/frontend/src/pages/TestsPage.tsx +++ b/frontend/src/pages/TestsPage.tsx @@ -224,8 +224,8 @@ export default function TestsPage() { bv = b.created_at || ""; break; case "updated_at": - av = a.updated_at || ""; - bv = b.updated_at || ""; + av = lastActivityDate(a) || ""; + bv = lastActivityDate(b) || ""; break; case "waiting_time": { const aIsBlue = a.state === "blue_evaluating"; @@ -281,6 +281,23 @@ export default function TestsPage() { }); }; + // updated_at doesn't exist in DB — derive "last activity" from the most + // recent non-null timestamp available on the test record + const lastActivityDate = (t: import("../types/models").Test): string | null => { + const candidates = [ + t.blue_validated_at, + t.red_validated_at, + (t as any).blue_work_started_at, + (t as any).blue_started_at, + (t as any).red_started_at, + t.created_at, + ].filter(Boolean) as string[]; + if (!candidates.length) return null; + return candidates.reduce((latest, d) => + new Date(d) > new Date(latest) ? d : latest + ); + }; + // ── My tasks label ──────────────────────────────────────────────── const myTasksLabel = useMemo(() => { if (!user) return "My Tasks"; @@ -594,7 +611,7 @@ export default function TestsPage() { {formatDate(test.created_at)} - {formatDate(test.updated_at)} + {formatDate(lastActivityDate(test))}