Files
EpicNext-Cms/src/lib/furni/studio-completeness.ts
T
Simo c389c3893d
CI / check (push) Successful in 52s
CI / deploy (push) Successful in 2m10s
CI / publish-container (push) Failing after 1m18s
feat(cms): improve catalog, editorial recovery and operations
2026-09-09 19:36:15 +02:00

39 lines
1.2 KiB
TypeScript

import {
type FurnitureInspection,
hasFurnitureConflict,
} from "./studio-inspection";
export type FurniturePartId =
| "sql"
| "catalog"
| "furnidata"
| "icon"
| "nitro";
export interface FurniturePart {
id: FurniturePartId;
status: "present" | "missing" | "unknown" | "conflict";
action: FurniturePartId | "recheck" | "audit" | null;
}
/** Report each required part without treating unavailable checks as missing data. */
export function furnitureCompleteness(
local: FurnitureInspection,
): FurniturePart[] {
const conflict = hasFurnitureConflict(local);
const evidence: Array<[FurniturePartId, boolean | null]> = [
["sql", local.sql.length > 0],
["catalog", local.catalog.length > 0],
["furnidata", local.furnidataReadable ? local.furnidata.length > 0 : null],
["icon", local.icon.exists],
["nitro", local.nitro.exists],
];
return evidence.map(([id, present]) => {
if (conflict && (id === "sql" || id === "furnidata"))
return { id, status: "conflict", action: "audit" };
if (present === null) return { id, status: "unknown", action: "recheck" };
return {
id,
status: present ? "present" : "missing",
action: present ? null : id,
};
});
}