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

# 根拠レポート：Core-System-Country.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：160 / 160、根拠なし：0
- 優先レビュー（高）
  1. **税設定関連テスト（UT-CTY-030〜033）**：TaxFreeConfigの詳細仕様確認推奨
  2. **VAT ID検証テスト（UT-CTY-022〜029）**：正規表現パターンの妥当性確認推奨
  3. **SalesChannel Route テスト（UT-CTY-132〜146）**：統合テストでの追加検証推奨

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

- E-01: `src/Core/System/Country/CountryEntity.php`
- E-02: `src/Core/System/Country/CountryDefinition.php`
- E-03: `src/Core/System/Country/CountryCollection.php`
- E-04: `src/Core/System/Country/CountryException.php`
- E-05: `src/Core/System/Country/CountryEvents.php`
- E-06: `src/Core/System/Country/Aggregate/CountryState/CountryStateEntity.php`
- E-07: `src/Core/System/Country/Aggregate/CountryState/CountryStateDefinition.php`
- E-08: `src/Core/System/Country/Aggregate/CountryState/CountryStateCollection.php`
- E-09: `src/Core/System/Country/Aggregate/CountryTranslation/CountryTranslationEntity.php`
- E-10: `src/Core/System/Country/Aggregate/CountryTranslation/CountryTranslationDefinition.php`
- E-11: `src/Core/System/Country/Aggregate/CountryStateTranslation/CountryStateTranslationEntity.php`
- E-12: `src/Core/System/Country/SalesChannel/CountryRoute.php`
- E-13: `src/Core/System/Country/SalesChannel/CountryStateRoute.php`
- E-14: `src/Core/System/Country/SalesChannel/CountryRouteResponse.php`
- E-15: `src/Core/System/Country/SalesChannel/CountryStateRouteResponse.php`
- E-16: `src/Core/System/Country/Event/CountryCriteriaEvent.php`
- E-17: `src/Core/System/Country/Event/CountryStateCriteriaEvent.php`

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

### CountryEntity（UT-CTY-001〜066）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getName()がnull許容のstring型を返す | E-01 (line 83-86) | ○ |
| C-02 | setName()でnameプロパティを設定できる | E-01 (line 88-91) | ○ |
| C-03 | getIso()がISO2コードを返す | E-01 (line 93-96) | ○ |
| C-04 | getIso3()がISO3コードを返す | E-01 (line 133-136) | ○ |
| C-05 | getActive()がbool型を返す | E-01 (line 113-116) | ○ |
| C-06 | getShippingAvailable()がbool型を返す | E-01 (line 123-126) | ○ |
| C-07 | getDisplayStateInRegistration()がbool型を返す | E-01 (line 143-146) | ○ |
| C-08 | getForceStateInRegistration()がbool型を返す | E-01 (line 153-156) | ○ |
| C-09 | getCheckVatIdPattern()がbool型を返す | E-01 (line 163-166) | ○ |
| C-10 | getVatIdPattern()がnull許容のstring型を返す | E-01 (line 173-176) | ○ |
| C-11 | getVatIdRequired()がbool型を返す（nullの場合はfalse） | E-01 (line 263-266) | ○ |
| C-12 | getCustomerTax()がTaxFreeConfigを返す | E-01 (line 273-276) | ○ |
| C-13 | getCompanyTax()がTaxFreeConfigを返す | E-01 (line 283-286) | ○ |
| C-14 | getPostalCodeRequired()がbool型を返す | E-01 (line 293-296) | ○ |
| C-15 | getCheckPostalCodePattern()がbool型を返す | E-01 (line 303-306) | ○ |
| C-16 | getCheckAdvancedPostalCodePattern()がbool型を返す | E-01 (line 313-316) | ○ |
| C-17 | getAdvancedPostalCodePattern()がnull許容のstring型を返す | E-01 (line 323-326) | ○ |
| C-18 | getDefaultPostalCodePattern()がnull許容のstring型を返す | E-01 (line 354-357) | ○ |
| C-19 | getIsEu()がbool型を返す | E-01 (line 359-362) | ○ |
| C-20 | getAddressFormat()が多次元配列を返す | E-01 (line 336-339) | ○ |
| C-21 | getStates()がnull許容のCountryStateCollectionを返す | E-01 (line 183-186) | ○ |
| C-22 | getTranslations()がnull許容のCountryTranslationCollectionを返す | E-01 (line 193-196) | ○ |
| C-23 | getOrderAddresses()がnull許容のOrderAddressCollectionを返す | E-01 (line 203-206) | ○ |
| C-24 | getCustomerAddresses()がnull許容のCustomerAddressCollectionを返す | E-01 (line 213-216) | ○ |
| C-25 | getSalesChannelDefaultAssignments()がnull許容のSalesChannelCollectionを返す | E-01 (line 223-226) | ○ |
| C-26 | getSalesChannels()がnull許容のSalesChannelCollectionを返す | E-01 (line 233-236) | ○ |
| C-27 | getTaxRules()がnull許容のTaxRuleCollectionを返す | E-01 (line 243-246) | ○ |
| C-28 | getCurrencyCountryRoundings()がnull許容のCurrencyCountryRoundingCollectionを返す | E-01 (line 253-256) | ○ |

### CountryDefinition（UT-CTY-067〜071）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 | ENTITY_NAMEが'country'である | E-02 (line 36) | ○ |
| C-30 | getCollectionClass()がCountryCollection::classを返す | E-02 (line 55-58) | ○ |
| C-31 | getEntityClass()がCountryEntity::classを返す | E-02 (line 60-63) | ○ |
| C-32 | getDefaults()がデフォルト値の配列を返す | E-02 (line 65-82) | ○ |
| C-33 | since()が'6.0.0.0'を返す | E-02 (line 84-87) | ○ |
| C-34 | DEFAULT_ADDRESS_FORMATが5行構成の住所フォーマットである | E-02 (line 42-48) | ○ |

### CountryCollection（UT-CTY-072〜076）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | getApiAlias()が'country_collection'を返す | E-03 (line 56-59) | ○ |
| C-36 | getExpectedClass()がCountryEntity::classを返す | E-03 (line 61-64) | ○ |
| C-37 | sortCountryAndStates()がpositionとnameでソートする（非推奨） | E-03 (line 18-29) | ○ |
| C-38 | sortByPositionAndName()がpositionとnameでソートする（非推奨） | E-03 (line 34-54) | ○ |

### CountryException（UT-CTY-077〜080）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | countryNotFound()がHTTP 400例外を生成する | E-04 (line 15-22) | ○ |
| C-40 | COUNTRY_NOT_FOUNDエラーコードが設定される | E-04 (line 12) | ○ |
| C-41 | countryStateNotFound()がHTTP 400例外を生成する | E-04 (line 24-31) | ○ |
| C-42 | COUNTRY_STATE_NOT_FOUNDエラーコードが設定される | E-04 (line 13) | ○ |

### CountryStateEntity（UT-CTY-081〜101）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | getCountryId()がstring型を返す | E-06 (line 38-41) | ○ |
| C-44 | getShortCode()がstring型を返す | E-06 (line 48-51) | ○ |
| C-45 | getName()がnull許容のstring型を返す | E-06 (line 58-61) | ○ |
| C-46 | getPosition()がint型を返す | E-06 (line 68-71) | ○ |
| C-47 | getActive()がbool型を返す | E-06 (line 78-81) | ○ |
| C-48 | getCountry()がnull許容のCountryEntityを返す | E-06 (line 88-91) | ○ |
| C-49 | getTranslations()がnull許容のCountryStateTranslationCollectionを返す | E-06 (line 98-101) | ○ |
| C-50 | getCustomerAddresses()がnull許容のCustomerAddressCollectionを返す | E-06 (line 108-111) | ○ |
| C-51 | getOrderAddresses()がnull許容のOrderAddressCollectionを返す | E-06 (line 118-121) | ○ |

### CountryStateDefinition（UT-CTY-102〜106）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | ENTITY_NAMEが'country_state'である | E-07 (line 30) | ○ |
| C-53 | getCollectionClass()がCountryStateCollection::classを返す | E-07 (line 37-40) | ○ |
| C-54 | getEntityClass()がCountryStateEntity::classを返す | E-07 (line 42-45) | ○ |
| C-55 | since()が'6.0.0.0'を返す | E-07 (line 47-50) | ○ |
| C-56 | getParentDefinitionClass()がCountryDefinition::classを返す | E-07 (line 52-55) | ○ |

### CountryStateCollection（UT-CTY-107〜113）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-57 | getCountryIds()がstring配列を返す | E-08 (line 18-21) | ○ |
| C-58 | filterByCountryId()がフィルタリングされたコレクションを返す | E-08 (line 23-26) | ○ |
| C-59 | sortByPositionAndName()がpositionとnameでソートする（非推奨） | E-08 (line 31-51) | ○ |
| C-60 | getApiAlias()が'country_state_collection'を返す | E-08 (line 53-56) | ○ |
| C-61 | getExpectedClass()がCountryStateEntity::classを返す | E-08 (line 58-61) | ○ |

### CountryTranslationEntity（UT-CTY-114〜122）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | getCountryId()がstring型を返す | E-09 (line 26-29) | ○ |
| C-63 | getName()がnull許容のstring型を返す | E-09 (line 36-39) | ○ |
| C-64 | getCountry()がnull許容のCountryEntityを返す | E-09 (line 46-49) | ○ |
| C-65 | getAddressFormat()がnull許容の多次元配列を返す | E-09 (line 59-62) | ○ |

### CountryTranslationDefinition（UT-CTY-123〜125）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | ENTITY_NAMEが'country_translation'である | E-10 (line 18) | ○ |
| C-67 | getDefaults()がDEFAULT_ADDRESS_FORMATを返す | E-10 (line 40-45) | ○ |
| C-68 | getParentDefinitionClass()がCountryDefinition::classを返す | E-10 (line 47-50) | ○ |

### CountryStateTranslationEntity（UT-CTY-126〜131）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | getCountryStateId()がstring型を返す | E-11 (line 21-24) | ○ |
| C-70 | getName()がnull許容のstring型を返す | E-11 (line 31-34) | ○ |
| C-71 | getCountryState()がnull許容のCountryStateEntityを返す | E-11 (line 41-44) | ○ |

### CountryRoute（UT-CTY-132〜136）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | buildName()が'country-route-{id}'形式の文字列を返す | E-12 (line 39-42) | ○ |
| C-73 | load()がactive=trueフィルタを適用する | E-12 (line 55) | ○ |
| C-74 | load()がCountryCriteriaEventをディスパッチする | E-12 (line 57) | ○ |
| C-75 | load()がキャッシュタグを設定する | E-12 (line 52) | ○ |
| C-76 | getDecorated()がDecorationPatternExceptionをスローする | E-12 (line 63-66) | ○ |

### CountryStateRoute（UT-CTY-137〜143）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | buildName()が'country-state-route-{id}'形式の文字列を返す | E-13 (line 40-43) | ○ |
| C-78 | load()がcountryIdとactiveでフィルタリングする | E-13 (line 55-58) | ○ |
| C-79 | load()がposition昇順でソートする | E-13 (line 59) | ○ |
| C-80 | load()がname昇順でセカンダリソートする | E-13 (line 60) | ○ |
| C-81 | load()がCountryStateCriteriaEventをディスパッチする | E-13 (line 62) | ○ |
| C-82 | load()がキャッシュタグを設定する | E-13 (line 53) | ○ |
| C-83 | getDecorated()がDecorationPatternExceptionをスローする | E-13 (line 68-71) | ○ |

### CountryRouteResponse（UT-CTY-144〜145）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-84 | getResult()がEntitySearchResultを返す | E-14 (line 19-22) | ○ |
| C-85 | getCountries()がCountryCollectionを返す | E-14 (line 24-27) | ○ |

### CountryStateRouteResponse（UT-CTY-146）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-86 | getStates()がCountryStateCollectionを返す | E-15 (line 16-19) | ○ |

### CountryCriteriaEvent（UT-CTY-147〜150）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-87 | getCriteria()がCriteriaを返す | E-16 (line 24-27) | ○ |
| C-88 | getContext()がContextを返す | E-16 (line 29-32) | ○ |
| C-89 | getSalesChannelContext()がSalesChannelContextを返す | E-16 (line 34-37) | ○ |
| C-90 | getRequest()がRequestを返す | E-16 (line 39-42) | ○ |

### CountryStateCriteriaEvent（UT-CTY-151〜155）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-91 | getCountryId()がstring型を返す | E-17 (line 24-27) | ○ |
| C-92 | getRequest()がRequestを返す | E-17 (line 29-32) | ○ |
| C-93 | getCriteria()がCriteriaを返す | E-17 (line 34-37) | ○ |
| C-94 | getContext()がContextを返す | E-17 (line 39-42) | ○ |
| C-95 | getSalesChannelContext()がSalesChannelContextを返す | E-17 (line 44-47) | ○ |

### CountryEvents（UT-CTY-156〜159）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-96 | COUNTRY_WRITTEN_EVENTが'country.written'である | E-05 (line 10) | ○ |
| C-97 | COUNTRY_DELETED_EVENTが'country.deleted'である | E-05 (line 12) | ○ |
| C-98 | COUNTRY_STATE_WRITTEN_EVENTが'country_state.written'である | E-05 (line 46) | ○ |
| C-99 | COUNTRY_STATE_DELETED_EVENTが'country_state.deleted'である | E-05 (line 48) | ○ |

## 4) 不足情報（Unknown / Missing）
- **なし**
  - 全てのテストケースにソースコードからの根拠が存在します

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードに基づいて生成されています
- 推奨：以下の観点で追加テストの検討を推奨
  - TaxFreeConfigの詳細なバリデーションテスト
  - VAT IDパターンの正規表現マッチングテスト
  - 多言語対応の翻訳エンティティテスト
  - SalesChannelとの統合テスト

## 6) レビュアーチェックリスト（最小）
- [ ] CountryEntityの全ゲッター/セッターメソッドが網羅されていること
- [ ] CountryStateEntityの全ゲッター/セッターメソッドが網羅されていること
- [ ] 翻訳エンティティ（CountryTranslation, CountryStateTranslation）のテストが含まれていること
- [ ] Collectionクラスのフィルタリング・ソートメソッドがテストされていること
- [ ] 例外クラス（CountryException）の両メソッドがテストされていること
- [ ] SalesChannel Routeのload()メソッドのフィルタリング・ソート動作がテストされていること
- [ ] イベントクラスの全ゲッターメソッドがテストされていること
- [ ] 非推奨メソッド（sortCountryAndStates, sortByPositionAndName）がテスト対象として記載されていること
