Spec
ADDED Requirements¶
Requirement: 2025年度上期のセッションデータ追加¶
既存の dev-fixtures データ(2026年1〜2月 = 2025年度下期)に加え、2025年度上期(2025年4〜9月)のセッションデータを dev-fixtures/data/sessions/ に追加しなければならない(MUST)。追加するセッションは既存の勉強会グループ(b20ae593, 75aa4f8f, 078075da, b630e3f1)に属し、既存のメンバー(d2ede157, 7c35db6e, 70c5a8d7, 85befc0e, c9f1e2a3)が参加するデータとする。
Scenario: 上期のセッションファイルが追加される¶
- WHEN dev-fixtures を確認する
- THEN
dev-fixtures/data/sessions/に 2025年4〜9月の日付を持つセッションJSONファイルが存在する - THEN 各ファイルは既存のセッションJSONスキーマ(
id,groupId,date,attendances)に準拠する
Scenario: 複数の勉強会グループに上期セッションがある¶
- WHEN 上期のセッションデータを確認する
- THEN 少なくとも2つの異なる勉強会グループに上期セッションが存在する
- THEN 期の切り替えデモで複数グループのアコーディオンが表示される
Requirement: index.json の整合性更新¶
追加したセッションの ID を dev-fixtures/data/index.json の該当グループの sessionIds 配列とメンバーの sessionIds 配列に追加しなければならない(MUST)。グループおよびメンバーの totalDurationSeconds も追加セッションの参加時間を反映して更新しなければならない(MUST)。
Scenario: グループの sessionIds が更新される¶
- WHEN 勉強会グループ
b20ae593に上期セッションが追加される - THEN
index.jsonの該当グループのsessionIdsに新しいセッションIDが含まれる - THEN グループの
totalDurationSecondsが上期セッションの参加時間分だけ増加する
Scenario: メンバーの sessionIds が更新される¶
- WHEN メンバー
d2ede157が上期セッションに参加している - THEN
index.jsonの該当メンバーのsessionIdsに新しいセッションIDが含まれる - THEN メンバーの
totalDurationSecondsが上期セッションの参加時間分だけ増加する
Requirement: 期の切り替えデモが可能なデータ量¶
追加するデータは、メンバー明細画面で期の切り替えをデモするのに十分な量でなければならない(MUST)。少なくとも1名のメンバーが上期・下期の両方に複数セッションの参加データを持つこと。
Scenario: 期を切り替えて上期のデータが表示される¶
- WHEN メンバー
d2ede157(Suzuki Taro A)のメンバー明細画面を開く - WHEN 「2025年度 上期」を選択する
- THEN 上期に属するセッションが勉強会別アコーディオンで表示される
- THEN 上期のサマリー(参加回数・合計時間)が正しく集計されている
Scenario: 下期に切り替えると既存データが表示される¶
- WHEN メンバー
d2ede157(Suzuki Taro A)のメンバー明細画面で「2025年度 下期」を選択する - THEN 既存の2026年1〜2月のセッションが表示される
Requirement: 既存データの構造を変更しない¶
既存のセッションJSONファイルの内容を変更してはならない(SHALL NOT)。index.json のスキーマ(フィールド名・構造)も変更してはならない(SHALL NOT)。追加するのはセッションファイルの新規作成と、index.json 内の既存配列・数値への追記・加算のみとする。
Scenario: 既存セッションファイルが変更されていない¶
- WHEN 変更前後の既存セッションJSONファイルを比較する
- THEN 既存17ファイルの内容が一切変更されていない
Scenario: index.json のスキーマが変わらない¶
- WHEN 変更後の
index.jsonを確認する - THEN グループ・メンバーのフィールド構造(
id,name,totalDurationSeconds,sessionIds)が変更前と同じである - THEN 新しいフィールドが追加されていない