Skip to content

SC-009 機種データショートコード

概要

  • 指定ホール・日付・機種の台別データをページ内に埋め込み表示する。
  • day(日付)・hall(ホール名)・kishu_id(機種名)を属性で受け取り、KishuDataConverter でバリデーション・DTO 変換後、KishuDataControllerKishuDataService 経由でデータを取得、View で HTML にレンダリングする。
  • 複数機種を指定する場合は区切り文字 '_'KishuConstants::KISHU_DELIMITER)で連結して渡す。
  • 公開画面: 初回 HTML はプレースホルダのみ(API-001-14 /async-kishudata でカード本体を取得)。管理画面は従来どおり同期 HTML。
  • 各台データ: アコーディオンではなく末尾データと同様の data-detail-modal(「表示」ボタン → 台別テーブル)。
  • 機種画像: kishu_index に URL がある場合のみ画像ブロックを表示する。URL が無い場合は画像ブロックを出力しない(トルツメ)。
  • カード内の日付表示: なし(対象日付はショートコード属性 day でデータ取得に使用するのみ)。
  • 考察本文(メモ枠のテキスト)は遅延対象外。遅延するのは [kishudata] が生成する機種データカードのみ。

ワイヤーフレーム

同一 UI の記事埋め込み枠は PUB-001MachineDataTableBlock(P-15)と共有する。

ブロック一覧

ブロックIDブロック名表示内容初期値ユーザー操作アクション
B-0機種データ枠機種名・台数・差枚テーブル(本番はカード+詳細モーダル等)公開はプレースホルダ→非同期「表示」等(本番)-

表示条件・注記

  • 属性: day / hall / kishu_id 必須(旧 kishu は読取フォールバック)。
  • 公開: 初回 HTML はプレースホルダ、API-001-14 で本体取得。管理画面は同期。
  • ワイヤーフレーム: 取得後テーブルの概略サンプル。公開初回プレースホルダは statusLabel で示唆。詳細モーダルは本ワイヤー対象外。

外部インターフェース

ショートコードタグ

  • タグ名: [kishudata]
  • 入力例(単機種): [kishudata day="20240101" hall="アイランド秋葉原" kishu_id="犬夜叉"]
  • 入力例(複数機種): [kishudata day="20240101" hall="アイランド秋葉原" kishu_id="犬夜叉'_'まどか叛逆"]

属性一覧

属性役割必須
day対象日付(YYYY-MM-DD / YYYY/MM/DD / YYYYMMDD 形式、2020年〜当年)
hall対象ホール名(HallEnum 対応)
kishu_id対象機種名(複数指定時は '_' で連結。例: "犬夜叉'_'まどか叛逆"

後方互換(Issue #2374): 読み取り時は kishu_id を優先し、未指定時のみ旧属性 kishu をフォールバックする。新規生成は常に kishu_id を使用する。

エラー

条件ユーザー向け挙動メッセージ / ログ
day 未指定または空バリデーションエラーメッセージ表示(esc 済)ValidationException日付(day)は必須です。
day が不正な日付形式バリデーションエラーメッセージ表示(esc 済)ValidationException(形式・範囲不正メッセージ)
hall 未指定または不正値バリデーションエラーメッセージ表示(esc 済)ValidationExceptionShortCodeHelper 経由でログ出力)
kishu_id 未指定または空バリデーションエラーメッセージ表示(esc 済)ValidationException機種名(kishu_id)は必須です。
サービス・コントローラーの Throwableエラーが発生しました:execute_if_not_adminerror_log(先頭 [ShortCodeHelper]

更新不可とみなすもの(git管理外の内容に依存し、リポジトリだけでは追従できない依存)

  • ショートコード名 kishudata を変更しない
    • 理由: 既存投稿本文にショートコードタグが直書きされているため
  • 属性名 day / hall / kishu_id を変更しない(旧 kishu は読取フォールバックのみ)
    • 理由: 既存投稿本文に属性名が直書きされているため
  • 区切り文字 '_'KishuConstants::KISHU_DELIMITER)を変更しない
    • 理由: 既存投稿本文の機種名属性値に直書きされているため