fix(tests): replace updated_at (doesn't exist) with real timestamps

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.
This commit is contained in:
kitos
2026-06-03 11:22:28 +02:00
parent 611689f3ce
commit a1415a379f
2 changed files with 25 additions and 7 deletions
+5 -4
View File
@@ -72,7 +72,7 @@ export default function ValidatedTestsPage() {
| "attack_success"
| "detection_result"
| "created_at"
| "updated_at";
| "updated_at"; // maps to blue_validated_at
const [sortKey, setSortKey] = useState<SortKey>("updated_at");
const [sortDir, setSortDir] = useState<"asc" | "desc">("desc");
@@ -145,8 +145,9 @@ export default function ValidatedTestsPage() {
bv = b.created_at || "";
break;
case "updated_at":
av = a.updated_at || "";
bv = b.updated_at || "";
// "Validated" column = when Blue Lead validated (last validation step)
av = a.blue_validated_at || a.red_validated_at || a.created_at || "";
bv = b.blue_validated_at || b.red_validated_at || b.created_at || "";
break;
}
const cmp = av < bv ? -1 : av > bv ? 1 : 0;
@@ -280,7 +281,7 @@ export default function ValidatedTestsPage() {
{formatDate(test.created_at)}
</td>
<td className="px-4 py-3 text-xs text-gray-400 whitespace-nowrap">
{formatDate(test.updated_at)}
{formatDate(test.blue_validated_at || test.red_validated_at)}
</td>
<td className="px-4 py-3">
<button