/**
* レポートの KPI カードの前期比(矢印・数・色)。★丸めた数が 0 なら「→」・色なし★(指示書BC 5-3。D-183)—
* 施設別パフォーマンスの「変化」(`diffText()` / `diffTone()`)と同じ考え方。旧: 生値の符号で「▼0%」を改善の色で出していた。
* ★期待値表は `lib/format/__tests__/kpi-delta.test.ts`★(K1〜K8)。
*/
export interface KpiDeltaView {
arrow: "▲" | "▼" | "→";
/** 表示する数(%。整数に丸めた絶対値) */
percent: number;
/** good = 改善 / bad = 悪化 / neutral = 横ばい */
tone: "good" | "bad" | "neutral";
}
export function kpiDeltaView(diff: number, betterWhenHigher: boolean): KpiDeltaView {
const percent = Math.round(Math.abs(diff));
if (percent === 0) return { arrow: "→", percent: 0, tone: "neutral" };
return {
arrow: diff > 0 ? "▲" : "▼",
percent,
tone: diff > 0 === betterWhenHigher ? "good" : "bad",
};
}