Appearance
SC-021 機種イベント期間差枚サマリーショートコード
概要
- 指定機種・イベント・期間について、全ホール合算の合計差枚数と台毎平均差枚数をコンパクトな表で表示する。
- 日別記事の考察内で、特定機種が特定イベント期間にどの程度出ているかを引用するために使う。
- 属性を受け取り、Converter でバリデーション・DTO 変換後、Controller → Service 経由でデータを取得し、View(Twig)で HTML にレンダリングする。
- ホール指定は持たない。イベント日はいずれかのホールの
eventJSON に対象イベント名があれば採用し、差枚はその日にイベントが開催されたホール分だけ合算する。
外部インターフェース
ショートコードタグ
- タグ名:
[kishu_event_samai_summary] - 入力例:
[kishu_event_samai_summary kishu="機種名" event="6の日" period_start="20240101" period_end="20240131"]
属性一覧
| 属性 | 役割 | 必須 |
|---|---|---|
kishu | 対象機種名(文字列。機種マスタ ID ではなく表示名。SC-010 と同じ方針) | ○ |
event | 対象イベント名(完全一致。event=all はサポートしない) | ○ |
period_start | 集計開始日(YYYYMMDD / YYYY-MM-DD / YYYY/MM/DD、2020年〜当年) | ○ |
period_end | 集計終了日(同上、period_start 以降) | ○ |
集計仕様
| 項目 | 内容 |
|---|---|
| イベント日の抽出 | LinkDayRepository::select_by_date_range で期間内の db_Link_day を取得し、対象イベント名が含まれるホールとの対(Ymd, hall)を採用する |
| イベント JSON | ホールキー配下の文字列配列、または {name: ...} オブジェクト配列(SC-020 と同じ形状) |
| 差枚の取得 | DailyDataPerUnitRepository::select_daily_data_group_by_day_and_hall_and_kishu_by_ymd(ymd_list, 一致ホールの日本語名) |
| 機種フィルタ | DTO の kishu_name が属性 kishu と完全一致し、かつその日にイベント開催したホールの行のみ |
| 合計差枚数 | 対象行の diff_coin 合計 |
| 平均差枚数 | 合計差枚 ÷ 対象行の count 合計(台毎平均。SC-010 と同じ)。小数第 1 位に丸める |
| ホール | 属性なし。イベント開催ホールのみ合算(未開催ホールの同日データは含めない) |
| 期間上限 | period_start〜period_end は 366 日以内 |
表示仕様
| 要素 | 内容 |
|---|---|
| キャプション | 機種名 / イベント名 / 期間(Y-m-d〜Y-m-d) |
| 列 | 合計差枚、平均差枚、台数(任意列。SC-010 と同系のコンパクト表) |
| 色分け | 合計・平均に DataVisualizationClassGenerator の差枚水準クラスを付与 |
| 0 件 | no-data メッセージを段落表示 |
見た目は period_samai_summary と同系のパネル枠・ヘッダー背景を用いる。
エラー
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
kishu 未指定または空 | ErrorHandler の返す文言 | ValidationException(KishuEventSamaiSummaryMessages::KISHU_REQUIRED) |
event 未指定または空 | ErrorHandler の返す文言 | ValidationException(KishuEventSamaiSummaryMessages::EVENT_REQUIRED) |
period_start / period_end 未指定・形式不正 | ErrorHandler の返す文言 | ValidationException(日付バリデーション) |
period_start > period_end | ErrorHandler の返す文言 | ValidationException(KishuEventSamaiSummaryMessages::PERIOD_ORDER) |
period_start / period_end が 366 日超 | ErrorHandler の返す文言 | ValidationException(KishuEventSamaiSummaryMessages::PERIOD_MAX_DAYS) |
| 対象イベント日なし、または機種行なし | 段落テキスト | KishuEventSamaiSummaryMessages::NO_DATA |
コントローラー・サービスの \Exception | ErrorHandler の返す文言 | ErrorHandler::handle_error() 経由 |
更新不可とみなすもの(git管理外の内容に依存し、リポジトリだけでは追従できない依存)
- ショートコード名
kishu_event_samai_summaryを変更しない- 理由: 過去投稿本文に文字列が直書きされるため
- 属性名
kishu/event/period_start/period_endを変更しない- 理由: 過去投稿本文に属性名が直書きされるため