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

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

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：80 / 80、根拠なし：0
- 優先レビュー（高）
  1. **LanguageLocaleCodeProvider のテスト**：親言語継承ロジックの複雑さ
  2. **LocaleException のテスト**：例外メッセージフォーマットの確認
  3. **LocaleDefinition のフィールド定義**：CascadeDelete/RestrictDeleteの挙動確認

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

- E-01: `src/Core/System/Locale/LocaleDefinition.php`
- E-02: `src/Core/System/Locale/LocaleEntity.php`
- E-03: `src/Core/System/Locale/LocaleCollection.php`
- E-04: `src/Core/System/Locale/LocaleException.php`
- E-05: `src/Core/System/Locale/LocaleEvents.php`
- E-06: `src/Core/System/Locale/LanguageLocaleCodeProvider.php`
- E-07: `src/Core/System/Locale/Aggregate/LocaleTranslation/LocaleTranslationDefinition.php`
- E-08: `src/Core/System/Locale/Aggregate/LocaleTranslation/LocaleTranslationEntity.php`
- E-09: `src/Core/System/Locale/Aggregate/LocaleTranslation/LocaleTranslationCollection.php`

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

### LocaleDefinition（UT-LOC-001 〜 UT-LOC-010）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getEntityNameが'locale'を返す | E-01 L26-31 | ○ |
| C-02 | getCollectionClassがLocaleCollection::classを返す | E-01 L33-36 | ○ |
| C-03 | getEntityClassがLocaleEntity::classを返す | E-01 L38-41 | ○ |
| C-04 | sinceが'6.0.0.0'を返す | E-01 L43-46 | ○ |
| C-05 | IdFieldにPrimaryKey, Requiredフラグがある | E-01 L51 | ○ |
| C-06 | codeフィールドにRequiredフラグがある | E-01 L52 | ○ |
| C-07 | nameがTranslatedFieldとして定義 | E-01 L53 | ○ |
| C-08 | territoryがTranslatedFieldとして定義 | E-01 L54 | ○ |
| C-09 | languagesにCascadeDeleteフラグがある | E-01 L56 | ○ |
| C-10 | usersにRestrictDeleteフラグがある | E-01 L60 | ○ |

### LocaleEntity（UT-LOC-011 〜 UT-LOC-028）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | getCodeメソッドが存在し$codeを返す | E-02 L31-34 | ○ |
| C-12 | setCodeメソッドが$codeを設定 | E-02 L36-39 | ○ |
| C-13 | getNameメソッドが存在し?stringを返す | E-02 L41-44 | ○ |
| C-14 | $nameプロパティはnull許容 | E-02 L21 | ○ |
| C-15 | setNameメソッドがnull許容 | E-02 L46-49 | ○ |
| C-16 | getTerritoryメソッドが存在 | E-02 L51-54 | ○ |
| C-17 | $territoryプロパティはnull許容 | E-02 L23 | ○ |
| C-18 | setTerritoryメソッドが存在 | E-02 L56-59 | ○ |
| C-19 | getTranslationsが?LocaleTranslationCollectionを返す | E-02 L61-64 | ○ |
| C-20 | $translationsプロパティはnull許容 | E-02 L25 | ○ |
| C-21 | setTranslationsメソッドが存在 | E-02 L66-69 | ○ |
| C-22 | getUsersが?UserCollectionを返す | E-02 L71-74 | ○ |
| C-23 | $usersプロパティはnull許容 | E-02 L27 | ○ |
| C-24 | setUsersメソッドが存在 | E-02 L76-79 | ○ |
| C-25 | getLanguagesが?LanguageCollectionを返す | E-02 L81-84 | ○ |
| C-26 | $languagesプロパティはnull許容 | E-02 L29 | ○ |
| C-27 | setLanguagesメソッドが存在 | E-02 L86-89 | ○ |

### LocaleCollection（UT-LOC-029 〜 UT-LOC-030）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | getApiAliasが'locale_collection'を返す | E-03 L14-17 | ○ |
| C-29 | getExpectedClassがLocaleEntity::classを返す | E-03 L19-22 | ○ |

### LocaleException（UT-LOC-031 〜 UT-LOC-034）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | localeDoesNotExistsがHTTP 404例外を返す | E-04 L15-23 | ○ |
| C-31 | LOCALE_DOES_NOT_EXISTS_EXCEPTION定数が存在 | E-04 L12 | ○ |
| C-32 | languageNotFoundがHTTP 412例外を返す | E-04 L25-33 | ○ |
| C-33 | LANGUAGE_NOT_FOUND定数が存在 | E-04 L13 | ○ |
| C-34 | languageNotFoundはnull引数を受け付ける | E-04 L25 | ○ |

### LanguageLocaleCodeProvider（UT-LOC-035 〜 UT-LOC-048）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | getLocaleForLanguageIdメソッドが存在 | E-06 L32-41 | ○ |
| C-36 | 存在しないIDでLocaleExceptionがスロー | E-06 L36-38 | ○ |
| C-37 | getLanguageLocalePrefixがハイフン前を返す | E-06 L27-30 | ○ |
| C-38 | getLocalesForLanguageIdsがバッチ処理 | E-06 L48-55 | ○ |
| C-39 | resetメソッドがResetInterfaceを実装 | E-06 L13, L57-60 | ○ |
| C-40 | getLanguagesがキャッシュを使用 | E-06 L65-72 | ○ |
| C-41 | resolveParentLanguagesが親言語コードを継承 | E-06 L82-93 | ○ |
| C-42 | codeがnullでなければ継承しない | E-06 L85 | ○ |
| C-43 | parentIdがnullなら継承しない | E-06 L85 | ○ |

### LocaleTranslationDefinition（UT-LOC-049 〜 UT-LOC-056）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | getEntityNameが'locale_translation'を返す | E-07 L19-22 | ○ |
| C-45 | getCollectionClassがLocaleTrCollection::classを返す | E-07 L24-27 | ○ |
| C-46 | getEntityClassがLocaleTrEntity::classを返す | E-07 L29-32 | ○ |
| C-47 | sinceが'6.0.0.0'を返す | E-07 L34-37 | ○ |
| C-48 | getParentDefinitionClassがLocaleDefinition::classを返す | E-07 L39-42 | ○ |
| C-49 | nameフィールドにRequiredフラグがある | E-07 L47 | ○ |
| C-50 | territoryフィールドにRequiredフラグがある | E-07 L48 | ○ |
| C-51 | CustomFieldsフィールドが定義されている | E-07 L49 | ○ |

### LocaleTranslationEntity（UT-LOC-057 〜 UT-LOC-067）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | getLocaleIdメソッドが存在 | E-08 L23-26 | ○ |
| C-53 | setLocaleIdメソッドが存在 | E-08 L28-31 | ○ |
| C-54 | getNameメソッドが?stringを返す | E-08 L33-36 | ○ |
| C-55 | $nameプロパティはnull許容 | E-08 L17 | ○ |
| C-56 | setNameメソッドがnull許容 | E-08 L38-41 | ○ |
| C-57 | getTerritoryメソッドが存在 | E-08 L43-46 | ○ |
| C-58 | $territoryプロパティはnull許容 | E-08 L19 | ○ |
| C-59 | setTerritoryメソッドが存在 | E-08 L48-51 | ○ |
| C-60 | getLocaleが?LocaleEntityを返す | E-08 L53-56 | ○ |
| C-61 | $localeプロパティはnull許容 | E-08 L21 | ○ |
| C-62 | setLocaleメソッドが存在 | E-08 L58-61 | ○ |

### LocaleTranslationCollection（UT-LOC-068 〜 UT-LOC-076）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | getLocaleIdsメソッドが存在 | E-09 L17-20 | ○ |
| C-64 | filterByLocaleIdメソッドが存在 | E-09 L22-25 | ○ |
| C-65 | getLanguageIdsメソッドが存在 | E-09 L30-33 | ○ |
| C-66 | filterByLanguageIdメソッドが存在 | E-09 L35-38 | ○ |
| C-67 | getApiAliasが'locale_translation_collection'を返す | E-09 L40-43 | ○ |
| C-68 | getExpectedClassがLocaleTrEntity::classを返す | E-09 L45-48 | ○ |

### LocaleEvents（UT-LOC-077 〜 UT-LOC-080）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | LOCALE_WRITTEN_EVENT定数が'locale.written' | E-05 L10 | ○ |
| C-70 | LOCALE_DELETED_EVENT定数が'locale.deleted' | E-05 L12 | ○ |
| C-71 | LOCALE_LOADED_EVENT定数が'locale.loaded' | E-05 L14 | ○ |
| C-72 | LOCALE_TRANSLATION_WRITTEN_EVENT定数が存在 | E-05 L22 | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし
  - 全てのテストケースはソースコードから直接導出されており、根拠不足の項目はありません

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 全てのテストケースがソースコードに基づいており、推測や仮定に基づく項目がない

### 補足事項
- LanguageLocaleCodeProviderの`resolveParentLanguages`メソッドは親言語のコード継承ロジックを含むため、統合テストでの動作確認も推奨
- LocaleExceptionの`$couldNotFindMessage`は親クラスHttpExceptionで定義されているstaticプロパティを参照

## 6) レビュアーチェックリスト（最小）
- [ ] LanguageLocaleCodeProviderの親言語継承ロジック（UT-LOC-046〜048）が実際の業務要件と合致しているか
- [ ] LocaleExceptionのHTTPステータスコード（404, 412）がAPI設計と整合しているか
- [ ] LocaleDefinitionのCascadeDelete/RestrictDeleteフラグが参照整合性要件を満たしているか
- [ ] LocaleTranslationCollectionのフィルタリングメソッドが期待通りの絞り込みを行うか
- [ ] EntityCustomFieldsTraitの使用箇所でカスタムフィールドが正しく処理されるか
