/**
* アラート(事前チェック)の種別ラベルの組み立て(純粋関数)。
*
* ★固定ラベル(`precheck_1h` → 「1h前異常」)をやめた理由★(D-105 / D-093 項2):
* `clean_timetables.precheck` は ★設定値に応じた任意の分数★ を取りうる
* (ユーザー回答: 「20だったら20分前になります」)。分数ごとの enum も
* 分数ごとの固定ラベルも持てないので、`precheck_minutes`(数値)から組み立てる。
*
* ★画面(`components/features/alerts/AlertsScreen.tsx`)から切り出してある理由★:
* 「20分前異常」のような**設定値以外の分数**が本当にラベルになるかは
* 本指示書の完了条件(指示書S 完了条件7)であり、目視だけでは固定できない。
* 純粋関数にしてテストで固定する(`CLAUDE.md` §6-2)。
*/
import type { PrecheckItem } from "@/lib/types";
/** `useTheme()` が渡す翻訳関数と同じ形(`components/theme/ThemeProvider.tsx`) */
export type Translate = (text: string) => string;
/**
* `precheck_minutes` から種別ラベル(「◯分前異常」)を作る。
*
* ★i18n は方式A(プレースホルダ + replace)★ — `lib/i18n.ts` はキーが日本語原文の
* 完全一致なので、数値が混ざる文言はそのままキーにできない。
* 前例は `"{n}分前"` / `"第{n}回チェック"`(同ファイル)。
*
* ★アラートは事前チェック異常だけ★(ユーザー判断 2026-10-29)— 旧「出発失敗」のラベルと、
* `precheck_minutes` が `null` のときの「事前チェック異常」への退避は消した
* (`null` は出発失敗の行にしか無く、型からも外した)。
*/
export function precheckSeverityLabel(
t: Translate,
item: Pick<PrecheckItem, "precheck_minutes">
): string {
return t("{n}分前異常").replace("{n}", String(item.precheck_minutes));
}