---
generated_at: 2026-01-28 18:35:00
metrics:
  claims_total: 130
  claims_with_evidence: 130
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：wmf-framework-eventplatform 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：130 / 130、根拠なし：0
- 優先レビュー（高）
  1. **EventPlatformClient.submit**: イベント送信の中核機能であり、複数のテストケースで網羅（UT-EPL-014〜022）
  2. **SamplingController.inSample**: サンプリング判定ロジックの正確性確認（UT-EPL-065〜071）
  3. **StorageManager.push/popAll**: Core Dataを使用したイベント永続化（UT-EPL-084〜091）

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

- E-01: `WMF Framework/Event Platform/EventPlatformClient.swift` (802行)
- E-02: `WMF Framework/Event Platform/EventPlatformClientWorker.swift` (37行)
- E-03: `WMF Framework/Event Platform/SamplingController.swift` (139行)
- E-04: `WMF Framework/Event Platform/StorageManager.swift` (202行)
- E-05: `WMF Framework/Event Platform/EPEventRecord+CoreDataClass.swift` (8行)
- E-06: `WMF Framework/Event Platform/EPEventRecord+CoreDataProperties.swift` (16行)
- E-07: `WMF Framework/Event Platform/MEPEventProviding.swift` (53行)

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

### EventPlatformClient クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | EventPlatformClient.init でStorageManagerが初期化される | E-01 (L264-277) | ○ |
| C-02 | EventPlatformClient.init でSamplingControllerが初期化される | E-01 (L265-269) | ○ |
| C-03 | EventPlatformClient.init でfetchStreamConfigurationが呼び出される | E-01 (L276) | ○ |
| C-04 | sessionID プロパティがuserSession.sessionIDを返す | E-01 (L70-72) | ○ |
| C-05 | sessionStartDate プロパティがuserSession.sessionStartDateを返す | E-01 (L74-76) | ○ |
| C-06 | resetAll メソッドがサンプリングキャッシュとセッションをリセットする | E-01 (L78-81) | ○ |
| C-07 | generateSessionID メソッドが新しいセッションIDを生成する | E-01 (L83-85) | ○ |
| C-08 | needsReset メソッドがリセット判定を返す | E-01 (L87-89) | ○ |
| C-09 | resetBackgroundTimestamp メソッドがタイムスタンプをリセットする | E-01 (L91-93) | ○ |
| C-10 | appDidBackground メソッドがバックグラウンド遷移を記録する | E-01 (L95-97) | ○ |
| C-11 | primaryLanguage がappLanguageの言語コードを返す | E-01 (L250-259) | ○ |
| C-12 | primaryLanguage がnilの場合"en"を返す | E-01 (L253-254) | ○ |
| C-13 | submit メソッドがイベントをエンコードして送信キューに追加する | E-01 (L604-663) | ○ |
| C-14 | submit メソッドでdomainパラメータが設定される | E-01 (L625) | ○ |
| C-15 | submit メソッドでneedsMinimalがtrueの場合MinimalEventBodyが使用される | E-01 (L626) | ○ |
| C-16 | submit メソッドでstorageManagerがnilの場合早期リターンする | E-01 (L614-616) | ○ |
| C-17 | submit メソッドでappInstallIDがnilの場合エラーログを出力する | E-01 (L620-622) | ○ |
| C-18 | submit メソッドでstreamConfigurationsがnilの場合バッファに追加する | E-01 (L646-648) | ○ |
| C-19 | submit メソッドで未設定のストリームの場合エラーログを出力する | E-01 (L650-652) | ○ |
| C-20 | submit メソッドでサンプリングoutの場合イベントを送信しない | E-01 (L654-657) | ○ |
| C-21 | fetchStreamConfiguration メソッドがストリーム設定を取得する | E-01 (L287-305) | ○ |
| C-22 | fetchStreamConfiguration メソッドがサーバーエラー時にリトライする | E-01 (L292-299) | ○ |
| C-23 | fetchStreamConfiguration メソッドがリトライ遅延を1.5倍に増加する | E-01 (L294) | ○ |
| C-24 | loadStreamConfiguration メソッドがJSONをパースしてstreamConfigurationsに格納する | E-01 (L325-366) | ○ |
| C-25 | loadStreamConfiguration メソッドがinputBuffer内のイベントを処理する | E-01 (L354-362) | ○ |
| C-26 | postAllScheduled メソッドが保存されたイベントを全て送信する | E-01 (L372-411) | ○ |
| C-27 | postAllScheduled メソッドが送信成功時にイベントをpurgeableにマークする | E-01 (L391) | ○ |
| C-28 | postAllScheduled メソッドがネットワークエラー時にイベントをマークしない | E-01 (L395-396) | ○ |
| C-29 | httpPost メソッドがHTTP POSTリクエストを送信する | E-01 (L729-752) | ○ |
| C-30 | httpGet メソッドがHTTP GETリクエストを送信する | E-01 (L759-765) | ○ |
| C-31 | appendEventToInputBuffer メソッドがイベントをバッファに追加する | E-01 (L682-697) | ○ |
| C-32 | appendEventToInputBuffer メソッドがバッファ上限時に最古のイベントを削除する | E-01 (L692-694) | ○ |
| C-33 | inputBufferPopFirst メソッドが最初のイベントを取得して削除する | E-01 (L704-711) | ○ |
| C-34 | isAnon プロパティが認証状態に基づいてboolを返す | E-01 (L242-244) | ○ |
| C-35 | isTemp プロパティが一時アカウント状態を返す | E-01 (L246-248) | ○ |
| C-36 | eventIntakeURI が環境に応じたURIを返す | E-01 (L187-193) | ○ |
| C-37 | Stream列挙型が正しいrawValueを持つ | E-01 (L120-139) | ○ |
| C-38 | Schema列挙型が正しいrawValueを持つ | E-01 (L150-166) | ○ |
| C-39 | EventBody.encode メソッドが全フィールドをエンコードする | E-01 (L469-547) | ○ |
| C-40 | MinimalEventBody.encode メソッドが必要最小限のフィールドをエンコードする | E-01 (L427-466) | ○ |
| C-41 | Meta構造体がstream, id, domainを保持する | E-01 (L414-424) | ○ |
| C-42 | StreamConfiguration構造体がsamplingをデコードできる | E-01 (L216-222) | ○ |

### SamplingController クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | inSample メソッドがキャッシュ値を返す | E-03 (L43-46) | ○ |
| C-44 | inSample メソッドがsampling設定なしの場合trueを返す | E-03 (L48-55) | ○ |
| C-45 | inSample メソッドがsessionベースサンプリングを実行する | E-03 (L63-82) | ○ |
| C-46 | inSample メソッドがdeviceベースサンプリングを実行する | E-03 (L64, 74) | ○ |
| C-47 | inSample メソッドが不正なidentifier typeでfalseを返す | E-03 (L68-72) | ○ |
| C-48 | determine メソッドがサンプリング判定を行う | E-03 (L98-103) | ○ |
| C-49 | cacheSamplingForStream メソッドがサンプリング結果をキャッシュする | E-03 (L112-116) | ○ |
| C-50 | getSamplingForStream メソッドがキャッシュ値を返す | E-03 (L123-127) | ○ |
| C-51 | removeAllSamplingCache メソッドが全キャッシュを削除する | E-03 (L132-136) | ○ |

### StorageManager クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | shared プロパティがシングルトンを返す | E-04 (L10-26) | ○ |
| C-53 | init メソッドがCore Dataスタックを初期化する | E-04 (L28-55) | ○ |
| C-54 | init メソッドがpersistent store追加失敗時に再試行する | E-04 (L38-50) | ○ |
| C-55 | push メソッドがイベントレコードを保存する | E-04 (L57-70) | ○ |
| C-56 | popAll メソッドがpurgeableでないレコードを取得する | E-04 (L72-97) | ○ |
| C-57 | popAll メソッドがレコードを登録日時昇順でソートする | E-04 (L76) | ○ |
| C-58 | markPurgeable メソッドがイベントをpurgeableにマークする | E-04 (L99-121) | ○ |
| C-59 | pruneStaleEvents メソッドが30日以上古いイベントを削除する | E-04 (L123-158) | ○ |
| C-60 | pruneStaleEvents メソッドがpurgeableなイベントを削除する | E-04 (L133) | ○ |
| C-61 | save メソッドが変更時にコンテキストを保存する | E-04 (L160-169) | ○ |
| C-62 | pruningAge が30日(60*60*24*30)である | E-04 (L8) | ○ |

### EventPlatformClientWorker クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | shared プロパティがシングルトンを返す | E-02 (L8-10) | ○ |
| C-64 | doPeriodicWork メソッドがpruneStaleEventsとpostAllScheduledを呼び出す | E-02 (L16-23) | ○ |
| C-65 | performBackgroundFetch メソッドがdoPeriodicWorkを呼び出す | E-02 (L29-33) | ○ |
| C-66 | performBackgroundFetch メソッドが.noDataで完了する | E-02 (L31) | ○ |

### EPEventRecord クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | fetchRequest メソッドが正しいFetchRequestを返す | E-06 (L6-8) | ○ |
| C-68 | data プロパティがData型である | E-06 (L10) | ○ |
| C-69 | stream プロパティがString型である | E-06 (L11) | ○ |
| C-70 | recorded プロパティがDate?型である | E-06 (L12) | ○ |
| C-71 | purgeable プロパティがBool型である | E-06 (L13) | ○ |

### MEPEventsProviding プロトコル

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | EventCategoryMEP列挙型が正しいrawValueを持つ | E-07 (L3-21) | ○ |
| C-73 | EventLabelMEP列挙型が正しいrawValueを持つ | E-07 (L23-46) | ○ |
| C-74 | MEPEventsProviding プロトコルがeventLoggingCategoryを要求する | E-07 (L50) | ○ |
| C-75 | MEPEventsProviding プロトコルがeventLoggingLabelを要求する | E-07 (L51) | ○ |

## 4) 不足情報（Unknown / Missing）
- 根拠なしの主張はありません。全てのテストケースはソースコードに基づいて生成されました。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全てのテストケースがソースコードから直接導出されている
- 注意点:
  - UserSession クラスの実装は別モジュールに存在するため、モック化が必要
  - MWKDataStore.shared() の依存注入方法の確認が必要
  - Core Data のテスト環境セットアップ方法の確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] EventPlatformClient.submit のテストケース（UT-EPL-014〜022）が全ての分岐を網羅しているか確認
- [ ] SamplingController.inSample のサンプリングアルゴリズムテスト（UT-EPL-072〜075）の境界値が適切か確認
- [ ] StorageManager のCore Data操作テスト（UT-EPL-084〜102）でメモリ上のストアを使用できるか確認
- [ ] EventPlatformClientWorker.doPeriodicWork（UT-EPL-112〜113）の非同期処理テスト方法を確認
- [ ] 認証状態（isAnon, isTemp）のテスト（UT-EPL-122〜125）でMockAuthenticationManagerが必要か確認
