mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-19 02:33:43 +08:00
35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import { log } from './log.mjs';
|
|
|
|
const validStatus = new Set(['PASS', 'FAIL', 'WARN', 'SKIP', 'INFO']);
|
|
const validSeverity = new Set(['critical', 'high', 'medium', 'low', 'info']);
|
|
|
|
export function finding(ctx, input) {
|
|
const item = {
|
|
id: input.id,
|
|
category: input.category || 'general',
|
|
title: input.title,
|
|
status: validStatus.has(input.status) ? input.status : 'INFO',
|
|
severity: validSeverity.has(input.severity) ? input.severity : 'info',
|
|
expected: input.expected ?? null,
|
|
actual: input.actual ?? null,
|
|
reason: input.reason || '',
|
|
impact: input.impact || '',
|
|
remediation: input.remediation || '',
|
|
evidence: input.evidence || [],
|
|
durationMs: Math.round(input.durationMs || 0),
|
|
at: new Date().toISOString(),
|
|
};
|
|
ctx.findings.push(item);
|
|
log(ctx, item.status === 'FAIL' ? 'error' : 'info', item.id, item.title, {
|
|
status: item.status,
|
|
severity: item.severity,
|
|
actual: item.actual,
|
|
reason: item.reason,
|
|
});
|
|
return item;
|
|
}
|
|
|
|
export function hasFailures(ctx) {
|
|
return ctx.findings.some((item) => item.status === 'FAIL');
|
|
}
|