Appearance
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(initpriority 0)が登録する。ロールごとの付与は権限管理画面(ADM-035)を正とする。旧定義で付与していたedit_posts/delete_posts/copy_postsは既存ロールから 1 度だけ外す(min_repo_importer_role_install_versionoption で管理)。administrator へのimport_min_repo_html付与は毎回確認し、外れていれば補う。
フォーム POST(同期)
POST admin.php?page=min-repo-data-admin。
min_repo_html_import_action 値 | 処理 |
|---|---|
import_html | HTML パースと取込 |
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_encoded | Base64 送信時は 1 |
min_repo_html_file | .html / .htm ファイルアップロード |
min_repo_delete_existing | 同じ日付・ホールの既存データを削除してから取り込む場合は 1 |
CSV エクスポート POST パラメータ
| フィールド | 説明 |
|---|---|
min_repo_date | 対象日付 |
min_repo_hall | 対象ホールキー。空なら全件 |
リダイレクト後クエリ(通知)
| クエリ | 内容 |
|---|---|
mri_success | 1 / 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_history | HTML 取込履歴(監査・再確認用。直近 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_cookieslot_kouryaku_min_repo_supplemental_cookieslot_kouryaku_min_repo_transfer_target_urlslot_kouryaku_min_repo_transfer_target_userslot_kouryaku_min_repo_transfer_target_passwordslot_kouryaku_min_repo_transfer_production_passwordslot_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-02 | Cookie/REST/転送/スクレイピングを削除し、HTML インポート化 | — |
| 2026-08-02 | 取込履歴 UI・上限、旧 Cookie/転送 option ワンショット削除 | |
| 2026-08-09 | HTML インポート画面を維持しつつ旧 Cookie 由来の実装命名を廃止 | Issue #3185 |
| 2026-08-09 | 通知クエリ mri_msg の URL エンコードを明記 | Issue #3182 |
| 2026-10-03 | REST(API-005)との共通処理化、取込履歴に取込元・実行ユーザーを追加 | Issue #3873 |