feat: add sveltekit pages, generate reports
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import type {
|
||||
ReportRoot,
|
||||
PerTaskRow,
|
||||
ScenarioName,
|
||||
} from "@duck/types";
|
||||
import { SCENARIO_NAMES, SCENARIO_LABELS, SCENARIO_DESCS } from "@duck/types";
|
||||
|
||||
export { SCENARIO_NAMES, SCENARIO_LABELS, SCENARIO_DESCS };
|
||||
|
||||
export interface RowViewModel extends PerTaskRow {
|
||||
model: string;
|
||||
}
|
||||
|
||||
export function extractPerTask(report: ReportRoot): RowViewModel[] {
|
||||
return Object.entries(report.models).flatMap(([model, rep]) =>
|
||||
rep.perTask.map((row) => ({ ...row, model })),
|
||||
);
|
||||
}
|
||||
|
||||
export function modelShort(name: string): string {
|
||||
const [base, ver] = String(name).split(":");
|
||||
return ver ? `${base}:${ver}` : base;
|
||||
}
|
||||
|
||||
export type PctTone = "safe" | "warn" | "bad";
|
||||
|
||||
export function pctTone(p: number): PctTone {
|
||||
return p >= 70 ? "safe" : p >= 40 ? "warn" : "bad";
|
||||
}
|
||||
|
||||
export function getReviewTotals(report: ReportRoot): { reviewed: number; pending: number } {
|
||||
let reviewed = 0;
|
||||
let pending = 0;
|
||||
for (const rep of Object.values(report.models)) {
|
||||
for (const s of SCENARIO_NAMES) {
|
||||
const g = rep.scenarios[s];
|
||||
if (g) {
|
||||
reviewed += g.reviewed || 0;
|
||||
pending += g.pending || 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return { reviewed, pending };
|
||||
}
|
||||
|
||||
export function scenarioOrder(): ScenarioName[] {
|
||||
return [...SCENARIO_NAMES];
|
||||
}
|
||||
Reference in New Issue
Block a user