mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 08:40:44 +00:00
refactor: share task audit sorting
This commit is contained in:
@@ -20,6 +20,7 @@ import {
|
||||
type TaskAuditCode,
|
||||
type TaskAuditSeverity,
|
||||
} from "../tasks/task-registry.audit.js";
|
||||
import { compareTaskAuditFindingSortKeys } from "../tasks/task-registry.audit.shared.js";
|
||||
import {
|
||||
getInspectableTaskAuditSummary,
|
||||
getInspectableTaskRegistrySummary,
|
||||
@@ -156,19 +157,18 @@ type TaskSystemAuditFinding = {
|
||||
};
|
||||
|
||||
function compareSystemAuditFindings(left: TaskSystemAuditFinding, right: TaskSystemAuditFinding) {
|
||||
const severityRank = (severity: TaskSystemAuditSeverity) => (severity === "error" ? 0 : 1);
|
||||
const severityDiff = severityRank(left.severity) - severityRank(right.severity);
|
||||
if (severityDiff !== 0) {
|
||||
return severityDiff;
|
||||
}
|
||||
const leftAge = left.ageMs ?? -1;
|
||||
const rightAge = right.ageMs ?? -1;
|
||||
if (leftAge !== rightAge) {
|
||||
return rightAge - leftAge;
|
||||
}
|
||||
const leftCreatedAt = left.task?.createdAt ?? left.flow?.createdAt ?? 0;
|
||||
const rightCreatedAt = right.task?.createdAt ?? right.flow?.createdAt ?? 0;
|
||||
return leftCreatedAt - rightCreatedAt;
|
||||
return compareTaskAuditFindingSortKeys(
|
||||
{
|
||||
severity: left.severity,
|
||||
ageMs: left.ageMs,
|
||||
createdAt: left.task?.createdAt ?? left.flow?.createdAt ?? 0,
|
||||
},
|
||||
{
|
||||
severity: right.severity,
|
||||
ageMs: right.ageMs,
|
||||
createdAt: right.task?.createdAt ?? right.flow?.createdAt ?? 0,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
function formatAuditRows(findings: TaskSystemAuditFinding[], rich: boolean) {
|
||||
|
||||
@@ -24,6 +24,12 @@ export type TaskAuditSummary = {
|
||||
byCode: Record<TaskAuditCode, number>;
|
||||
};
|
||||
|
||||
type TaskAuditComparableFinding = {
|
||||
severity: TaskAuditSeverity;
|
||||
ageMs?: number;
|
||||
createdAt: number;
|
||||
};
|
||||
|
||||
export function createEmptyTaskAuditSummary(): TaskAuditSummary {
|
||||
return {
|
||||
total: 0,
|
||||
@@ -39,3 +45,20 @@ export function createEmptyTaskAuditSummary(): TaskAuditSummary {
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export function compareTaskAuditFindingSortKeys(
|
||||
left: TaskAuditComparableFinding,
|
||||
right: TaskAuditComparableFinding,
|
||||
): number {
|
||||
const severityRank = (severity: TaskAuditSeverity) => (severity === "error" ? 0 : 1);
|
||||
const severityDiff = severityRank(left.severity) - severityRank(right.severity);
|
||||
if (severityDiff !== 0) {
|
||||
return severityDiff;
|
||||
}
|
||||
const leftAge = left.ageMs ?? -1;
|
||||
const rightAge = right.ageMs ?? -1;
|
||||
if (leftAge !== rightAge) {
|
||||
return rightAge - leftAge;
|
||||
}
|
||||
return left.createdAt - right.createdAt;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
compareTaskAuditFindingSortKeys,
|
||||
createEmptyTaskAuditSummary,
|
||||
type TaskAuditCode,
|
||||
type TaskAuditFinding,
|
||||
@@ -74,17 +75,18 @@ function findTimestampInconsistency(task: TaskRecord): TaskAuditFinding | null {
|
||||
}
|
||||
|
||||
function compareFindings(left: TaskAuditFinding, right: TaskAuditFinding): number {
|
||||
const severityRank = (severity: TaskAuditSeverity) => (severity === "error" ? 0 : 1);
|
||||
const severityDiff = severityRank(left.severity) - severityRank(right.severity);
|
||||
if (severityDiff !== 0) {
|
||||
return severityDiff;
|
||||
}
|
||||
const leftAge = left.ageMs ?? -1;
|
||||
const rightAge = right.ageMs ?? -1;
|
||||
if (leftAge !== rightAge) {
|
||||
return rightAge - leftAge;
|
||||
}
|
||||
return left.task.createdAt - right.task.createdAt;
|
||||
return compareTaskAuditFindingSortKeys(
|
||||
{
|
||||
severity: left.severity,
|
||||
ageMs: left.ageMs,
|
||||
createdAt: left.task.createdAt,
|
||||
},
|
||||
{
|
||||
severity: right.severity,
|
||||
ageMs: right.ageMs,
|
||||
createdAt: right.task.createdAt,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export function listTaskAuditFindings(options: TaskAuditOptions = {}): TaskAuditFinding[] {
|
||||
|
||||
Reference in New Issue
Block a user