Appearance
ADM-18 日別データ削除 管理画面
概要
- 誤インポートや想定外のデータ登録時に、指定した日付×ホールの台別データおよびインポート時に更新される派生データを削除する管理画面。
- 削除処理は
DailyDataImportService::delete_by_date_hall_pairs()経由で行い、インポート完了時と同じslot_kouryaku_daily_data_importedフックでサマリ・ランキングを再計算する。
外部インターフェース
管理画面 URL
| 項目 | 値 |
|---|---|
| URL | /wp-admin/admin.php?page=daily-data-delete-admin |
| メニュー名 | 日別データ削除 |
| 権限 | manage_options |
フォーム POST(同期)
POST admin.php?page=daily-data-delete-admin。
| パラメータ | 説明 |
|---|---|
ddd_action | delete のとき削除実行 |
ddd_date | 対象日(type="date") |
ddd_halls[] | 削除対象ホール(HallEnum value) |
Nonce フィールド: daily_data_delete_nonce(検証アクション: daily_data_delete_admin)
リダイレクト後クエリ(通知)
| クエリ | 内容 |
|---|---|
ddd_success | 1 / 0 |
ddd_msg | 表示文言(URL エンコード。esc_html して管理通知として出力) |
ddd_date | フォームに戻す日付(任意。URL エンコード。検証前の入力を乗せるため、生値だと後続クエリを壊す) |
URL は App\Util\AdminQueryUrl::build() で組み立てる。同クラスが値を rawurlencode() するため、呼び出し側は生値を渡す(rawurlencode() 済みの値を渡すと二重エンコードになり、受け取り側の sanitize_text_field() が %xx を削除して文言が消える)。
日付の形式が不正なときも入力値を ddd_date に載せて戻すが、入力欄は <input type="date"> のためブラウザは不正値を描画せず空表示になる。削除対象プレビューも 0 件になる。
削除対象
| データ | テーブル / 保存先 | 削除の仕組み |
|---|---|---|
| 台別 raw | db2023 | DailyDataPerUnitRepository::batch_delete_by_date_hall_pairs で直接 DELETE |
| 機種別サマリ | db_daily_article_kishu_single_day_summary | フック後の replace_all_for_hall_and_period(空行でクリア) |
| 台数変化 | db_daily_article_kishu_count_delta | 同上 + 翌日サマリが存在する場合は N+1 日カスケード再計算 |
| 事前計算ランキング | slot_precomputed_ranking | フック後の PrecomputedRankingComputer::compute_and_store |
| テンプレートキャッシュ | Transient | DailyArticleTemplateDataService による日付×ホール単位クリア |
フック実行順: AdminServiceProvider では Summary ハンドラを PrecomputedRanking より先に実行する。削除直後に陳腐化したサマリからランキングが再計算されるのを防ぐ。
削除対象外
| データ | テーブル | 理由 |
|---|---|---|
| 機種マスタ | db_kishu_master | インポート時は INSERT IGNORE のグローバルマスタ。他日付・他機能から FK 参照される |
| 表示マッピング | db_kishu_display_mapping | 生機種名単位のグローバルマッピング。他日付のインポートでも共有される |
機種マスタの孤立行 GC(削除対象日にのみ出現し他参照が無い場合のみ削除)は本画面では行わない。
実装参照
| 種別 | パス |
|---|---|
| 画面 | core_src/Admin/daily_data_delete/DailyDataDeleteAdminPage.php |
| メッセージ | core_src/Constants/DailyDataDeleteMessages.php |
| 削除 API | core_src/Service/daily_data_import_service/DailyDataImportService.php |
| バッチ設計 | docs/design/バッチ/daily-article-summary-batch.md |