feat(portal): add rule-based risk narrative

This commit is contained in:
igor04091968
2026-06-07 15:46:38 +03:00
parent 5277097032
commit 8fcb49f2c7
8 changed files with 1369 additions and 8 deletions
@@ -73,6 +73,13 @@ async function main() {
assert(Array.isArray(kpiExplain.json?.factors), "KPI explain must include factors");
assert(kpiExplain.json.factors.some((item) => item.name === "productive_activity"), "KPI explain factors must be deterministic");
const riskNarrative = await request("/api/risk/narrative?role=executive");
assert(riskNarrative.response.status === 200, "Risk narrative must return 200");
assert(typeof riskNarrative.json?.risk_score === "number", "Risk narrative must include risk_score");
assert(["low", "guarded", "medium", "high", "critical"].includes(riskNarrative.json?.risk_level), "Risk narrative must include stable risk_level");
assert(Array.isArray(riskNarrative.json?.why), "Risk narrative must include why list");
assert(riskNarrative.json?.model?.type === "rule_based", "Risk narrative must be rule-based");
console.log(JSON.stringify({
ok: true,
baseUrl,
@@ -84,6 +91,7 @@ async function main() {
"query limits",
"role gates",
"/api/workforce/kpi/explain",
"/api/risk/narrative",
],
}, null, 2));
}