Refine terminal history scrolling and job failure summaries
This commit is contained in:
@@ -67,6 +67,20 @@ describe("operations console contracts", () => {
|
||||
expect(summaries.find((item) => item.instance.id === "job-failed")?.failedJobs).toBe(1);
|
||||
});
|
||||
|
||||
it("does not count failed jobs older than the latest healthy server projection", () => {
|
||||
const summaries = summarizeServerOperations(
|
||||
[server("recovered", "running", "2026-07-18T10:10:00Z")],
|
||||
new Map(),
|
||||
[
|
||||
job("old-failed-start", "failed", "2026-07-18T10:03:00Z", "recovered"),
|
||||
job("healthy-start", "succeeded", "2026-07-18T10:10:00Z", "recovered")
|
||||
]
|
||||
);
|
||||
|
||||
expect(summaries[0]?.failedJobs).toBe(0);
|
||||
expect(summaries[0]?.latestJob?.id).toBe("healthy-start");
|
||||
});
|
||||
|
||||
it("summarizes only endpoint-safe capacity and status values", () => {
|
||||
const endpoints: RunEndpointResponse[] = [
|
||||
{
|
||||
|
||||
@@ -85,13 +85,22 @@ export function summarizeServerOperations(
|
||||
instance,
|
||||
metrics: metrics.get(instance.id),
|
||||
activeJobs: serverJobs.filter(isActiveJob).length,
|
||||
failedJobs: serverJobs.filter((job) => job.state === "failed").length,
|
||||
failedJobs: currentFailedJobsForServer(instance, serverJobs).length,
|
||||
latestJob: serverJobs[0]
|
||||
};
|
||||
})
|
||||
.sort(compareServerOperations);
|
||||
}
|
||||
|
||||
function currentFailedJobsForServer(instance: ServerInstanceResponse, jobs: JobResponse[]): JobResponse[] {
|
||||
const failedJobs = jobs.filter((job) => job.state === "failed");
|
||||
if (instance.state === "failed") {
|
||||
return failedJobs;
|
||||
}
|
||||
const instanceUpdatedAt = timestamp(instance.updatedAt);
|
||||
return failedJobs.filter((job) => timestamp(job.terminalAt ?? job.updatedAt) >= instanceUpdatedAt);
|
||||
}
|
||||
|
||||
export function summarizeEndpointOperations(endpoints: RunEndpointResponse[]): EndpointOperationsSummary {
|
||||
return endpoints.reduce<EndpointOperationsSummary>(
|
||||
(summary, endpoint) => ({
|
||||
|
||||
Reference in New Issue
Block a user