Appearance
機種(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.idFK) 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 / アナスロ)
確認画面では、取込元の機種名ごとに次の順で既存マスタを判定する。
- マッピングの
kishu_idがマスタに解決できる行は「紐づけ済み」。無効マスタの場合は一覧と選択肢に「(無効)」を付けて出し、そのまま既存として保存できる(状態は変えない) - マッピング未紐づけ(または紐づけ先のマスタが削除済み)でも、正規化キー(
KishuMasterNameUtil::to_lookup_key)が一致する有効マスタがあれば、そのマスタを既存として初期選択する - どちらにも当たらない行だけを未紐づけとして一覧に出す(初期値は新規登録)
「新規登録」を選んでも、照合順序(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)は現在提供していません。既存データの表示名変更・統合は機種マスタ管理画面で行います。