Appearance
SC-009 機種データショートコード
概要
- 指定ホール・日付・機種の台別データをページ内に埋め込み表示する。
day(日付)・hall(ホール名)・kishu_id(機種名)を属性で受け取り、KishuDataConverterでバリデーション・DTO 変換後、KishuDataController→KishuDataService経由でデータを取得、View で HTML にレンダリングする。- 複数機種を指定する場合は区切り文字
'_'(KishuConstants::KISHU_DELIMITER)で連結して渡す。 - 公開画面: 初回 HTML はプレースホルダのみ(
API-001-14/async-kishudataでカード本体を取得)。管理画面は従来どおり同期 HTML。 - 各台データ: アコーディオンではなく末尾データと同様の
data-detail-modal(「表示」ボタン → 台別テーブル)。 - 機種画像:
kishu_indexに URL がある場合のみ画像ブロックを表示する。URL が無い場合は画像ブロックを出力しない(トルツメ)。 - カード内の日付表示: なし(対象日付はショートコード属性
dayでデータ取得に使用するのみ)。 - 考察本文(メモ枠のテキスト)は遅延対象外。遅延するのは
[kishudata]が生成する機種データカードのみ。
ワイヤーフレーム
同一 UI の記事埋め込み枠は PUB-001 の MachineDataTableBlock(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 済) | ValidationException(ShortCodeHelper 経由でログ出力) |
kishu_id 未指定または空 | バリデーションエラーメッセージ表示(esc 済) | ValidationException(機種名(kishu_id)は必須です。) |
サービス・コントローラーの Throwable | エラーが発生しました:execute_if_not_admin | error_log(先頭 [ShortCodeHelper]) |
更新不可とみなすもの(git管理外の内容に依存し、リポジトリだけでは追従できない依存)
- ショートコード名
kishudataを変更しない- 理由: 既存投稿本文にショートコードタグが直書きされているため
- 属性名
day/hall/kishu_idを変更しない(旧kishuは読取フォールバックのみ)- 理由: 既存投稿本文に属性名が直書きされているため
- 区切り文字
'_'(KishuConstants::KISHU_DELIMITER)を変更しない- 理由: 既存投稿本文の機種名属性値に直書きされているため