- 新增 GET /api/v1/admin/config-facts:记忆整理 7 键 + 安静时段 2 键的**进程生效值** + 声明默认值(反射读 default 标签,不读 .env) - 面板:记忆整理卡 + 安静时段卡(Miuix 只读),文案按新语义「只服务主动搭话,不静默回复」 - 后台思考行加 urgency(**只能是下限**,存档不可分 high/critical)+ quietHoursBypassed(与既有 bypassed 是两件事) - 红线实测:往响应里塞 JWT ⇒ TestAdminConfigFacts_NeverLeaksSecretValues 打红(连断言消息都把整个响应打出来了) - 前端:configFacts 24 checks / ConfigFactsCards 29 / BackthinkUrgencyTags 19 全过 - 契约 v0.68(纯增量:B12 新端点 + B8 两字段 + §4.10 形状与语义 + §7.4-17 下限限定)
63 lines
2.7 KiB
TypeScript
63 lines
2.7 KiB
TypeScript
import type { BackthinkItem } from "../../lib/types";
|
||
|
||
/**
|
||
* 后台思考行「紧急度 / 穿透安静时段」标记的**纯逻辑**(契约 v0.68 §4.10(b))。
|
||
*
|
||
* 后端 `urgency` 的语义是**存档可证的档位下限**(`warning` = 至少 high 档,可能更
|
||
* 高),不是精确档位;而窗口之外的轮次存档里没有档位,键**缺席**。因此本层:
|
||
* - 缺席 ⇒ 显示「档位未知」(**不是**「例常」——把未知画成事实就是这次要避免的坑);
|
||
* - 未知取值 ⇒ 原样显示后端给的词,不猜一个更好听的;
|
||
* - `quietHoursBypassed` 只在 true 时渲染「穿透安静时段」。
|
||
*/
|
||
|
||
export type UrgencyTagTone = "ok" | "warn" | "err" | "neutral" | "accent";
|
||
|
||
export interface UrgencyTag {
|
||
label: string;
|
||
tone: UrgencyTagTone;
|
||
/** 悬停说明(为什么是这个档位 / 为什么未知),给人看的口径。 */
|
||
hint: string;
|
||
}
|
||
|
||
/** 档位未知时的标签(键缺席 = 后端没有这个事实)。 */
|
||
export const URGENCY_UNKNOWN_LABEL = "档位未知";
|
||
|
||
/** 穿透安静时段的标签。 */
|
||
export const QUIET_HOURS_BYPASS_LABEL = "穿透安静时段";
|
||
|
||
/** urgencyTag 把后端 `urgency` 映射成标签;键缺席时给「档位未知」。 */
|
||
export function urgencyTag(item: Pick<BackthinkItem, "urgency">): UrgencyTag {
|
||
const level = item.urgency;
|
||
switch (level) {
|
||
case "routine":
|
||
return { label: "例常", tone: "neutral", hint: "安静时段内被扣下的轮次:档位低于 high,不穿透" };
|
||
case "warning":
|
||
return {
|
||
label: "紧急(≥ 高)",
|
||
tone: "warn",
|
||
hint: "安静时段内仍被放行 ⇒ 档位至少 high;记录里无法区分 high 与 critical,故显示下限",
|
||
};
|
||
case "critical":
|
||
return { label: "紧急·安全域", tone: "err", hint: "安全域事件(可穿透工作/忙碌与安静时段)" };
|
||
case undefined:
|
||
case "":
|
||
return {
|
||
label: URGENCY_UNKNOWN_LABEL,
|
||
tone: "neutral",
|
||
hint: "这一轮的档位在存档里不可证(轮次不在安静时段窗口内,记录不保存档位)——不是「例常」",
|
||
};
|
||
default:
|
||
return { label: level, tone: "neutral", hint: "后端给了本面板不认识的档位,原样显示" };
|
||
}
|
||
}
|
||
|
||
/** quietHoursBypassTag 只在后端确实标记了穿透时返回标签。 */
|
||
export function quietHoursBypassTag(item: Pick<BackthinkItem, "quietHoursBypassed">): UrgencyTag | null {
|
||
if (item.quietHoursBypassed !== true) return null;
|
||
return {
|
||
label: QUIET_HOURS_BYPASS_LABEL,
|
||
tone: "accent",
|
||
hint: "这一轮落在安静时段窗口内、但仍被放行发出(档位 ≥ high)",
|
||
};
|
||
}
|