Skip to content

ADM-031 メーカーマスタ管理画面 ​

概要 ​

  • db_maker_master の一覧・新規登録・名称変更・統合(merge)・無効化を行う専用管理画面。
  • WordPress 設定サブメニューとして登録。操作はすべて 同一 URL への POST(リダイレクト+クエリ通知)。admin-ajax は使用しない。
  • rename / merge / 無効化は確認ダイアログ必須。merge 実行前に影響件数プレビュー(ドライラン)を表示できる。
  • パチスロメーカー名の正本マスタ。機種マスタ(db_kishu_master)が maker_id で参照する。

外部インターフェース ​

管理画面 URL ​

項目値
URL/wp-admin/options-general.php?page=maker-master-admin
メニュー名メーカーマスタ
権限manage_options

フォーム POST(同期 CRUD / merge) ​

POST options-general.php?page=maker-master-admin。

maker_master_action 値処理
add新規登録(upsert_by_names、重複は uk_name で拒否)
rename名称変更(update_name、確認ダイアログ必須)
deactivate無効化(is_active = 0、確認ダイアログ必須)
merge_preview統合の影響件数プレビュー(ドライラン)
merge統合実行(機種マスタの maker_id 差し替え+旧行 DELETE、確認必須)
update_row一覧のインライン更新(メーカー名)

Nonce フィールド: maker_master_nonce(検証アクション: maker_master_admin)

主な POST パラメータ ​

フィールド操作説明
maker_master_idrename / deactivate対象 ID
maker_master_nameadd / renameメーカー名(必須、最大 255 文字)
maker_master_source_idmerge_preview / merge統合元 ID
maker_master_target_idmerge_preview / merge統合先 ID
maker_master_submit_tokenadd再送対策トークン(画面描画ごとに発行する 32 桁の 16 進文字列)

新規登録の二重送信・再送 ​

登録ボタンの連打や接続切断後のブラウザ再送で同じ POST が重ねて届いても、成功した登録に重複エラーを表示しない。

状況処理通知
送信中に再度 submit したJS が 2 回目の submit を止め、送信開始後に submit ボタンを無効化する(共通 master_admin_ui.js)。中止・通信失敗でページが残ったときは 15 秒後、bfcache 復帰時はすぐに解除する—
同じトークン・同じメーカー名の POST が再送された先行リクエストが成功していれば、その結果(10 分保持)を返し、登録処理は実行しない最初の結果と同じ
先行リクエストの処理中に再送が届いた最大約 3 秒、先行リクエストの結果を待って返す(処理中の印は最長 60 秒で消える)先行の結果。待ちきれないときは ADD_IN_PROGRESS
先行リクエストが失敗した(必須・重複・DB 障害など)失敗の結果は保持しないため、再送では登録処理をもう一度実行する(入力に起因する失敗は同じ結果になり、一時的な失敗は再試行になる)登録処理の結果
画面を開き直して(新しいトークンで)同じ名前を登録した通常どおり登録処理を実行するADD_DUPLICATE
トークンが無い・形式不正、または保存先が DB エラー再送対策をせず登録処理を実行する登録処理の結果

処理中の印と処理結果は wp_options の 1 行(_submit_result_ + md5、autoload しない)に「期限|中身」で置く。処理中の印は INSERT IGNORE で原子的に確保し、読み書きはオブジェクトキャッシュを通さず DB を直接読む(transient / get_option() は同じリクエスト内ではキャッシュした最初の値を返すため、待っている間に先行リクエストの結果を読めない)。期限切れの行は次に確保したときに消す。どの経路でも行の重複は uk_name が防ぐ。

画面内の POST フォームはすべて同一 URL への POST → リダイレクト(PRG)で画面を描き直す前提で、JS のロックは送信成功時のページ遷移で外れる。

リダイレクト後クエリ(通知) ​

クエリ内容
mm_success1 / 0
mm_msg表示文言(URL エンコード)

編集・プレビュー用 GET ​

GET パラメータ説明
mm_edit名称変更対象 ID
mm_searchメーカー名部分一致検索
mm_merge_preview1 のときプレビュー結果表示
mm_source_idプレビュー対象の統合元 ID
mm_target_idプレビュー対象の統合先 ID

一覧 URL のエンコード ​

ソートリンク・編集リンクとリダイレクト先はいずれも build_list_page_url() が組み立てる。add_query_arg() は値をエンコードしないため、AdminQueryUrl が渡された生値を 1 回だけ URL エンコードする(通知の mm_msg も同じ扱い)。

データ ​

テーブル: db_maker_master ​

カラム説明
id主キー
nameメーカー名(uk_name)
is_active有効フラグ
created_at / updated_atタイムスタンプ

一覧の参照件数サマリ ​

列名参照先
kishudb_kishu_master.maker_id 参照件数

merge 時の業務テーブル更新 ​

MakerIdBackfillRepository により次のテーブルを更新する。

  • db_kishu_master(maker_id を統合元から統合先へ差し替え)

更新後、MakerMasterRepository::delete_by_id で統合元マスタ行を物理削除する。

プレビューでは機種マスタの参照件数を表示する。

エラー ​

条件ユーザー向け挙動メッセージ / ログ
nonce 不正リダイレクト+エラーMessages::AUTH_FAILED
必須項目空・長さ超過リダイレクト+エラーMakerMasterAdminMessages::*
名称重複リダイレクト+エラーADD_DUPLICATE
新規登録の再送が先行処理を待ちきれないリダイレクト+エラーADD_IN_PROGRESS
merge 同一 IDリダイレクト+エラーMERGE_SAME_ID
merge DB 失敗リダイレクト+エラーMERGE_FAILED(ErrorHandler にログ)