Appearance
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-DD。hall_slug とセットで指定したとき、保存成功後に pworld_hall_day_thumbnail を upsert(日別ホールサムネの手動更新・自動生成サムネの差し替え用) |
hall_slug | 省略可。HallEnum のスラッグ。上記とセットでのみ有効 |
初期表示時、article_target_date / hall_slug は pworldImageCaptureAdmin.hallContext としてフロントへ渡り、保存 POST でも同じ値が付与される。
admin-ajax(HTTP 契約)
すべて POST /wp-admin/admin-ajax.php、manage_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-DD。hall_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_slugがHallEnumに解決できない場合、error_logのみでサムネ upsert はスキップする(メディア保存の成功レスポンスは変えない)。article_target_dateがYYYY-MM-DD形式でない、または暦上存在しない日付の場合も同様にログのみでスキップ。
成功時 data に attachment_id, url, id(メタ行 ID)等を返す。
アセット
Admin/pworld_archive/assets/build/pworld-image-capture.js等が存在しない場合、画面上でビルド未配置のエラー通知を表示し操作不可。
エラー
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
manage_options なし | wp_die | Messages::PERMISSION_DENIED |
| nonce 不正 | JSON エラー | 認証失敗(AdminAjaxNonceVerifier) |
| メール ID 未指定(GET) | 警告表示 | PworldArchiveCopy::PWORLD_IMAGE_CAPTURE_MAIL_REQUIRED |
image_data 空 | JSON エラー | 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 エラー | サービス返却メッセージ / アップロード失敗メッセージ |