---
generated_at: 2026-02-24 23:05:00
metrics:
  claims_total: 100
  claims_with_evidence: 95
  claims_without_evidence: 5
confidence_derived: 0.95
---

# 根拠レポート：cart.csv（単体テストケース一覧）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：95 / 100、根拠なし：5
- 優先レビュー（高）
  1. **UT-CRT-005**：currency_code未指定時のバリデーションエラー動作は推測
  2. **UT-CRT-025**：数量0の場合の挙動はコードから明示されていない
  3. **UT-CRT-088**：チェック制約のエラーメッセージは実装依存
  4. **UT-CRT-091**：チェック制約のエラーメッセージは実装依存
  5. **UT-CRT-086**：全フィールドnullableは型定義から確認可能だが実行時動作は要確認

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

- E-01: `packages/modules/cart/src/services/cart-module.ts` - CartModuleServiceの実装
- E-02: `packages/modules/cart/src/models/cart.ts` - Cartモデル定義
- E-03: `packages/modules/cart/src/models/line-item.ts` - LineItemモデル定義
- E-04: `packages/modules/cart/src/models/address.ts` - Addressモデル定義
- E-05: `packages/modules/cart/src/models/shipping-method.ts` - ShippingMethodモデル定義
- E-06: `packages/modules/cart/src/models/line-item-adjustment.ts` - LineItemAdjustmentモデル定義
- E-07: `packages/modules/cart/src/models/line-item-tax-line.ts` - LineItemTaxLineモデル定義
- E-08: `packages/modules/cart/src/models/shipping-method-adjustment.ts` - ShippingMethodAdjustmentモデル定義
- E-09: `packages/modules/cart/src/models/shipping-method-tax-line.ts` - ShippingMethodTaxLineモデル定義
- E-10: `packages/modules/cart/src/models/credit-line.ts` - CreditLineモデル定義
- E-11: `packages/modules/cart/src/types/cart.ts` - Cart型定義
- E-12: `packages/modules/cart/src/types/line-item.ts` - LineItem型定義
- E-13: `packages/modules/cart/src/types/shipping-method.ts` - ShippingMethod型定義

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

### CartModuleService - createCarts関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 単一のカートが正常に作成される | E-01 (L261-290) createCartsメソッドの実装 | ○ |
| C-02 | 複数のカートが一括で作成される | E-01 (L293-340) createCarts_メソッドのバッチ処理 | ○ |
| C-03 | カート作成時にアイテムも同時に作成される | E-01 (L311-325) アイテム作成ロジック | ○ |
| C-04 | 住所付きカートが作成される | E-01 (L327-333) リレーション取得ロジック | ○ |
| C-05 | currency_code未指定時のバリデーションエラー | E-11 currency_code必須定義 | △ |
| C-06 | アイテム0件でカートのみ作成される | E-01 (L313-321) items.lengthチェック | ○ |

### CartModuleService - retrieveCart/listCarts関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 | IDでカートを取得できる | E-01 (L198-214) retrieveCartメソッド | ○ |
| C-08 | 合計金額フィールドを含むカート取得 | E-01 (L137-169) shouldIncludeTotals, L209-211 decorateCartTotals | ○ |
| C-09 | 存在しないカートIDでエラー | E-01 super.retrieveCart呼び出し | ○ |
| C-10 | フィルタなしで全カート取得 | E-01 (L216-234) listCartsメソッド | ○ |
| C-11 | region_idでフィルタリング | E-01 (L216-234) filtersパラメータ | ○ |
| C-12 | 合計金額を含めてカート一覧取得 | E-01 (L227-231) decorateCartTotalsループ | ○ |
| C-13 | カート0件で空配列返却 | E-01 listCarts実装（フレームワーク動作） | ○ |
| C-14 | カート一覧と件数を取得 | E-01 (L236-258) listAndCountCartsメソッド | ○ |
| C-15 | ページネーション動作 | E-01 (L236-258) configパラメータ | ○ |

### CartModuleService - updateCarts関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | IDでカートを更新 | E-01 (L359-381) updateCartsメソッド | ○ |
| C-17 | 配列で複数カート一括更新 | E-01 (L400-401) Array.isArray分岐 | ○ |
| C-18 | セレクタで複数カート更新 | E-01 (L402-415) セレクタ処理ロジック | ○ |
| C-19 | 存在しないカートIDでエラー | E-01 cartService_.update呼び出し | ○ |
| C-20 | customer_idをnullに設定可能 | E-11 customer_id?: string | null 型定義 | ○ |

### CartModuleService - addLineItems関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | カートにアイテムを追加 | E-01 (L433-470) addLineItemsメソッド | ○ |
| C-22 | 単一データ形式でアイテム追加 | E-01 (L462-464) 配列変換ロジック | ○ |
| C-23 | 配列形式で複数アイテム一括追加 | E-01 (L462-464) バルク追加ロジック | ○ |
| C-24 | 存在しないカートIDでエラー | E-01 (L478-482) cartService_.retrieve | ○ |
| C-25 | 数量0の場合の挙動 | **根拠なし** | △ |

### CartModuleService - updateLineItems関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | アイテムIDで更新 | E-01 (L525-577) updateLineItemsメソッド | ○ |
| C-27 | 配列形式で複数アイテム一括更新 | E-01 (L548-557) 配列処理ロジック | ○ |
| C-28 | セレクタで複数アイテム更新 | E-01 (L593-615) updateLineItemsWithSelector_ | ○ |
| C-29 | 存在しないアイテムIDでエラー | E-01 lineItemService_.update呼び出し | ○ |

### CartModuleService - Address関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | 単一の住所が作成できる | E-01 (L617-647) createAddressesメソッド | ○ |
| C-31 | 複数の住所を一括作成 | E-01 (L635-636) 配列処理 | ○ |
| C-32 | 全フィールドnullで住所作成 | E-04 全フィールドnullable定義 | ○ |
| C-33 | 住所を更新 | E-01 (L657-695) updateAddressesメソッド | ○ |
| C-34 | 複数の住所を一括更新 | E-01 (L675-676) 配列処理 | ○ |

### CartModuleService - ShippingMethods関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | カートに配送方法を追加 | E-01 (L697-741) addShippingMethodsメソッド | ○ |
| C-36 | 単一データ形式で配送方法追加 | E-01 (L730-735) 変換ロジック | ○ |
| C-37 | 配列形式で複数配送方法追加 | E-01 (L730-735) バルク追加 | ○ |
| C-38 | 存在しないカートIDでエラー | E-01 (L749-753) cartService_.retrieve | ○ |
| C-39 | 金額0の配送方法作成 | E-05 (L44) amount >= 0 チェック制約 | ○ |
| C-40 | 配送方法を更新 | E-01 (L421-431) updateShippingMethodsメソッド | ○ |

### CartModuleService - LineItemAdjustments関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | カートIDを指定してアイテム調整追加 | E-01 (L776-807) addLineItemAdjustmentsメソッド | ○ |
| C-42 | 単一データ形式でアイテム調整追加 | E-01 (L841-847) 変換ロジック | ○ |
| C-43 | 配列形式で複数調整追加 | E-01 (L841-847) バルク追加 | ○ |
| C-44 | カートに存在しないアイテムIDでエラー | E-01 (L828-835) lineIds.includes チェック | ○ |
| C-45 | Upsert機能 | E-01 (L888-921) upsertLineItemAdjustmentsメソッド | ○ |
| C-46 | 既存の調整が更新される | E-01 (L907-918) lineItemAdjustmentService_.upsert | ○ |
| C-47 | カートのアイテム調整を設定 | E-01 (L993-1065) setLineItemAdjustmentsメソッド | ○ |
| C-48 | 既存の調整が新しいものに置き換わる | E-01 (L1041-1057) softDelete + upsert | ○ |
| C-49 | 空配列で全調整削除 | E-01 (L1052-1057) toDelete処理 | ○ |

### CartModuleService - LineItemTaxLines関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-50 | カートIDを指定して税金行追加 | E-01 (L1231-1266) addLineItemTaxLinesメソッド | ○ |
| C-51 | 単一データ形式で税金行追加 | E-01 (L1304-1314) 変換ロジック | ○ |
| C-52 | 存在しないカートIDでエラー | E-01 (L1291-1296) INVALID_DATAエラー | ○ |
| C-53 | Upsert機能 | E-01 (L853-886) upsertLineItemTaxLinesメソッド | ○ |
| C-54 | カートの税金行を設定 | E-01 (L1320-1387) setLineItemTaxLinesメソッド | ○ |
| C-55 | 既存の税金行が新しいものに置き換わる | E-01 (L1379-1384) promiseAll処理 | ○ |
| C-56 | 空配列で全税金行削除 | E-01 (L1379-1384) softDelete処理 | ○ |

### CartModuleService - ShippingMethodAdjustments関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-57 | カートIDを指定して配送調整追加 | E-01 (L1142-1177) addShippingMethodAdjustmentsメソッド | ○ |
| C-58 | 単一データ形式で配送調整追加 | E-01 (L1215-1225) 変換ロジック | ○ |
| C-59 | カートに存在しない配送方法IDでエラー | E-01 (L1202-1209) methodIds.includes チェック | ○ |
| C-60 | Upsert機能 | E-01 (L958-991) upsertShippingMethodAdjustmentsメソッド | ○ |
| C-61 | カートの配送調整を設定 | E-01 (L1067-1140) setShippingMethodAdjustmentsメソッド | ○ |
| C-62 | 既存の配送調整が新しいものに置き換わる | E-01 (L1127-1137) softDelete + upsert | ○ |
| C-63 | 空配列で全配送調整削除 | E-01 (L1127-1131) toDelete処理 | ○ |

### CartModuleService - ShippingMethodTaxLines関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | カートIDを指定して配送税金行追加 | E-01 (L1389-1426) addShippingMethodTaxLinesメソッド | ○ |
| C-65 | 単一データ形式で配送税金行追加 | E-01 (L1464-1471) 変換ロジック | ○ |
| C-66 | 存在しないカートIDでエラー | E-01 (L1451-1456) INVALID_DATAエラー | ○ |
| C-67 | Upsert機能 | E-01 (L923-956) upsertShippingMethodTaxLinesメソッド | ○ |
| C-68 | カートの配送税金行を設定 | E-01 (L1480-1549) setShippingMethodTaxLinesメソッド | ○ |
| C-69 | 既存の配送税金行が新しいものに置き換わる | E-01 (L1538-1546) promiseAll処理 | ○ |
| C-70 | 空配列で全配送税金行削除 | E-01 (L1542-1546) softDelete処理 | ○ |

### CartModuleService - shouldIncludeTotals/addRelationsToCalculateTotals
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | total系フィールドでtrue返却 | E-01 (L137-169) totalFields配列 | ○ |
| C-72 | subtotal系フィールドでtrue返却 | E-01 (L137-169) totalFields配列 | ○ |
| C-73 | 非計算フィールドでfalse返却 | E-01 (L160-163) some()ロジック | ○ |
| C-74 | 空配列でfalse返却 | E-01 (L160-163) some()ロジック | ○ |
| C-75 | 必要なリレーションが追加される | E-01 (L171-196) requiredFieldsForTotals配列 | ○ |

### モデル定義
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-76 | Cartモデル定義 | E-02 model.define | ○ |
| C-77 | カスケード削除（Cart） | E-02 (L48-55) cascades定義 | ○ |
| C-78 | カートからアイテム一覧取得 | E-02 (L38-40) items hasMany | ○ |
| C-79 | カートから配送方法一覧取得 | E-02 (L44-46) shipping_methods hasMany | ○ |
| C-80 | LineItemモデル定義 | E-03 model.define | ○ |
| C-81 | カスケード削除（LineItem） | E-03 (L69-71) cascades定義 | ○ |
| C-82 | requires_shippingデフォルトtrue | E-03 (L28) default(true) | ○ |
| C-83 | is_discountableデフォルトtrue | E-03 (L29) default(true) | ○ |
| C-84 | is_giftcardデフォルトfalse | E-03 (L30) default(false) | ○ |
| C-85 | Addressモデル定義 | E-04 model.define | ○ |
| C-86 | 全フィールドnullable（Address） | E-04 全nullable()指定 | ○ |
| C-87 | ShippingMethodモデル定義 | E-05 model.define | ○ |
| C-88 | amount >= 0チェック制約 | E-05 (L44) checks定義 | △ |
| C-89 | is_tax_inclusiveデフォルトfalse | E-05 (L17) default(false) | ○ |
| C-90 | LineItemAdjustmentモデル定義 | E-06 model.define | ○ |
| C-91 | amount >= 0チェック制約（調整） | E-06 (L33) checks定義 | △ |
| C-92 | 調整からアイテム取得 | E-06 (L16-18) belongsTo定義 | ○ |
| C-93 | LineItemTaxLineモデル定義 | E-07 model.define | ○ |
| C-94 | 税金行からアイテム取得 | E-07 (L18-20) belongsTo定義 | ○ |
| C-95 | ShippingMethodAdjustmentモデル定義 | E-08 model.define | ○ |
| C-96 | 調整から配送方法取得 | E-08 (L18-20) belongsTo定義 | ○ |
| C-97 | ShippingMethodTaxLineモデル定義 | E-09 model.define | ○ |
| C-98 | 税金行から配送方法取得 | E-09 (L18-20) belongsTo定義 | ○ |
| C-99 | CreditLineモデル定義 | E-10 model.define | ○ |
| C-100 | クレジットラインからカート取得 | E-10 (L7-9) belongsTo定義 | ○ |

## 4) 不足情報（Unknown / Missing）

### 根拠不足の項目

1. **C-05 (UT-CRT-005)**: currency_code未指定時のバリデーションエラー
   - 型定義ではcurrency_codeは必須だが、実行時のバリデーションエラーメッセージは実装依存
   - 候補：フレームワークのバリデーション層 / MedusaError.Types.INVALID_DATA

2. **C-25 (UT-CRT-025)**: 数量0の場合の挙動
   - コード上で数量0に対する明示的なバリデーションは確認できない
   - 候補：DBレベルの制約 / ビジネスロジック層での検証

3. **C-88 (UT-CRT-088)**: ShippingMethodのamountチェック制約
   - チェック制約は定義されているが、違反時のエラーメッセージはDBドライバ依存
   - 候補：PostgreSQLエラー / MikroORMエラーハンドリング

4. **C-91 (UT-CRT-091)**: LineItemAdjustmentのamountチェック制約
   - 同上
   - 候補：PostgreSQLエラー / MikroORMエラーハンドリング

5. **C-86 (UT-CRT-086)**: 全フィールドnullableで住所作成
   - 型定義では全フィールドnullableだが、実行時の動作確認が必要
   - 候補：統合テストでの確認

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 理由 |
|-------------|------|------|
| 1 | 金額計算関連テスト | 金額計算ロジックのエッジケース（負数、小数点以下）の網羅性 |
| 1 | チェック制約テスト | DB依存のエラーハンドリングの正確性 |
| 0 | CRUD基本操作 | ソースコードから明確に確認可能 |
| 0 | リレーション取得 | モデル定義から明確に確認可能 |
| 1 | 境界値テスト | 一部のエッジケースは実装から推測 |

## 6) レビュアーチェックリスト（最小）

- [ ] C-05: currency_code未指定時のエラーメッセージを確認
- [ ] C-25: 数量0のアイテム作成時の挙動を統合テストで確認
- [ ] C-88, C-91: チェック制約違反時のエラーハンドリングを確認
- [ ] 金額関連テスト（合計計算、調整、税金）の網羅性を確認
- [ ] カスケード削除のテストケースが実際のカスケード動作と一致するか確認
- [ ] upsert操作のID生成ロジック（generateEntityId）の動作確認
