---
generated_at: 2026-01-29 18:00:00
metrics:
  claims_total: 64
  claims_with_evidence: 64
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Core-Framework-Notification 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：64 / 64、根拠なし：0
- 優先レビュー（高）
  1. **権限チェックロジック**：isAllowメソッドのテストケースが実装を正確に反映しているか確認推奨
  2. **レートリミット処理**：RateLimiterとの連携テストが十分か確認推奨
  3. **SYSTEM_SCOPE処理**：Context::scope内でのリポジトリ操作が正しくテストされているか確認推奨

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

- E-01: `src/Core/Framework/Notification/NotificationEntity.php` - エンティティクラス（getter/setter定義）
- E-02: `src/Core/Framework/Notification/NotificationDefinition.php` - DAL定義（フィールド、保護、デフォルト値）
- E-03: `src/Core/Framework/Notification/NotificationCollection.php` - コレクションクラス定義
- E-04: `src/Core/Framework/Notification/NotificationService.php` - サービスクラス（createNotification, getNotifications, formatNotifications, isAllow）
- E-05: `src/Core/Framework/Notification/NotificationException.php` - 例外クラス（invalidAdminSource, invalidRequestParameter, notificationThrottled）
- E-06: `src/Core/Framework/Notification/Api/NotificationController.php` - APIコントローラ（saveNotification, fetchNotification）
- E-07: `src/Core/Framework/Notification/NotificationBulkEntityExtension.php` - エンティティ拡張定義

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

### NotificationEntity（UT-NOT-001 - UT-NOT-022）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getCreatedByIntegrationIdがnull許容でIntegrationIdを返す | E-01: L42-45, L153-156 | ○ |
| C-02 | setCreatedByIntegrationIdでIntegrationIdを設定 | E-01: L47-50, L158-161 | ○ |
| C-03 | getCreatedByIntegrationがIntegrationEntityまたはnullを返す | E-01: L52-55, L163-166 | ○ |
| C-04 | setCreatedByIntegrationでIntegrationEntityを設定 | E-01: L57-60, L168-171 | ○ |
| C-05 | getCreatedByUserIdがnull許容でUserIdを返す | E-01: L62-65, L173-176 | ○ |
| C-06 | setCreatedByUserIdでUserIdを設定 | E-01: L67-70, L178-181 | ○ |
| C-07 | getCreatedByUserがUserEntityまたはnullを返す | E-01: L72-75, L183-186 | ○ |
| C-08 | setCreatedByUserでUserEntityを設定 | E-01: L77-80, L188-191 | ○ |
| C-09 | isAdminOnlyがboolを返す | E-01: L82-85, L193-196 | ○ |
| C-10 | setAdminOnlyでboolを設定 | E-01: L87-90, L198-201 | ○ |
| C-11 | getRequiredPrivilegesがarray<string>を返す | E-01: L95-98, L206-209 | ○ |
| C-12 | setRequiredPrivilegesでarray<string>を設定 | E-01: L103-106, L214-217 | ○ |
| C-13 | getStatusがstringを返す | E-01: L108-111, L219-222 | ○ |
| C-14 | setStatusでstringを設定 | E-01: L113-116, L224-227 | ○ |
| C-15 | getMessageがstringを返す | E-01: L118-121, L229-232 | ○ |
| C-16 | setMessageでstringを設定 | E-01: L123-126, L234-237 | ○ |

### NotificationDefinition（UT-NOT-023 - UT-NOT-029, UT-NOT-060 - UT-NOT-064）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | getEntityNameが"notification"を返す | E-02: L27, L29-32 | ○ |
| C-18 | getCollectionClassがNotificationCollection::classを返す | E-02: L34-37 | ○ |
| C-19 | getEntityClassがNotificationEntity::classを返す | E-02: L39-42 | ○ |
| C-20 | getDefaultsがrequiredPrivileges=[], adminOnly=falseを返す | E-02: L44-50 | ○ |
| C-21 | sinceが"6.4.7.0"を返す | E-02: L52-55 | ○ |
| C-22 | defineProtectionsがReadProtectionとWriteProtectionを含む | E-02: L57-63 | ○ |
| C-23 | defineFieldsでid, status, message等が定義される | E-02: L65-80 | ○ |
| C-24 | idフィールドにPrimaryKey, Requiredフラグが設定 | E-02: L68 | ○ |
| C-25 | statusフィールドにRequiredフラグが設定 | E-02: L69 | ○ |
| C-26 | messageフィールドにRequiredフラグが設定 | E-02: L70 | ○ |
| C-27 | createdByIntegrationリレーションがIntegrationDefinitionに対して定義 | E-02: L77 | ○ |
| C-28 | createdByUserリレーションがUserDefinitionに対して定義 | E-02: L78 | ○ |

### NotificationCollection（UT-NOT-030）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 | getExpectedClassがNotificationEntity::classを返す | E-03: L19-23, L32-35 | ○ |

### NotificationService（UT-NOT-031 - UT-NOT-042）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | createNotificationでnotificationRepositoryのcreateが呼ばれる | E-04: L33-38 | ○ |
| C-31 | createNotificationがSYSTEM_SCOPE内で実行される | E-04: L35-37 | ○ |
| C-32 | getNotificationsでAdminApiSource以外は例外スロー | E-04: L46-48 | ○ |
| C-33 | getNotificationsで非管理者はadminOnly=false通知のみ取得 | E-04: L51-54 | ○ |
| C-34 | getNotificationsでlatestTimestampフィルタが適用される | E-04: L56-60 | ○ |
| C-35 | getNotificationsで通知0件時は空コレクションとnullを返す | E-04: L69-74 | ○ |
| C-36 | formatNotificationsでユーザー権限に応じてフィルタリング | E-04: L93-105 | ○ |
| C-37 | isAllowで全権限を持つ場合trueを返す | E-04: L110-119 | ○ |
| C-38 | isAllowで一部権限不足時falseを返す | E-04: L112-114 | ○ |
| C-39 | isAllowで空配列時trueを返す | E-04: L112-118 | ○ |

### NotificationException（UT-NOT-043 - UT-NOT-045）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | invalidAdminSourceがInvalidContextSourceExceptionを返す | E-05: L25-28 | ○ |
| C-41 | invalidRequestParameterがHTTP 400とINVALID_REQUEST_PARAMETER_CODEを返す | E-05: L30-37 | ○ |
| C-42 | notificationThrottledがHTTP 429とAPI_NOTIFICATION_THROTTLEDを返す | E-05: L39-49 | ○ |

### NotificationController（UT-NOT-046 - UT-NOT-057）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | saveNotificationで通知が作成されJSON{id}が返る | E-06: L48-97 | ○ |
| C-44 | saveNotificationでadminOnly=true設定可能 | E-06: L54 | ○ |
| C-45 | saveNotificationでrequiredPrivileges設定可能 | E-06: L56-60 | ○ |
| C-46 | saveNotificationでstatus空は例外スロー | E-06: L67-69 | ○ |
| C-47 | saveNotificationでmessage空は例外スロー | E-06: L71-73 | ○ |
| C-48 | saveNotificationでAdminApiSource以外は例外スロー | E-06: L62-65 | ○ |
| C-49 | saveNotificationでrequiredPrivileges不正形式は例外スロー | E-06: L56-60 | ○ |
| C-50 | saveNotificationでレートリミット超過時は例外スロー | E-06: L78-83 | ○ |
| C-51 | fetchNotificationで通知一覧とタイムスタンプが返る | E-06: L104-113 | ○ |
| C-52 | fetchNotificationでlimitパラメータが適用される | E-06: L106-107 | ○ |
| C-53 | fetchNotificationでlimit未指定時はデフォルト5が適用 | E-06: L31, L107 | ○ |
| C-54 | fetchNotificationでlatestTimestampフィルタが適用される | E-06: L108 | ○ |

### NotificationBulkEntityExtension（UT-NOT-058 - UT-NOT-059）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | collectでIntegrationDefinitionへcreatedNotificationsが定義 | E-07: L21-23 | ○ |
| C-56 | collectでUserDefinitionへcreatedNotificationsが定義 | E-07: L25-27 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースはソースコードから直接導出可能

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - NotificationEntity getter/setter（単純なプロパティアクセス）
- 0: 低リスク - NotificationDefinition メタ情報（固定値を返すメソッド）
- 0: 低リスク - NotificationCollection（単純な継承関係）
- 1: 中リスク - NotificationService（権限チェックロジックの正確性）
- 1: 中リスク - NotificationController（バリデーションと例外処理）
- 0: 低リスク - NotificationException（例外生成の定義）
- 0: 低リスク - NotificationBulkEntityExtension（静的なフィールド定義）

## 6) レビュアーチェックリスト（最小）
- [ ] NotificationServiceのisAllowメソッドの権限チェックロジックが全てのエッジケースをカバーしているか
- [ ] NotificationControllerのレートリミット処理のテストケースが十分か
- [ ] SYSTEM_SCOPE内でのリポジトリ操作が適切にモック化可能か
- [ ] AdminApiSourceとそれ以外のContextSourceの切り分けテストが適切か
- [ ] formatNotificationsのフィルタリングロジックに漏れがないか
- [ ] EntityProtectionCollection（ReadProtection/WriteProtection）のテストが統合テストで補完されるか
