Skip to content

機種(kishu)表示用文言マッピング ​

概要 ​

みんレポ由来の機種名と本サイトの表記を統一するため、表示用文言マッピング(データ文字列 → 機種マスタ ID)を導入している。

  • データ文字列: みんレポ・CSV 等のデータソースに含まれる機種名
  • 表示用機種: db_kishu_master の ID(kishu_id)。公開画面の表示名はマスタの name を JOIN して解決する

マッピングはインポート時の kishu_id 振り分けにのみ使用する。 インポート後の機種名変更・統合は機種マスタ管理画面(rename / merge)で行う。

マッピングの定義 ​

  • 定義場所: DB テーブル db_kishu_display_mapping(接頭辞付きでは例: wp_db_kishu_display_mapping)
  • カラム: data_kishu(データ文字列), kishu_id(表示用機種・db_kishu_master.id FK)
  • data_kishu の保存値: ソース由来の表記(空白・ハイフン等を含む正規化前)。HTML 取込・管理画面とも trim のみ行い、正規化後の文字列をキーとして保存しない。
  • 照合: 存在判定・表示解決時のみ KishuNormalizer で正規化したキーを使う
  • ヒートマップ略称: db_kishu_master.heatmap_abbreviation で管理(機種マスタ管理画面 ADM-017)
  • 管理画面での編集: WordPress 管理画面の「設定」→「機種表示マッピング」から、一覧・追加・編集・削除が可能。
  • 一覧の警告表示:
    • kishu_id 未設定(または有効マスタ未解決)は「未紐づけ」と表示する。
    • 正規化キーが他行と同一の行は「正規化キー重複」と表示する。どの行が参照されるかは照合経路により異なる(表示解決と kishu_id 解決で優先が一致しない場合あり)。最小 id は整理の目安として表示するのみ。削除前に表示名・kishu_id を確認する。
  • テーブル作成手順: kishu-display-mapping-table-production.md。DDL 正本は KishuDisplayMappingInstaller.php を参照。

初期データ投入 ​

初回テーブル作成後、既存の日別データ(db2023)に存在する機種名を初期データとして一括投入します。 data_kishu に対応する kishu_id は db_kishu_master から解決して登録し、差異が生じた時点で差分エントリを追加・編集します。

本番環境での具体的な SQL 手順は kishu-display-mapping-table-production.md を参照(スキーマは kishu_id FK 化後の定義に合わせて更新が必要な場合あり)。

インポート時の変換 ​

CSV インポート時、保存直前に KishuDisplayMappingService がマッピングを参照し、業務テーブルへ kishu_id を振り分ける。表示時は kishu_id とマスタ JOIN で表示名を解決する。

HTML 取込時の紐づけ確認(min-repo / アナスロ) ​

確認画面では、取込元の機種名ごとに次の順で既存マスタを判定する。

  1. マッピングの kishu_id がマスタに解決できる行は「紐づけ済み」。無効マスタの場合は一覧と選択肢に「(無効)」を付けて出し、そのまま既存として保存できる(状態は変えない)
  2. マッピング未紐づけ(または紐づけ先のマスタが削除済み)でも、正規化キー(KishuMasterNameUtil::to_lookup_key)が一致する有効マスタがあれば、そのマスタを既存として初期選択する
  3. どちらにも当たらない行だけを未紐づけとして一覧に出す(初期値は新規登録)

「新規登録」を選んでも、照合順序(uk_name)上同じ名前の行が既にあれば、無効マスタを含めてその ID を再利用する。取込確認で無効マスタを再利用した場合は有効に戻す(共通の KishuMasterResolverService は有効化しないため、新台情報の紐付け画面では従来どおり「同名の無効マスタ」として拒否される)。紐づけの保存はトランザクション内で行い、途中の 1 件で失敗した場合は先行分のマスタ登録・マッピングも残さない。保存後(成功・失敗とも)に機種マスタとマッピングの読み取りキャッシュを破棄する。

機種名の変更・統合(インポート後) ​

マッピング変更だけでは既存の登録データ(db2023 等)は更新されない。表示名の変更や機種の統合は 機種マスタ管理画面(設定 → 機種マスタ)の rename / merge で行う。

操作画面説明
名称変更機種マスタ管理(rename)マスタ name を変更し、参照する業務テーブルの表示を更新する
統合機種マスタ管理(merge)複数機種を1つにまとめ、業務4テーブルの kishu_id を差し替える

設計詳細: ADM-017 機種マスタ管理画面

管理画面の補助機能 ​

「設定 → 機種表示マッピング」では、マッピング CRUD に加えて次の操作が可能。

  • 機種マスタへ投入(seed_kishu_master): マッピングの表示用文字列を db_kishu_master に投入する。既存名称はスキップされる。
  • マスタサジェスト: データ文字列入力時に機種マスタ候補を表示する(フロント JS)。

「登録データに反映」機能(KishuDisplayMigrationService / WP-CLI migrate-to-display)は現在提供していません。既存データの表示名変更・統合は機種マスタ管理画面で行います。