Newer
Older
client_dwatch / lib / format / raw-label.ts
/**
 * 生値ラベルの空値表示(指示書O / D-089)。
 *
 * D-077(エラー種別等の生値は変換しない)を維持したまま、値が「空である」場合だけ
 * その事実を示す代替文言に差し替える純粋関数。値が入っている場合は加工しない
 * (前後の空白のトリムのみ許容する。指示書O 禁止事項2「トリム以外の変換をしない」)。
 *
 * null / undefined / 空文字 / 空白のみ は同じ扱いにする(指示書O 段階2 仕様)。
 *
 * ★代替文言は `(値なし)` を採用★ — 「DBのカラムが空である」という事実だけを述べ、
 * 推測を含まない(D-077 の「推測でマッピングしない」に反しない)。
 * 「その他」は D-067(破棄済み)の「未知の値をその他に寄せる」方針と紛らわしく、
 * 「不明」は「エラーの内容が不明」とも読めてしまうため採らなかった(指示書O 3案比較)。
 *
 * ★DB アクセスなし・例外を投げない純粋関数。lib/judge/ には置かない★
 * (あちらは◎○△×等の評価ロジックの置き場所。こちらは表示整形。CLAUDE.md §9.1)。
 */

export const EMPTY_VALUE_LABEL = "(値なし)";

export function formatRawLabel(value: string | null | undefined): string {
  if (value == null) {
    return EMPTY_VALUE_LABEL;
  }
  const trimmed = value.trim();
  return trimmed === "" ? EMPTY_VALUE_LABEL : trimmed;
}