---
generated_at: 2026-02-18 12:00:00
metrics:
  claims_total: 115
  claims_with_evidence: 112
  claims_without_evidence: 3
confidence_derived: 0.97
---

# 根拠レポート: apps-app 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim: 主張）を検証しています：

1. **根拠の有無確認**: 各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**: 主張の内容が根拠と矛盾していないか
3. **網羅性**: 参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」: 根拠あり、「△」: 根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）: **0.97**
  - 根拠あり: 112 / 115、根拠なし: 3
- 優先レビュー（高）
  1. **UT-APP-096, 097**: GTM同意管理 - windowオブジェクト依存の動作確認が必要
  2. **UT-APP-114, 115**: useAutoResizeTextarea - DOM操作の検証が必要
  3. **UT-APP-068, 069**: branchOrCommitSchema - URLエンコーディング境界ケースの確認が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `frontend/apps/app/middleware.ts` - ミドルウェア処理ロジック
- E-02: `frontend/apps/app/app/erd/p/[...slug]/utils/githubUrlHandler.ts` - GitHub URL処理ロジック
- E-03: `frontend/apps/app/utils/formatDuration.ts` - 時間フォーマットユーティリティ
- E-04: `frontend/apps/app/utils/accessibleTransitions.ts` - アクセシブルトランジション
- E-05: `frontend/apps/app/features/stream/utils/withTimeoutAndAbort.ts` - タイムアウト処理
- E-06: `frontend/apps/app/features/stream/utils/line.ts` - SSEライン生成
- E-07: `frontend/apps/app/features/organizations/services/generateOrganizationNameFromUser.ts` - 組織名生成
- E-08: `frontend/apps/app/features/organizations/services/getOrganizationId.ts` - 組織ID取得
- E-09: `frontend/apps/app/features/sessions/components/shared/validation/sessionFormValidation.ts` - フォームバリデーション
- E-10: `frontend/apps/app/features/sessions/components/UrlSessionForm/utils/urlValidation.ts` - URL検証
- E-11: `frontend/apps/app/features/sessions/components/UploadSessionForm/UploadSessionFormPresenter/utils/fileValidation.ts` - ファイル検証
- E-12: `frontend/apps/app/features/sessions/components/UploadSessionForm/UploadSessionFormPresenter/utils/hasContentCalculation.ts` - コンテンツ計算
- E-13: `frontend/apps/app/libs/utils/dateFormat.ts` - 日付フォーマット
- E-14: `frontend/apps/app/libs/routes/urlgen.ts` - URL生成
- E-15: `frontend/apps/app/libs/routes/paramsSchema.ts` - パラメータスキーマ
- E-16: `frontend/apps/app/libs/github/token.ts` - トークン管理
- E-17: `frontend/apps/app/libs/github/cookie.ts` - Cookie管理
- E-18: `frontend/apps/app/features/sessions/components/shared/services/sessionCreationHelpers.ts` - セッション作成ヘルパー
- E-19: `frontend/apps/app/features/sessions/components/GitHubSessionForm/actions/createGitHubSession.ts` - GitHubセッション作成
- E-20: `frontend/apps/app/features/sessions/components/UrlSessionForm/actions/createUrlSession.ts` - URLセッション作成
- E-21: `frontend/apps/app/libs/gtm/updateConsent.ts` - GTM同意更新
- E-22: `frontend/apps/app/app/api/github/token/refresh/route.ts` - トークンリフレッシュAPI
- E-23: `frontend/apps/app/app/api/projects/search/route.ts` - プロジェクト検索API
- E-24: `frontend/apps/app/features/sessions/components/shared/hooks/useFileDragAndDrop.ts` - ファイルドラッグ&ドロップフック
- E-25: `frontend/apps/app/features/sessions/components/shared/hooks/useEnterKeySubmission.ts` - Enterキー送信フック
- E-26: `frontend/apps/app/features/sessions/components/shared/hooks/useAutoResizeTextarea.ts` - 自動リサイズフック
- E-27: `frontend/apps/app/app/erd/p/[...slug]/utils/githubUrlHandler.test.ts` - 既存テストファイル
- E-28: `frontend/apps/app/features/stream/utils/withTimeoutAndAbort.test.ts` - 既存テストファイル
- E-29: `frontend/apps/app/features/sessions/components/shared/validation/sessionFormValidation.test.ts` - 既存テストファイル
- E-30: `frontend/apps/app/utils/formatDuration.test.ts` - 既存テストファイル
- E-31: `frontend/apps/app/utils/accessibleTransitions.test.ts` - 既存テストファイル
- E-32: `frontend/apps/app/features/sessions/components/UploadSessionForm/UploadSessionFormPresenter/utils/hasContentCalculation.test.ts` - 既存テストファイル

## 3) Claims と根拠の対応（レビューの主戦場）

### 認証・セキュリティ関連（高優先度）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-APP-001) | パブリックルートでセッション更新をスキップ | E-01 | ○ |
| C-02 (UT-APP-002) | ERDルートでセッション更新をスキップ | E-01 | ○ |
| C-03 (UT-APP-003) | 未認証ユーザーをログインページにリダイレクト | E-01 | ○ |
| C-04 (UT-APP-004) | リダイレクト時にreturnToCookieを設定 | E-01 | ○ |
| C-05 (UT-APP-005) | 本番環境でERDへの直接アクセスを拒否 | E-01 | ○ |
| C-06 (UT-APP-006) | 正しいリライトソースでERDアクセスを許可 | E-01 | ○ |

### GitHub URL処理（高優先度）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 (UT-APP-007) | 有効なGitHubフォルダURLを検出 | E-02, E-27 | ○ |
| C-08 (UT-APP-008) | 無効なURLでfalseを返却 | E-02, E-27 | ○ |
| C-09 (UT-APP-009) | GitHub以外のURLでfalseを返却 | E-02, E-27 | ○ |
| C-10 (UT-APP-010) | GitHubフォルダURLを正しくパース | E-02, E-27 | ○ |
| C-11 (UT-APP-011) | ブランチ名が欠落している場合エラー | E-02 | ○ |
| C-12 (UT-APP-012) | 最大再帰深度を超えた場合エラー | E-02 | ○ |
| C-13 (UT-APP-013) | 最大ファイル数を超えた場合エラー | E-02 | ○ |
| C-14 (UT-APP-014) | スキーマファイルを正しく識別 | E-02 | ○ |
| C-15 (UT-APP-015) | 除外ファイル名でfalseを返却 | E-02 | ○ |
| C-16 (UT-APP-016) | GitHubフォルダからスキーマを取得 | E-02 | ○ |
| C-17 (UT-APP-017) | スキーマファイルが見つからない場合エラー | E-02 | ○ |

### ユーティリティ関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 (UT-APP-018) | 秒のみの期間を正しくフォーマット | E-03, E-30 | ○ |
| C-19 (UT-APP-019) | 分と秒を含む期間を正しくフォーマット | E-03, E-30 | ○ |
| C-20 (UT-APP-020) | 0ミリ秒の場合0sを返す | E-03, E-30 | ○ |
| C-21 (UT-APP-021) | 60秒ちょうどの場合1m 0sを返す | E-03, E-30 | ○ |
| C-22 (UT-APP-022) | 減速モーション設定を検出 | E-04, E-31 | ○ |
| C-23 (UT-APP-023) | サーバーサイドでfalseを返す | E-04, E-31 | ○ |
| C-24 (UT-APP-024) | 通常のトランジションスタイルを生成 | E-04, E-31 | ○ |
| C-25 (UT-APP-025) | 減速モーション時に最小トランジションを生成 | E-04, E-31 | ○ |
| C-26 (UT-APP-026) | 表示時にopacity 1のスタイルを生成 | E-04 | ○ |
| C-27 (UT-APP-027) | 非表示時にopacity 0のスタイルを生成 | E-04 | ○ |

### ストリーム処理
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 (UT-APP-028) | タイムアウト前に処理が完了 | E-05, E-28 | ○ |
| C-29 (UT-APP-029) | 既にアボートされたシグナルでエラー | E-05, E-28 | ○ |
| C-30 (UT-APP-030) | タイムアウト時にアボート | E-05, E-28 | ○ |
| C-31 (UT-APP-031) | 文字列データでSSEフォーマットを生成 | E-06 | ○ |
| C-32 (UT-APP-032) | オブジェクトデータをJSON化してSSEフォーマット | E-06 | ○ |

### 組織サービス
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 (UT-APP-033) | full_nameから組織名を生成 | E-07 | ○ |
| C-34 (UT-APP-034) | emailから組織名を生成 | E-07 | ○ |
| C-35 (UT-APP-035) | 未認証ユーザーでnullを返す | E-07 | ○ |
| C-36 (UT-APP-036) | Cookieから組織IDを取得 | E-08 | ○ |
| C-37 (UT-APP-037) | CookieがないDBから組織IDを取得 | E-08 | ○ |
| C-38 (UT-APP-038) | 認証失敗時にエラーを返す | E-08 | ○ |
| C-39 (UT-APP-039) | 組織メンバーが見つからない場合エラー | E-08 | ○ |

### フォームバリデーション
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 (UT-APP-040) | 有効なフォームデータをパース | E-09, E-29 | ○ |
| C-41 (UT-APP-041) | 空の初期メッセージでエラー | E-09, E-29 | ○ |
| C-42 (UT-APP-042) | 有効なアップロードフォームデータを検証 | E-09 | ○ |
| C-43 (UT-APP-043) | 無効なURLでエラー | E-09 | ○ |
| C-44 (UT-APP-044) | スキーマコンテンツが100KB超の場合エラー | E-09 | ○ |

### URL・ファイル検証
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 (UT-APP-045) | 有効なスキーマURLを検証 | E-10 | ○ |
| C-46 (UT-APP-046) | 無効な拡張子のURLでfalse | E-10 | ○ |
| C-47 (UT-APP-047) | 無効なURLでfalse | E-10 | ○ |
| C-48 (UT-APP-048) | SQLファイルからpostgresフォーマット | E-10 | ○ |
| C-49 (UT-APP-049) | RubyファイルからschemarbフォーマットTo | E-10 | ○ |
| C-50 (UT-APP-050) | Prismaファイルからprismaフォーマット | E-10 | ○ |
| C-51 (UT-APP-051) | URLからファイル名を抽出 | E-10 | ○ |
| C-52 (UT-APP-052) | 無効なURLでデフォルト名 | E-10 | ○ |
| C-53 (UT-APP-053) | URLからスキーマを取得 | E-10 | ○ |
| C-54 (UT-APP-054) | 無効なファイルタイプでエラー | E-10 | ○ |
| C-55 (UT-APP-055) | SQLファイルからpostgresフォーマット (ファイル) | E-11 | ○ |
| C-56 (UT-APP-056) | Rubyファイルからschemarbフォーマット (ファイル) | E-11 | ○ |
| C-57 (UT-APP-057) | 不明な拡張子でデフォルトフォーマット | E-11 | ○ |
| C-58 (UT-APP-058) | 有効な拡張子でtrue | E-11 | ○ |
| C-59 (UT-APP-059) | 無効な拡張子でfalse | E-11 | ○ |

### コンテンツ計算
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 (UT-APP-060) | 有効なファイルとテキストでtrue | E-12, E-32 | ○ |
| C-61 (UT-APP-061) | テキストのみでtrue | E-12, E-32 | ○ |
| C-62 (UT-APP-062) | 無効なファイルでテキストがあってもfalse | E-12, E-32 | ○ |
| C-63 (UT-APP-063) | 空のテキストでfalse | E-12 | ○ |

### 日付・URL処理
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 (UT-APP-064) | 日付を正しいフォーマットで変換 | E-13 | ○ |
| C-65 (UT-APP-065) | 日付を短いフォーマットで変換 | E-13 | ○ |
| C-66 (UT-APP-066) | 静的ルートのURLを生成 | E-14 | ○ |
| C-67 (UT-APP-067) | 動的ルートのURLを生成 | E-14 | ○ |
| C-68 (UT-APP-068) | URLエンコードされたブランチ名をデコード | E-15 | ○ |
| C-69 (UT-APP-069) | エンコード不要な値をそのまま返す | E-15 | ○ |

### トークン管理（高優先度）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-70 (UT-APP-070) | 有効期限が3分以上先の場合false | E-16 | ○ |
| C-71 (UT-APP-071) | 有効期限が3分以内の場合true | E-16 | ○ |
| C-72 (UT-APP-072) | expiresAtがnullの場合true | E-16 | ○ |
| C-73 (UT-APP-073) | 有効なアクセストークンを返す | E-16 | ○ |
| C-74 (UT-APP-074) | 期限切れ間近のトークンでnull | E-16 | ○ |

### Cookie管理
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-75 (UT-APP-075) | 有効期限からmaxAgeを計算 | E-17 | ○ |
| C-76 (UT-APP-076) | 過去の日時で0を返す | E-17 | ○ |
| C-77 (UT-APP-077) | 無効な日時で0を返す | E-17 | ○ |
| C-78 (UT-APP-078) | Cookieからアクセストークンを読み取り | E-17 | ○ |
| C-79 (UT-APP-079) | Cookieがない場合null | E-17 | ○ |
| C-80 (UT-APP-080) | アクセストークンをCookieに書き込み | E-17 | ○ |
| C-81 (UT-APP-081) | 両方のトークンCookieを削除 | E-17 | ○ |

### セッション作成
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-82 (UT-APP-082) | メッセージから20文字のセッション名を生成 | E-18 | ○ |
| C-83 (UT-APP-083) | 短いメッセージをそのまま返す | E-18 | ○ |
| C-84 (UT-APP-084) | 空メッセージでデフォルト名 | E-18 | ○ |
| C-85 (UT-APP-085) | スキーマコンテンツを正しくパース | E-18 | ○ |
| C-86 (UT-APP-086) | 無効なスキーマでエラー | E-18 | ○ |
| C-87 (UT-APP-087) | 新しいセッションを作成 | E-18 | ○ |
| C-88 (UT-APP-088) | 未認証ユーザーでエラー | E-18 | ○ |
| C-89 (UT-APP-089) | 組織IDが取得できない場合エラー | E-18 | ○ |
| C-90 (UT-APP-090) | GitHubセッションを作成 | E-19 | ○ |
| C-91 (UT-APP-091) | 無効なフォームデータでエラー | E-19 | ○ |
| C-92 (UT-APP-092) | リポジトリ情報を取得 | E-19 | ○ |
| C-93 (UT-APP-093) | スキーマファイルパスがない場合エラー | E-19 | ○ |
| C-94 (UT-APP-094) | URLセッションを作成 | E-20 | ○ |
| C-95 (UT-APP-095) | スキーマ取得失敗時にエラー | E-20 | ○ |

### GTM・API
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-96 (UT-APP-096) | 同意設定を更新 | E-21 | △ |
| C-97 (UT-APP-097) | 拒否設定を更新 | E-21 | △ |
| C-98 (UT-APP-098) | 環境変数からクライアント認証情報を取得 | E-22 | ○ |
| C-99 (UT-APP-099) | 環境変数未設定時にエラー | E-22 | ○ |
| C-100 (UT-APP-100) | GitHubトークンを更新 | E-22 | ○ |
| C-101 (UT-APP-101) | GitHubAPIエラー時にエラー | E-22 | ○ |
| C-102 (UT-APP-102) | GitHubレスポンスを正しくパース | E-22 | ○ |
| C-103 (UT-APP-103) | 無効なレスポンスでエラー | E-22 | ○ |
| C-104 (UT-APP-104) | プロジェクトを検索 | E-23 | ○ |
| C-105 (UT-APP-105) | 組織IDでフィルタリング | E-23 | ○ |
| C-106 (UT-APP-106) | クエリなしで全プロジェクト | E-23 | ○ |
| C-107 (UT-APP-107) | DBエラー時に500エラー | E-23 | ○ |

### React Hooks
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-108 (UT-APP-108) | dragenterでdragActiveをtrue | E-24 | ○ |
| C-109 (UT-APP-109) | dragleaveでdragActiveをfalse | E-24 | ○ |
| C-110 (UT-APP-110) | ファイルドロップ時にコールバック呼び出し | E-24 | ○ |
| C-111 (UT-APP-111) | Ctrl+Enterでフォーム送信 | E-25 | ○ |
| C-112 (UT-APP-112) | コンテンツがない場合送信しない | E-25 | ○ |
| C-113 (UT-APP-113) | 送信中の場合送信しない | E-25 | ○ |
| C-114 (UT-APP-114) | テキストエリアの高さを調整 | E-26 | △ |
| C-115 (UT-APP-115) | 変更時にonChangeとadjustHeightを呼び出し | E-26 | ○ |

## 4) 不足情報（Unknown / Missing）
- **GTM同意管理テスト（UT-APP-096, 097）**: window.gtagのモック方法と実際のlocalStorage保存の検証方法が不明確
  - 候補: ブラウザ環境テスト / jsdom / Playwrightによるe2eテスト
- **useAutoResizeTextarea DOM操作（UT-APP-114）**: requestAnimationFrameとDOM操作のテスト方法が不明確
  - 候補: Testing Library / React Testing Library / カスタムフック用テストユーティリティ

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: ユーティリティ関数、日付フォーマット、URL生成など純粋関数のテスト
- **1 (中リスク)**: Reactフック、非同期処理、外部APIモックが必要なテスト
- **2 (高リスク)**: 認証・セキュリティ関連、トークン管理、ミドルウェアのテスト

### 高リスク項目の詳細
| 領域 | テストID | リスク要因 |
|------|---------|-----------|
| 認証 | UT-APP-001~006 | セキュリティ影響、ミドルウェア処理 |
| トークン | UT-APP-070~081 | 暗号化、Cookie操作、有効期限管理 |
| セッション | UT-APP-087~095 | DB操作、認証連携、複合ロジック |
| API | UT-APP-098~107 | 外部API連携、エラーハンドリング |

## 6) レビュアーチェックリスト（最小）
- [ ] 高優先度（高）のテストケースが全てのコアビジネスロジックをカバーしているか確認
- [ ] 認証・セキュリティ関連テスト（UT-APP-001~006）の境界条件が適切か確認
- [ ] トークン管理テスト（UT-APP-070~081）の有効期限計算ロジックが正確か確認
- [ ] 既存テストファイル（E-27~E-32）との整合性を確認
- [ ] バリデーションスキーマ（E-09）の全フィールドがテストされているか確認
- [ ] エラーメッセージの一貫性を確認
- [ ] 非同期処理のタイムアウト・アボート処理が適切にテストされているか確認

## 7) モジュール概要

### 対象ファイル分類

| カテゴリ | ファイル数 | 主な内容 |
|---------|-----------|---------|
| ミドルウェア | 1 | 認証・アクセス制御 |
| APIルート | 5 | プロジェクト検索、トークン管理 |
| ユーティリティ | 8 | 時間フォーマット、URL処理、日付処理 |
| サービス | 6 | 組織管理、セッション作成 |
| バリデーション | 3 | フォーム検証、ファイル検証 |
| Hooks | 4 | ドラッグ&ドロップ、キーボード操作 |
| GTM | 1 | 同意管理 |

### テストケース分布

| 優先度 | 件数 | 割合 |
|--------|------|------|
| 高 | 52 | 45.2% |
| 中 | 51 | 44.3% |
| 低 | 12 | 10.4% |

### テスト観点分布

| 観点 | 件数 | 割合 |
|------|------|------|
| 正常系 | 80 | 69.6% |
| 異常系 | 27 | 23.5% |
| 境界値 | 8 | 7.0% |
