Skip to content

ADM-002 P-WORLD画像キャプチャ管理画面

概要

  • P-WORLD メール本文から画像化する範囲を選択し、キャプチャ画像をメディアライブラリへ保存する管理画面。
  • pworld-archive-admin 配下のサブメニューとして登録。フロントはビルド済み React(pworld-image-capture)で、メール本文取得と保存は admin-ajax 経由。
  • メール詳細取得は ADM-001 と同一の pworld_archive_mail_detail を利用する。保存専用の pworld_capture_save_image を本画面から呼び出す。
  • メール取り込み時に自動で張られる日別ホールサムネイルの ソース画像選定は本画面の操作ではなく、ADM-001メイン画像 ルールに従う(手動キャプチャはユーザーが範囲指定したピクセルをそのまま保存する)。
  • クエリ mail_ids[] または後方互換の mail_id で対象メール ID を渡す。先頭最大 3 件まで有効(超過分は切り捨て警告)。

外部インターフェース

管理画面 URL

項目
URL/wp-admin/admin.php?page=pworld-image-capture
メニュー名画像キャプチャ(親: P-WORLDメールアーカイブ)
権限manage_options

GET クエリ(初期表示)

パラメータ説明
mail_idsメール ID の配列。正の整数に正規化し重複除去・昇順ソート。最大 3 件まで使用、超過時は先頭 3 件のみ+警告表示
mail_id単一 ID(後方互換)。mail_ids 未指定時に解釈される
article_target_date省略可。記事対象日 YYYY-MM-DDhall_slug とセットで指定したとき、保存成功後に pworld_hall_day_thumbnail を upsert(日別ホールサムネの手動更新・自動生成サムネの差し替え用)
hall_slug省略可。HallEnum のスラッグ。上記とセットでのみ有効

初期表示時、article_target_date / hall_slugpworldImageCaptureAdmin.hallContext としてフロントへ渡り、保存 POST でも同じ値が付与される。

admin-ajax(HTTP 契約)

すべて POST /wp-admin/admin-ajax.phpmanage_options 権限+各 action 名を nonce アクションとして発行した nonce 必須。

action説明
pworld_archive_mail_detailメール HTML 等の詳細取得(ADM-001 と共通。詳細は EP-一覧 EP-003)
pworld_capture_save_imageキャプチャ画像のメディア保存(本画面専用。エンドポイント個別 MD は未整備)

pworld_capture_save_image 主な POST パラメータ

フィールド説明
image_data画像データ(必須。空はエラー)
selections選択矩形の JSON 配列(各要素に id, x, y, width, height
mail_ids / mail_id関連付けるメール ID。1〜3 件。超過はエラー
format画像形式(省略時 jpeg
quality品質 1〜100(1 未満は 85、100 超は 100 に補正)
article_target_date省略可。GET と同じく YYYY-MM-DDhall_slug と両方そろったときのみ日別ホールサムネを更新
hall_slug省略可。GET と同じく HallEnum スラッグ

日別ホールサムネ更新(article_target_date + hall_slug 指定時)

  • メディア保存・pworld_capture_image 行の作成は従来どおり。
  • 追加で PworldHallDayThumbnailRepository::upsert により article_target_date × 正規化ホール名の行の attachment_id を、今回保存した添付 ID に更新する。
  • 更新前の添付に post_meta PworldArchiveMediaMeta::HALL_DAY_THUMBNAIL_AUTO_GEN_META_KEY(自動生成フラグ)がある場合のみ、旧添付を wp_delete_attachment で削除する。手動キャプチャのみの旧サムネは削除しない。
  • hall_slugHallEnum に解決できない場合、error_log のみでサムネ upsert はスキップする(メディア保存の成功レスポンスは変えない)。
  • article_target_dateYYYY-MM-DD 形式でない、または暦上存在しない日付の場合も同様にログのみでスキップ。

成功時 dataattachment_id, url, id(メタ行 ID)等を返す。

アセット

  • Admin/pworld_archive/assets/build/pworld-image-capture.js 等が存在しない場合、画面上でビルド未配置のエラー通知を表示し操作不可。

エラー

条件ユーザー向け挙動メッセージ / ログ
manage_options なしwp_dieMessages::PERMISSION_DENIED
nonce 不正JSON エラー認証失敗(AdminAjaxNonceVerifier
メール ID 未指定(GET)警告表示PworldArchiveCopy::PWORLD_IMAGE_CAPTURE_MAIL_REQUIRED
image_dataJSON エラーPworldArchiveCopy::PWORLD_CAPTURE_SAVE_NO_IMAGE_DATA
selections JSON 不正JSON エラーPworldArchiveCopy::PWORLD_CAPTURE_SAVE_SELECTION_JSON_INVALID
メール ID 件数超過JSON エラーPworldArchiveCopy::PWORLD_CAPTURE_SAVE_TOO_MANY_MAIL_IDS
保存サービス失敗JSON エラーサービス返却メッセージ / アップロード失敗メッセージ