Skip to content

ADM-001-6 pworld_mail_bulk_save_article_links

← EP-一覧 · 共通前提

概要

一覧上の複数行を一括して記事連携を保存する。検証は本エンドポイントで同期実行し、成功時は非同期ジョブを開始して job_id を返す。DB 更新は PworldArchiveAsyncRunner、完了後の一覧ペイロードは ADM-001-2 のポーリングで取得する(Issue #2052)。

POST パラメータ

フィールド必須説明
rows条件付き必須ネストした配列。各行に mail_id, hall_name, article_target_date, show_in_article(単体更新と同じ検証)
mail_list_page任意一覧のページ番号(1 以上。不正時は 1 にフォールバック)。ジョブ params に保存し完了時の一覧再取得に使う
mail_list_subject_search任意一覧再取得用フィルタ(ジョブ params にも保存)
mail_list_date_from / mail_list_date_to任意同上

挙動

  • 現在のフィルタ・ページに対応する 一覧のメール ID 集合と、rows の ID 集合が 件数・内容とも一致しないと PWORLD_BULK_ARTICLE_LINK_COUNT_MISMATCH 等で失敗(同期)
  • 行バリデーション失敗時は mail_id 付きで同期エラーを返す
  • 空一覧かつ空 rows のときは同期のまま成功(updated_count: 0 + 一覧ペイロード)
  • 検証成功後は PworldArchiveJobStatejob_type=bulk_article_linkrunning にし、pworld_archive_async_run を単発 WP-Cron 登録して即時 started を返す
  • 手動 IMAP 取得ジョブと同一 JobState / MySQL ロックを共有するため、他ジョブ実行中は run_in_progress で失敗する

pworld_mail_archiveテーブルからデータ取得(更新対象)

カラム名where検索値
idrows[].mail_id
hall_name
article_target_date
show_in_article

(実 UPDATE は非同期 Runner 内の bulk_update_article_links トランザクションで実行。)

成功時 data(ジョブ開始)

論理名物理名
ジョブ状態statusstring(固定値 started
ジョブ IDjob_idstring
メッセージmessagestring(PWORLD_BULK_ARTICLE_LINK_STARTED

フロントは job_idADM-001-2 をポーリングする。完了時の updated_count / 一覧ペイロードは同エンドポイントの bulk done を参照。

その他

  • 本ハンドラでは set_time_limit を設定しない(重い処理は Runner 側で上限 120 秒)