Appearance
ADM-037 おすすめ案承認
概要
- おすすめ台担当 bot が API-009 PUT
/recommend/v1/drafts/{hall}/{date}で保存したおすすめ案(db_recommendation_draft)を一覧・詳細で確認し、承認または却下する。 - サイト運営ダッシュボード(ADM-019)配下のサブメニュー。開けるのは
manage_optionsを持つ管理者だけ。 - 承認・却下した案(
statusがapproved/rejected)は bot から上書きできない(API-009 は 409 を返す)。 - 記事への反映・公開はこの画面では行わない。
ワイヤーフレーム
未作成。一覧は WordPress 標準の widefat テーブルと絞り込みフォーム、詳細は form-table と台一覧テーブル、承認・却下ボタンで構成する。
画面仕様
一覧(rda_view なし)
| ブロックID | ブロック名 | 表示内容 | 初期値 | ユーザー操作 | アクション |
|---|---|---|---|---|---|
B-1 | 説明 | 画面の用途説明(RecommendDraftAdminCopy::INTRO) | 固定文言 | - | - |
B-2 | 絞り込み | ホール(ana-slo 対象ホール)、状態(下書き/承認済み/却下)、対象日(から・まで) | すべて | 選択・入力・送信 | GET |
B-3 | 一覧 | 対象日、ホール、状態、台数、手法(method_version)、最終保存(保存ユーザー名と日時)、承認・却下した人、詳細リンク | 対象日の新しい順 | 詳細リンク | - |
B-4 | ページ送り | 件数・ページ番号と前へ・次へ(30 件ずつ) | 1 ページ目 | リンク | - |
絞り込みの不正値(対象外ホール、未知の状態、存在しない日付)は無視して「すべて」として扱う。
詳細(rda_view={id})
| ブロックID | ブロック名 | 表示内容 | 表示条件 | ユーザー操作 | アクション |
|---|---|---|---|---|---|
B-5 | 案の情報 | 対象日、ホール、状態、手法、最終保存、保存回数(revision)、承認・却下した人、メモ | 常に表示 | - | - |
B-6 | 台一覧 | 順位、台番号、機種 ID、スコア、理由コード、理由 | 常に表示 | - | - |
B-7 | 承認・却下 | [承認する] [却下する] と補足(DECIDE_HELP) | status = draft | ボタン押下 | A-1 |
note と reason_text は bot が送った文字列をそのまま保存しているため、表示時は必ず esc_html でエスケープする。存在しない ID は NOT_FOUND を表示する。
処理連携仕様
アクション一覧
A-1
同じ画面への POST(load-{hook} で maybe_process_form())。manage_options と nonce(action recommend_draft_admin、field recommend_draft_admin_nonce)を確認し、RecommendDraftAdminServiceInterface::decide() を呼ぶ。
詳細を開いたときの revision を hidden で送り、UPDATE ... WHERE id = %d AND status = 'draft' AND revision = %d で書き換える。画面を開いたあとに bot が上書き(revision が増える)していた場合や、別の管理者が先に承認・却下していた場合は 0 行更新となり、行を読み直して理由を通知する。承認・却下のとき approved_by に操作した管理者の ID を入れる(却下でも同じ列を使う)。
リクエスト
| requestParam | 本画面の値 |
|---|---|
recommend_draft_admin_nonce | recommend_draft_admin の nonce |
rda_action | approve / reject |
rda_id | 案の ID |
rda_revision | 詳細を開いたときの revision |
レスポンス
admin.php?page=recommend-draft-admin&rda_view={id} へリダイレクトし、rda_success(1 / 0)と rda_msg で通知を出す。rda_id がない・不正なときと nonce 不正のときは、rda_view なしの一覧へ戻る。
| 結果 | 通知(RecommendDraftAdminCopy) |
|---|---|
| 承認 | APPROVED |
| 却下 | REJECTED |
| 案がない | NOT_FOUND |
| すでに承認・却下済み | ALREADY_DECIDED |
| 画面を開いたあとに bot が上書きした | STALE |
| 操作・ID・revision の指定が不正 | INVALID |
| DB 更新の失敗 | FAILED |
| nonce 不正 | Messages::AUTH_FAILED |
外部インターフェース
管理画面 URL
| 項目 | 値 |
|---|---|
| URL | /wp-admin/admin.php?page=recommend-draft-admin |
| page slug | recommend-draft-admin |
| 親メニュー | site-ops-dashboard(ADM-019) |
関連
- REST: API-009 おすすめ台 REST(API-009-1 GET
/drafts、API-009-2 PUT/drafts/{hall}/{date}) - テーブル:
db_recommendation_draft(custom-tables.dbml) - 実装:
core_src/Admin/recommend_draft/RecommendDraftAdminPage.php、core_src/Service/recommend_draft_admin_service/RecommendDraftAdminService.php - Issue #3900