---
generated_at: 2026-01-29 14:30:00
metrics:
  claims_total: 120
  claims_with_evidence: 118
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート: Core-Checkout-Order 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：118 / 120、根拠なし：2
- 優先レビュー（高）
  1. **UT-ORD-088**: onAddStateEvents の動作詳細は外部ステートマシンに依存
  2. **UT-ORD-098**: PaymentRefundProcessor の内部実装に依存

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

- E-01: `src/Core/Checkout/Order/OrderEntity.php` - エンティティクラス定義
- E-02: `src/Core/Checkout/Order/OrderDefinition.php` - DAL定義
- E-03: `src/Core/Checkout/Order/OrderCollection.php` - コレクションクラス
- E-04: `src/Core/Checkout/Order/OrderException.php` - 例外クラス
- E-05: `src/Core/Checkout/Order/OrderAddressService.php` - 住所更新サービス
- E-06: `src/Core/Checkout/Order/SalesChannel/OrderService.php` - 注文サービス
- E-07: `src/Core/Checkout/Order/SalesChannel/CancelOrderRoute.php` - キャンセルルート
- E-08: `src/Core/Checkout/Order/SalesChannel/SetPaymentOrderRoute.php` - 支払方法変更ルート
- E-09: `src/Core/Checkout/Order/SalesChannel/OrderRoute.php` - 注文取得ルート
- E-10: `src/Core/Checkout/Order/Aggregate/OrderTransaction/OrderTransactionStateHandler.php` - トランザクション状態ハンドラ
- E-11: `src/Core/Checkout/Order/Listener/OrderStateChangeEventListener.php` - ステート変更リスナー
- E-12: `src/Core/Checkout/Order/Subscriber/OrderSalutationSubscriber.php` - 敬称サブスクライバー
- E-13: `src/Core/Checkout/Order/Validation/OrderValidationFactory.php` - バリデーションファクトリ
- E-14: `src/Core/Checkout/Order/Api/OrderActionController.php` - APIコントローラー
- E-15: `src/Core/Checkout/Order/Event/OrderStateMachineStateChangeEvent.php` - ステート変更イベント
- E-16: `src/Core/Checkout/Order/Event/OrderPaymentMethodChangedEvent.php` - 支払方法変更イベント
- E-17: `src/Core/Checkout/Order/Aggregate/OrderLineItem/OrderLineItemEntity.php` - 明細エンティティ
- E-18: `src/Core/Checkout/Order/Aggregate/OrderLineItem/OrderLineItemCollection.php` - 明細コレクション
- E-19: `src/Core/Checkout/Order/OrderStates.php` - 注文ステート定数
- E-20: `src/Core/Checkout/Order/Aggregate/OrderTransaction/OrderTransactionStates.php` - トランザクションステート定数

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

### OrderEntity関連 (UT-ORD-001 - UT-ORD-010)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getNestedLineItems: 親LineItemのみ返却 | E-01: L467-481 | ○ |
| C-02 | getNestedLineItems: nullの場合null返却 | E-01: L471-473 | ○ |
| C-03 | getNestedLineItems: 子LineItemが親にセット | E-01: L659-670 addChildrenメソッド | ○ |
| C-04 | getCurrencyId: 通貨ID取得 | E-01: L137-140 | ○ |
| C-05 | getAmountTotal: 合計金額取得 | E-01: L207-209 | ○ |
| C-06 | getAmountNet: 税抜金額取得 | E-01: L212-214 | ○ |
| C-07 | getShippingTotal: 送料合計取得 | E-01: L237-240 | ○ |
| C-08 | getDeepLinkCode: ディープリンクコード取得 | E-01: L332-335 | ○ |
| C-09 | getRuleIds: ルールID配列取得 | E-01: L546-549 | ○ |
| C-10 | getRuleIds: 空配列の境界値 | E-01: L119 初期値が空配列 | ○ |

### OrderCollection関連 (UT-ORD-011 - UT-ORD-016)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | getCurrencyIds: 全通貨ID取得 | E-03: L21-24 | ○ |
| C-12 | filterByCurrencyId: 通貨IDフィルタ | E-03: L26-29 | ○ |
| C-13 | filterByCurrencyId: 該当なしで空 | E-03: L26-29 filter実装 | ○ |
| C-14 | filterBySalesChannelId: チャネルフィルタ | E-03: L39-42 | ○ |
| C-15 | getOrderCustomers: 顧客取得 | E-03: L44-49 | ○ |
| C-16 | getBillingAddress: 請求先住所取得 | E-03: L65-70 | ○ |

### OrderDefinition関連 (UT-ORD-017 - UT-ORD-019)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | getEntityName: エンティティ名 | E-02: L56-61 | ○ |
| C-18 | getCollectionClass: コレクションクラス | E-02: L63-66 | ○ |
| C-19 | getEntityClass: エンティティクラス | E-02: L68-71 | ○ |

### OrderException関連 (UT-ORD-020 - UT-ORD-030)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 | missingAssociation: 例外生成 | E-04: L42-50 | ○ |
| C-21 | orderDeliveryNotFound: 配送未検出例外 | E-04: L52-60 | ○ |
| C-22 | orderNotFound: 注文未検出例外 | E-04: L120-128 | ○ |
| C-23 | orderTransactionNotFound: トランザクション未検出例外 | E-04: L72-80 | ○ |
| C-24 | paymentMethodNotAvailable: 支払方法利用不可例外 | E-04: L82-90 | ○ |
| C-25 | orderAlreadyPaid: 支払済み例外 | E-04: L92-100 | ○ |
| C-26 | paymentMethodNotChangeable: 支払方法変更不可例外 | E-04: L102-109 | ○ |
| C-27 | orderNotCancellable: キャンセル不可例外 | E-04: L111-118 | ○ |
| C-28 | customerNotLoggedIn: 未ログイン例外 | E-04: L150-157 | ○ |
| C-29 | invalidOrderAddressMapping: 不正マッピング例外 | E-04: L177-184 | ○ |
| C-30 | invalidUuid: 不正UUID例外 | E-04: L223-231 | ○ |

### OrderAddressService関連 (UT-ORD-031 - UT-ORD-039)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | updateOrderAddresses: 請求先更新 | E-05: L93-118 handleBillingAddress | ○ |
| C-32 | updateOrderAddresses: 配送先更新 | E-05: L125-157 handleShippingAddress | ○ |
| C-33 | updateOrderAddresses: 注文未検出例外 | E-05: L54-56 | ○ |
| C-34 | updateOrderAddresses: 顧客住所未検出例外 | E-05: L166-168 | ○ |
| C-35 | updateOrderAddresses: 配送未検出例外 | E-05: L135-137 | ○ |
| C-36 | updateOrderAddresses: 不正type例外 | E-05: L294-296 | ○ |
| C-37 | updateOrderAddresses: 必須フィールド欠落例外 | E-05: L290-292 | ○ |
| C-38 | updateOrderAddresses: 複数請求先例外 | E-05: L307-309 | ○ |
| C-39 | updateOrderAddresses: deliveryId欠落例外 | E-05: L298-300 | ○ |

### OrderService関連 (UT-ORD-040 - UT-ORD-051)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | createOrder: 注文作成 | E-06: L69-86 | ○ |
| C-41 | createOrder: バリデーションエラー | E-06: L236-247 | ○ |
| C-42 | createOrder: 支払方法無効例外 | E-06: L205-230 validateCart | ○ |
| C-43 | createOrder: デジタル商品撤回同意 | E-06: L73-79, L256-258 | ○ |
| C-44 | orderStateTransition: ステータス遷移 | E-06: L91-120 | ○ |
| C-45 | orderStateTransition: 不正遷移例外 | E-06: L116-117 | ○ |
| C-46 | orderTransactionStateTransition: 遷移 | E-06: L125-154 | ○ |
| C-47 | orderDeliveryStateTransition: 遷移 | E-06: L159-188 | ○ |
| C-48 | isPaymentChangeableByTransactionState: open | E-06: L190-203, L42-49 ALLOWED_TRANSACTION_STATES | ○ |
| C-49 | isPaymentChangeableByTransactionState: cancelled | E-06: L42-49 | ○ |
| C-50 | isPaymentChangeableByTransactionState: paid | E-06: L42-49（paidは含まれない） | ○ |
| C-51 | isPaymentChangeableByTransactionState: トランザクションなし | E-06: L198-200 | ○ |

### CancelOrderRoute関連 (UT-ORD-052 - UT-ORD-056)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | cancel: 注文キャンセル | E-07: L51-73 | ○ |
| C-53 | cancel: 返金無効例外 | E-07: L53-55 | ○ |
| C-54 | cancel: orderId欠落例外 | E-07: L57-61 | ○ |
| C-55 | cancel: 未ログイン例外 | E-07: L77-79 verify | ○ |
| C-56 | cancel: 他顧客注文例外 | E-07: L81-87 | ○ |

### SetPaymentOrderRoute関連 (UT-ORD-057 - UT-ORD-063)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-57 | setPayment: 支払方法変更 | E-08: L72-99 | ○ |
| C-58 | setPayment: 不正paymentMethodId | E-08: L74-77 | ○ |
| C-59 | setPayment: 不正orderId | E-08: L79-82 | ○ |
| C-60 | setPayment: 利用不可支払方法 | E-08: L155-164 validateRequest | ○ |
| C-61 | setPayment: 支払済み例外 | E-08: L283-290 validatePaymentState | ○ |
| C-62 | setPayment: 既存トランザクションreopen | E-08: L166-229 tryTransition | ○ |
| C-63 | setPayment: 新トランザクション作成 | E-08: L101-153 setPaymentMethod | ○ |

### OrderRoute関連 (UT-ORD-064 - UT-ORD-070)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | load: 注文一覧取得 | E-09: L67-158 | ○ |
| C-65 | load: 未ログインdeepLinkなし例外 | E-09: L86-94 | ○ |
| C-66 | load: ゲスト注文取得 | E-09: L107-132 | ○ |
| C-67 | load: 不正認証情報例外 | E-09: L254-260 checkGuestAuth | ○ |
| C-68 | load: レートリミット例外 | E-09: L111-114 | ○ |
| C-69 | load: 古い注文フィルタ | E-09: L225-230 filterOldOrders | ○ |
| C-70 | load: checkPromotion | E-09: L139-151 | ○ |

### OrderTransactionStateHandler関連 (UT-ORD-071 - UT-ORD-082)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | reopen: トランザクションreopen | E-10: L30-41 | ○ |
| C-72 | fail: トランザクションfail | E-10: L48-59 | ○ |
| C-73 | process: トランザクションprocess | E-10: L66-77 | ○ |
| C-74 | paid: トランザクションpaid | E-10: L102-113 | ○ |
| C-75 | paidPartially: 部分支払 | E-10: L137-148 | ○ |
| C-76 | refund: 返金 | E-10: L155-166 | ○ |
| C-77 | refundPartially: 部分返金 | E-10: L173-184 | ○ |
| C-78 | cancel: キャンセル | E-10: L191-202 | ○ |
| C-79 | remind: リマインド | E-10: L209-220 | ○ |
| C-80 | authorize: 認可 | E-10: L227-238 | ○ |
| C-81 | chargeback: チャージバック | E-10: L245-256 | ○ |
| C-82 | reopen: 不正遷移例外 | E-10: L26-28 StateMachineException | ○ |

### OrderStateChangeEventListener関連 (UT-ORD-083 - UT-ORD-088)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-83 | onOrderStateChange: イベントディスパッチ | E-11: L104-112 | ○ |
| C-84 | onOrderDeliveryStateChange: イベントディスパッチ | E-11: L61-77 | ○ |
| C-85 | onOrderDeliveryStateChange: 配送未検出例外 | E-11: L69-71 | ○ |
| C-86 | onOrderTransactionStateChange: イベントディスパッチ | E-11: L82-102 | ○ |
| C-87 | onOrderTransactionStateChange: トランザクション未検出例外 | E-11: L94-96 | ○ |
| C-88 | onAddStateEvents: イベント登録 | E-11: L114-152 | △ |

### OrderSalutationSubscriber関連 (UT-ORD-089 - UT-ORD-090)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-89 | setDefaultSalutation: デフォルトセット | E-12: L34-47, L50-64 | ○ |
| C-90 | setDefaultSalutation: 既存値保持 | E-12: L38-40 | ○ |

### OrderValidationFactory関連 (UT-ORD-091 - UT-ORD-093)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-91 | create: バリデーション定義作成 | E-13: L23-26 | ○ |
| C-92 | create: ToS必須 | E-13: L35-41 | ○ |
| C-93 | create: ToS不要 | E-13: L35-41（条件分岐） | ○ |

### OrderActionController関連 (UT-ORD-094 - UT-ORD-098)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-94 | orderStateTransition: API遷移 | E-14: L45-78 | ○ |
| C-95 | orderStateTransition: ドキュメントID取得 | E-14: L51-57, L184-235 | ○ |
| C-96 | orderTransactionStateTransition: API遷移 | E-14: L85-118 | ○ |
| C-97 | orderDeliveryStateTransition: API遷移 | E-14: L125-158 | ○ |
| C-98 | refundOrderTransactionCapture: 返金処理 | E-14: L169-174 | △ |

### Event関連 (UT-ORD-099 - UT-ORD-104)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-99 | OrderStateMachineStateChangeEvent: getMailStruct | E-15: L47-61 | ○ |
| C-100 | OrderStateMachineStateChangeEvent: getMailStruct例外 | E-15: L50-53 | ○ |
| C-101 | OrderStateMachineStateChangeEvent: getCustomerId | E-15: L83-92 | ○ |
| C-102 | OrderStateMachineStateChangeEvent: getCustomerId例外 | E-15: L87-89 | ○ |
| C-103 | OrderPaymentMethodChangedEvent: getMailStruct | E-16: L57-71 | ○ |
| C-104 | OrderPaymentMethodChangedEvent: getCustomerId例外 | E-16: L90-98 | ○ |

### OrderLineItem関連 (UT-ORD-105 - UT-ORD-117)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-105 | getPayloadValue: 値取得 | E-17: L254-261 | ○ |
| C-106 | getPayloadValue: 存在しないキー | E-17: L260 | ○ |
| C-107 | hasPayloadValue: 存在する場合 | E-17: L263-266 | ○ |
| C-108 | hasPayloadValue: 存在しない場合 | E-17: L263-266 | ○ |
| C-109 | filterByOrderId: 注文IDフィルタ | E-18: L27-29 | ○ |
| C-110 | filterByType: タイプフィルタ | E-18: L59-62 | ○ |
| C-111 | filterGoodsFlat: goodsフラット取得 | E-18: L67-79 | ○ |
| C-112 | hasLineItemWithType: 存在する場合 | E-18: L81-90 | ○ |
| C-113 | hasLineItemWithType: 存在しない場合 | E-18: L81-90 | ○ |
| C-114 | sortByPosition: positionソート | E-18: L43-45 | ○ |
| C-115 | sortByCreationDate: 昇順ソート | E-18: L31-39 | ○ |
| C-116 | sortByCreationDate: 降順ソート | E-18: L31-39 | ○ |
| C-117 | getPrices: 価格取得 | E-18: L116-120 | ○ |

### OrderStates定数 (UT-ORD-118 - UT-ORD-120)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-118 | STATE_MACHINE定数 | E-19: L10 | ○ |
| C-119 | STATE_OPEN定数 | E-19: L11 | ○ |
| C-120 | STATE_CANCELLED定数 | E-19: L14 | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-ORD-088 (onAddStateEvents)**: BusinessEventCollectorの内部動作とStateMachineの完全なステート定義は外部依存のため、実際のステート一覧は別途確認が必要
  - 候補：`src/Core/System/StateMachine/` / ステートマシン定義ファイル / データベースマイグレーション
- **UT-ORD-098 (refundOrderTransactionCapture)**: PaymentRefundProcessorの内部実装は別モジュール
  - 候補：`src/Core/Checkout/Payment/Cart/PaymentRefundProcessor.php`

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: Entity/Collection のGetter/Setter、定数確認
- **1 (中リスク)**: バリデーション、フィルタリング、イベント関連
- **2 (高リスク)**:
  - 金額計算関連（UT-ORD-005, 006, 007）
  - 状態遷移関連（UT-ORD-044 - 047, 071 - 082）
  - 認証・認可関連（UT-ORD-055, 056, 065 - 068）
  - 支払処理関連（UT-ORD-057 - 063, 098）

## 6) レビュアーチェックリスト（最小）
- [ ] 金額計算のテストケース（UT-ORD-005, 006, 007）で小数点精度を考慮しているか
- [ ] 状態遷移のテストケースで全ての許可された遷移パターンを網羅しているか
- [ ] 認証・認可のテストケースでセキュリティ観点が十分か
- [ ] 例外処理のテストケースでHTTPステータスコードが適切か
- [ ] 境界値テストで空配列・null・最大値のケースが含まれているか
- [ ] イベントディスパッチのテストケースでイベントの内容検証を含めているか
- [ ] PaymentRefundProcessor関連のテストは別途統合テストで補完が必要か確認
