コンテンツにスキップ

Spec

ADDED Requirements

Requirement: 勉強会別サマリー表示

メンバー詳細ページにおいて、メンバーが参加した勉強会ごとのサマリー情報(勉強会名、参加回数、合計学習時間)をカード形式で表示する。サマリーカードは勉強会名の日本語ロケール順でソートして表示しなければならない(SHALL)。

Scenario: 複数の勉強会に参加しているメンバーのサマリー表示

  • WHEN 複数の勉強会に参加しているメンバーの詳細ページを表示する
  • THEN 参加している勉強会ごとにサマリーカードが表示される
  • THEN 各カードに勉強会名、参加回数、合計学習時間が表示される

Scenario: 1つの勉強会にのみ参加しているメンバーのサマリー表示

  • WHEN 1つの勉強会にのみ参加しているメンバーの詳細ページを表示する
  • THEN その勉強会のサマリーカードが1つ表示される

Requirement: 勉強会選択時の出席履歴詳細表示

勉強会サマリーカードをクリックすると、その勉強会に紐づくセッション出席履歴がアコーディオン展開で表示されなければならない(SHALL)。出席履歴は日付、学習時間を含み、日付の降順でソートされなければならない(MUST)。

Scenario: 勉強会カードをクリックして出席履歴を展開する

  • WHEN 勉強会サマリーカードをクリックする
  • THEN そのカードの下にセッション出席履歴テーブルがアコーディオン展開される
  • THEN 各行に日付と学習時間が表示される
  • THEN 日付の降順でソートされている

Scenario: 展開済みの勉強会カードを再クリックして閉じる

  • WHEN 展開済みの勉強会サマリーカードをクリックする
  • THEN セッション出席履歴テーブルが折りたたまれて非表示になる

Scenario: 複数の勉強会カードを同時に展開する

  • WHEN 勉強会Aのカードが展開されている状態で勉強会Bのカードをクリックする
  • THEN 勉強会Aと勉強会Bの両方の出席履歴が同時に表示される

Requirement: 勉強会が1つの場合のデフォルト展開

メンバーが参加している勉強会が1つのみの場合、その勉強会の出席履歴はデフォルトで展開状態でなければならない(MUST)。

Scenario: 勉強会が1つのみの場合のデフォルト表示

  • WHEN 1つの勉強会にのみ参加しているメンバーの詳細ページを表示する
  • THEN その勉強会のサマリーカードが展開状態で表示される
  • THEN セッション出席履歴テーブルが最初から表示されている

Scenario: 勉強会が複数の場合のデフォルト表示

  • WHEN 複数の勉強会に参加しているメンバーの詳細ページを表示する
  • THEN すべての勉強会サマリーカードが折りたたみ状態で表示される

Requirement: メンバーヘッダー情報の維持

メンバー詳細ページの上部に表示されるメンバーヘッダーカード(メンバー名、合計学習時間、総参加回数)は現在の表示を維持しなければならない(MUST)。

Scenario: メンバーヘッダーカードの表示

  • WHEN メンバー詳細ページを表示する
  • THEN メンバー名、合計学習時間、総参加回数がヘッダーカードに表示される
  • THEN ヘッダーカードは勉強会別サマリーの上部に配置される

Requirement: データ取得方式の互換性維持

勉強会別表示に必要なデータは、既存の index.json および sessions/*.json から取得し、データ構造やAPIの変更を行ってはならない(MUST NOT)。グルーピング処理はクライアント側で実施しなければならない(SHALL)。

Scenario: 既存データ構造からの勉強会別グルーピング

  • WHEN メンバー詳細ページのデータを取得する
  • THEN index.jsonstudyGroups から勉強会名を取得する
  • THEN 各セッションの studyGroupId を使って勉強会別にグルーピングする
  • THEN DataFetcher のインターフェイスは変更されない