Spec
ADDED Requirements¶
Requirement: CSV files SHALL use Teams attendance report format¶
CSVファイルは、Microsoft Teams出席レポートの実際のフォーマットに準拠しなければならない(MUST)。エンコーディングはUTF-16LE、区切り文字はタブ、3つのセクション(要約、参加者、会議中のアクティビティ)で構成される。
Scenario: CSV file with correct encoding and delimiter¶
- WHEN CSVファイルが作成される
- THEN ファイルのエンコーディングはUTF-16LEである
- THEN フィールドの区切り文字はタブである
Scenario: CSV file with three sections¶
- WHEN CSVファイルが作成される
- THEN ファイルは「1. 要約」セクションを含む
- THEN ファイルは「2. 参加者」セクションを含む
- THEN ファイルは「3. 会議中のアクティビティ」セクションを含む
Scenario: Summary section with required fields¶
- WHEN 要約セクションが作成される
- THEN「会議のタイトル」フィールドにグループ名が含まれる
- THEN「開始時刻」フィールドに「YYYY/M/D HH:MM:SS」形式の日時が含まれる
Scenario: Participants section with required fields¶
- WHEN 参加者セクションが作成される
- THEN ヘッダー行に「名前」「メール アドレス」「会議の長さ」が含まれる
- THEN 各参加者行に名前、メールアドレス、時間(「X 時間 Y 分 Z 秒」形式)が含まれる
Requirement: CSV files SHALL be placed in dev-fixtures/csv directory¶
CSVファイルは dev-fixtures/csv/ ディレクトリに配置されなければならない(MUST)。このディレクトリは開発用のテストデータであることを明確にし、dev-fixtures/data/ の入力データとして機能する。
Scenario: CSV directory exists¶
- WHEN テストデータを作成する
- THEN
dev-fixtures/csv/ディレクトリが存在する
Scenario: All CSV files are in correct directory¶
- WHEN 17件のCSVファイルが作成される
- THEN すべてのファイルが
dev-fixtures/csv/ディレクトリ直下に配置される
Requirement: CSV files SHALL follow naming convention¶
CSVファイルの命名規則は {グループ名}-{YYYY-MM-DD}.csv でなければならない(MUST)。これにより、対応するセッションJSONとの関連が明確になる。
Scenario: File name matches session date¶
- WHEN セッションの日付が2026-01-15である
- THEN CSVファイル名に「2026-01-15」が含まれる
Scenario: File name matches group name¶
- WHEN グループ名が「フロントエンド勉強会」である
- THEN CSVファイル名が「フロントエンド勉強会-{日付}.csv」である
Requirement: CSV data SHALL cover all existing sessions¶
CSVファイルは、既存の17件のセッションJSON、4つのグループ、4人のメンバーをすべてカバーしなければならない(MUST)。
Scenario: All groups are covered¶
- WHEN CSVファイルを作成する
- THEN フロントエンド勉強会の10セッションが含まれる
- THEN TypeScript読書会の3セッションが含まれる
- THEN ソフトウェア設計勉強会の2セッションが含まれる
- THEN インフラ技術研究会の2セッションが含まれる
Scenario: Total file count matches sessions¶
- WHEN すべてのCSVファイルを作成する
- THEN ファイル数は17である
Requirement: CSV to JSON conversion SHALL match existing data¶
CSVファイルをCsvTransformerで変換した結果は、dev-fixtures/data/ の既存JSONと一致しなければならない(MUST)。これにより、CSV → JSON の変換結果の一貫性が保証される。
Scenario: Generated IDs match existing IDs¶
- WHEN CSVファイルをCsvTransformerで変換する
- THEN 生成されるgroupIdが既存の
index.jsonのgroupIdと一致する - THEN 生成されるmemberIdが既存の
index.jsonのmemberIdと一致する - THEN 生成されるsessionIdが既存のセッションJSONのidと一致する
Scenario: Generated session data matches existing data¶
- WHEN CSVファイルをCsvTransformerで変換する
- THEN 生成されるattendancesが既存のセッションJSONのattendancesと一致する
- THEN 生成されるdurationSecondsが既存のセッションJSONのdurationSecondsと一致する
Requirement: Existing tests SHALL continue to pass¶
既存のテスト(pnpm test)はすべてパスし続けなければならない(MUST)。CSVテストデータの追加により、既存のテストが壊れてはならない。
Scenario: Unit tests pass after CSV creation¶
- WHEN CSVファイルとJSONファイルを更新する
- THEN
pnpm testがすべてパスする
Scenario: E2E tests pass after CSV creation¶
- WHEN CSVファイルとJSONファイルを更新する
- THEN
pnpm run test:e2eがすべてパスする