Skip to content

ADM-011 min-repo HTML インポート管理画面 ​

概要 ​

  • min-repo.com への自動スクレイピングは行わず、管理者が通常のブラウザで取得した ?kishu=all ページ HTML のパースとインポートのみを行う。
  • インポート済みデータは CSV としてエクスポートできる。
  • 同じ取込(HTML 貼り付け → 紐付け確認 → 取込)を REST API-005 外部データ取込 REST(data-import/v1/min-repo/*)からも行える。HTML 検証・パース・紐付け保存・取込・履歴記録は画面と REST で同じ DailyDataHtmlImportService を通す。
  • Cookie 保存、補助 Cookie、本番転送、サーバー側取得は提供しない。

外部インターフェース ​

管理画面 URL ​

項目値
URL/wp-admin/admin.php?page=min-repo-data-admin
メニュー名min-repo HTML インポート
権限import_min_repo_html

権限とロール ​

画面表示・フォーム POST ともに Capability import_min_repo_html を要求する。

ロール付与される Capability
administrator既存権限に import_min_repo_html を追加
min_repo_importer(min-repo 取込担当)read, upload_files, import_min_repo_html, import_ana_slo_html
  • min_repo_importer は自動取込ボット等の専用アカウント向けで、責務は HTML 取込(min-repo / ana-slo。画面と REST)のみ。通常投稿・日別記事・有料記事の編集権限と manage_options は持たない。
  • 日別記事・有料記事の編集・公開は daily_article_editor_bot(日別記事編集bot)または editor 以上が担う。
  • min_repo_importer ロールと import_min_repo_html は AppCapabilityInstaller(init priority 0)が登録する。ロールごとの付与は権限管理画面(ADM-035)を正とする。旧定義で付与していた edit_posts / delete_posts / copy_posts は既存ロールから 1 度だけ外す(min_repo_importer_role_install_version option で管理)。administrator への import_min_repo_html 付与は毎回確認し、外れていれば補う。

フォーム POST(同期) ​

POST admin.php?page=min-repo-data-admin。

min_repo_html_import_action 値処理
import_htmlHTML パースと取込
export_csv取込済みデータ CSV 出力

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

HTML インポート POST パラメータ ​

フィールド説明
min_repo_date対象日付(YYYY-MM-DD / YYYYMMDD / YYYY/M/D)
min_repo_hall対象ホールキー
min_repo_html_valueページ HTML。JS 側で差枚テーブル周辺の最小 HTML に整形する
min_repo_html_encodedBase64 送信時は 1
min_repo_html_file.html / .htm ファイルアップロード
min_repo_delete_existing同じ日付・ホールの既存データを削除してから取り込む場合は 1

CSV エクスポート POST パラメータ ​

フィールド説明
min_repo_date対象日付
min_repo_hall対象ホールキー。空なら全件

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

クエリ内容
mri_success1 / 0
mri_msg表示文言(URL エンコード。esc_html して管理通知として出力)

URL は AdminQueryUrl::build() で組み立て、クエリ値のエンコードはそこで 1 回だけ行う。例外メッセージやバリデーションエラーをそのまま載せるため、& や # を含む文言でも後続クエリが壊れない。受け取り側は sanitize_text_field() で読む(%xx を削除するため、二重にエンコードすると文言が消える)。

複数のバリデーションエラーは空白でつなぐ。改行はクエリ経由では届かない(wp_sanitize_redirect() が %0a を落とす)ため、改行で連結すると通知上で区切りなくつながる。MinRepoMessages::HTML_VALIDATE_* はいずれも句点で終わるので、読点ではなく空白でつなぐ。通知は 1 行で出す。

データ ​

wp_options ​

キー説明
slot_kouryaku_min_repo_import_historyHTML 取込履歴(監査・再確認用。直近 50 件。管理画面に一覧表示)。min-repo / ana-slo、画面 / REST の取込を記録し、各行に取込元 source と実行ユーザー user_id を持つ(source の無い旧形式の行は min-repo 扱い)
slot_kouryaku_min_repo_legacy_options_cleaned旧 Cookie/転送認証 option のワンショット削除完了フラグ(1)

旧 option の削除 ​

管理画面 admin_init(manage_options)で未実施のとき、次のキーを delete_option() する。

  • slot_kouryaku_min_repo_scrape_cookie
  • slot_kouryaku_min_repo_supplemental_cookie
  • slot_kouryaku_min_repo_transfer_target_url
  • slot_kouryaku_min_repo_transfer_target_user
  • slot_kouryaku_min_repo_transfer_target_password
  • slot_kouryaku_min_repo_transfer_production_password
  • slot_kouryaku_min_repo_transfer_staging_password

取込履歴 option は削除しない。

取込履歴 UI ​

管理画面下部「取込履歴」に、直近 50 件を新しい順で表示する(取込日時・取込元・対象日・ホール・件数)。REST(API-005-4 GET /history)でも同じ履歴を取得できる。

エラー ​

条件ユーザー向け挙動メッセージ例
nonce 不正リダイレクトMessages::AUTH_FAILED
HTML 空リダイレクトMinRepoMessages::HTML_PLEASE_INPUT
HTML Base64 復元失敗リダイレクトMinRepoMessages::HTML_DECODE_FAILED
HTML 長さ超過リダイレクトMinRepoMessages::HTML_TOO_LONG
日付未入力・形式不正リダイレクトMinRepoMessages::DATE_PLEASE_INPUT
ホール未選択リダイレクトMinRepoMessages::HALL_PLEASE_SELECT
HTML バリデーション失敗リダイレクトMinRepoMessages::HTML_VALIDATE_*
パース結果 0 件リダイレクトMinRepoMessages::HTML_PARSE_EMPTY
同じ日付・ホールの取込が実行中(REST・ADM-020 を含む)リダイレクトMessages::DAILY_DATA_IMPORT_LOCKED
DB エラーで取込ロックを取れないリダイレクトMessages::DAILY_DATA_IMPORT_LOCK_UNAVAILABLE
CSV 日付未入力リダイレクトMinRepoMessages::EXPORT_DATE_REQUIRED

変更履歴(設計書) ​

日付(JST)変更内容コード側の対応
2026-04-21初版作成—
2026-07-07「対象ページを開く」ボタンの検証ログセクションを追加
2026-07-07試行2失敗(HTTP 401)を記録し、試行3(固定URL)を採用
2026-08-02Cookie/REST/転送/スクレイピングを削除し、HTML インポート化—
2026-08-02取込履歴 UI・上限、旧 Cookie/転送 option ワンショット削除
2026-08-09HTML インポート画面を維持しつつ旧 Cookie 由来の実装命名を廃止Issue #3185
2026-08-09通知クエリ mri_msg の URL エンコードを明記Issue #3182
2026-10-03REST(API-005)との共通処理化、取込履歴に取込元・実行ユーザーを追加Issue #3873