Skip to content

API-001-18 遅延ブロック HTML warm ​

← API-一覧

概要 ​

日別記事の遅延ブロック完成 HTML を Transient(daily_article_block_html_v1_)に埋める。レスポンスに HTML は載せない。既存の共有データ L2 warm(API-001-10)とは別エンドポイントで、UI REST の開始ゲートには使わない。

対象ブロック: MailImage(バッチ)・MoveDayHall(バッチ)・関連日・kishu_count_delta・ランキング・末尾・ヒートマップ簡易(PC キー)。kishudata はテンプレの機種 ID がリクエストに含まれないため本 warm では埋めず、UI REST(API-001-14)の get/set に依存する。ヒートマップ詳細は対象外。SP 向け簡易キーは本 warm では埋めない。

完成 HTML がすでに Transient にある hall×block は描画せず ok として数え、欠けている組み合わせだけ描画する(Issue #3979)。全件揃っていればレンダラも共有データ L2 warm も呼ばない。存在確認は UI REST と同じキーで行う(キーはログイン状態に依存しない)。MoveDayHall バッチはホール一覧が L2 warm のキーにも使われるため、欠けがあるときも全ホールを渡す(キャッシュ済みホールはバッチ内で描画されない)。

入力(リクエスト) ​

param必須型・制約説明
dateはいYYYY-MM-DD対象日
hallsはい英字スラッグの配列、またはカンマ区切り CSVページ全体のホール一覧(Twig の data-warm-halls と同一。API-001-10 と同じ入力契約)

POST ボディは JSON(Content-Type: application/json)を推奨。

出力(レスポンス) ​

成功時 data ​

field型説明
successbooleantrue
warmedbooleantrue(処理完了。部分失敗でも true)
countobject{ "ok": int, "failed": int } 成功/失敗件数

HTTP ステータス: 200(部分失敗でも成功レスポンス。count で把握する)

失敗・エラー条件 ​

条件レスポンス形式
バリデーションエラー(halls 空など){ "success": false, "error": { "message": "..." } }(400)
nonce 不正 / レート制限超過WordPress REST 標準(nonce 不正は 403、レート制限超過は 429)
サーバー内部エラー{ "success": false, "error": { "message": "..." } }(500)

クライアント(JS orchestrator) ​

実装: core_src/View/templates/daily_article_result/daily_article_orchestrator.js。

  • ページ読み込み直後に API-001-10 と並列で POST する(MailImage バッチと同様、L2 warm 完了を待たない)。
  • UI REST の開始条件には含めない(warm 成否でゲートしない)。
  • 失敗時は console.warn のみ(現訪問の UI REST は従来どおり)。

権限・nonce ​

名前空間共通事項は API-一覧 を参照。本エンドポイントは API-001-10 と同様、AsyncLoadingHandler + WordPressAsyncLoadingPermissionChecker(nonce + IP レート制限)を使用する。

レート制限は読み取り系 GET とは別の warm バケット(IP ごと 60 秒 60 回。API-001-10 と API-001-18 で共有)で数え、カウンタを取れないときは拒否する(Issue #3865 / #3938)。詳細は REST API レート制限の IP アドレス取得設定。