---
generated_at: 2026-02-24 10:30:00
metrics:
  claims_total: 95
  claims_with_evidence: 89
  claims_without_evidence: 6
confidence_derived: 0.94
---

# 根拠レポート：pricing.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.94**
  - 根拠あり：89 / 95、根拠なし：6
- 優先レビュー（高）
  1. **C-71, C-72**：キャッシュ関連メソッドはプライベートメソッドのため直接テスト困難
  2. **C-52, C-53, C-54**：normalizePricesは内部メソッドで直接テストの可否要確認
  3. **C-59, C-60**：hashPriceはモジュールスコープの関数で直接テスト可否要確認

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

- E-01: `packages/modules/pricing/src/services/pricing-module.ts`
- E-02: `packages/modules/pricing/src/repositories/pricing.ts`
- E-03: `packages/modules/pricing/src/utils/validate-price-list-dates.ts`
- E-04: `packages/modules/pricing/src/models/price-set.ts`
- E-05: `packages/modules/pricing/src/models/price.ts`
- E-06: `packages/modules/pricing/src/models/price-list.ts`
- E-07: `packages/modules/pricing/src/models/price-rule.ts`
- E-08: `packages/modules/pricing/src/models/price-list-rule.ts`
- E-09: `packages/modules/pricing/src/models/price-preference.ts`
- E-10: `packages/modules/pricing/src/joiner-config.ts`
- E-11: `packages/modules/pricing/src/types/services/index.ts`
- E-12: `packages/modules/pricing/src/index.ts`

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | retrievePriceSet正常系 - 存在するIDで価格セットを取得できること | E-01 (L229-241) | ○ |
| C-02 | retrievePriceSet異常系 - 存在しないIDで例外がスローされること | E-01 (priceSetService_.retrieve) | ○ |
| C-03 | listPriceSets正常系 - フィルターなしで全価格セットを取得できること | E-01 (L245-282) | ○ |
| C-04 | listPriceSets正常系 - calculated_priceリレーションで計算価格取得 | E-01 (L251-279) | ○ |
| C-05 | listPriceSets境界値 - 空の結果が返却される場合 | E-01 (L261-263) | ○ |
| C-06 | listAndCountPriceSets正常系 - 価格セット一覧とカウントを取得 | E-01 (L286-330) | ○ |
| C-07 | listAndCountPriceSets正常系 - calculated_priceを含む場合 | E-01 (L292-328) | ○ |
| C-08 | calculatePrices正常系 - currency_codeを指定して価格計算 | E-01 (L389-555), E-02 | ○ |
| C-09 | calculatePrices正常系 - OVERRIDEタイプの価格リスト優先 | E-01 (L423-427) | ○ |
| C-10 | calculatePrices正常系 - SALEタイプで最安値選択 | E-01 (L428-443) | ○ |
| C-11 | calculatePrices異常系 - currency_codeなしで例外 | E-02 (L82-87) | ○ |
| C-12 | calculatePrices正常系 - region_idに基づくtax_inclusive判定 | E-01 (L507-526, L1781-1808) | ○ |
| C-13 | calculatePrices境界値 - 該当する価格がない場合 | E-01 (L490-494) | ○ |
| C-14 | createPriceSets正常系 - 単一の価格セット作成 | E-01 (L572-600) | ○ |
| C-15 | createPriceSets正常系 - 複数の価格セット一括作成 | E-01 (L576) | ○ |
| C-16 | createPriceSets正常系 - 価格ルールを含む価格セット作成 | E-01 (L1300-1321) | ○ |
| C-17 | upsertPriceSets正常系 - IDなしで新規作成 | E-01 (L638-639) | ○ |
| C-18 | upsertPriceSets正常系 - IDありで更新 | E-01 (L636-637) | ○ |
| C-19 | updatePriceSets正常系 - IDで価格セット更新 | E-01 (L672-709) | ○ |
| C-20 | updatePriceSets正常系 - セレクターで複数更新 | E-01 (L683-693) | ○ |
| C-21 | updatePriceSets異常系 - 存在しないIDで例外 | E-01 (L680) | ○ |
| C-22 | updatePriceSets正常系 - 価格ルールの追加・更新・削除 | E-01 (L762-846) | ○ |
| C-23 | addPrices正常系 - 価格セットに価格追加 | E-01 (L988-1017) | ○ |
| C-24 | addPrices異常系 - 存在しない価格セットIDで例外 | E-01 (L1365-1370) | ○ |
| C-25 | createPriceLists正常系 - 価格リスト作成 | E-01 (L1022-1035) | ○ |
| C-26 | createPriceLists正常系 - ルールを含む価格リスト作成 | E-01 (L1403-1421) | ○ |
| C-27 | createPriceLists正常系 - starts_at/ends_at正規化 | E-01 (L1757-1758) | ○ |
| C-28 | updatePriceLists正常系 - 価格リスト更新 | E-01 (L1040-1053) | ○ |
| C-29 | updatePriceLists異常系 - 存在しない価格リストIDで例外 | E-01 (L1445-1453) | ○ |
| C-30 | updatePriceListPrices正常系 - 価格リストの価格更新 | E-01 (L1057-1070) | ○ |
| C-31 | updatePriceListPrices異常系 - 存在しない価格リストIDで例外 | E-01 (L1537-1542) | ○ |
| C-32 | removePrices正常系 - 価格削除 | E-01 (L1074-1083, L1554-1560) | ○ |
| C-33 | addPriceListPrices正常系 - 価格リストに価格追加 | E-01 (L1087-1100) | ○ |
| C-34 | addPriceListPrices異常系 - 存在しない価格リストIDで例外 | E-01 (L1597-1605) | ○ |
| C-35 | setPriceListRules正常系 - 価格リストにルール設定 | E-01 (L1104-1117) | ○ |
| C-36 | setPriceListRules正常系 - 既存ルールがマージ | E-01 (L1647-1667) | ○ |
| C-37 | removePriceListRules正常系 - ルール削除 | E-01 (L1121-1130) | ○ |
| C-38 | listPriceRules正常系 - 価格ルール一覧取得 | E-01 (L334-348) | ○ |
| C-39 | listPricePreferences正常系 - 価格設定一覧取得 | E-01 (L360-374) | ○ |
| C-40 | createPricePreferences正常系 - 単一の価格設定作成 | E-01 (L1144-1160) | ○ |
| C-41 | createPricePreferences正常系 - 複数の価格設定一括作成 | E-01 (L1150-1151) | ○ |
| C-42 | createPricePreferences正常系 - is_tax_inclusiveのデフォルト値がfalse | E-01 (L1278) | ○ |
| C-43 | upsertPricePreferences正常系 - IDなしで新規作成 | E-01 (L1196-1198) | ○ |
| C-44 | upsertPricePreferences正常系 - IDありで更新 | E-01 (L1190-1195) | ○ |
| C-45 | updatePricePreferences正常系 - IDで価格設定更新 | E-01 (L1231-1268) | ○ |
| C-46 | updatePricePreferences正常系 - セレクターで複数更新 | E-01 (L1246-1256) | ○ |
| C-47 | updatePricePreferences異常系 - 存在しないIDで例外 | E-01 (L1239-1243) | ○ |
| C-48 | createPriceRules正常系 - 価格ルール作成 | E-01 (L176-184) | ○ |
| C-49 | updatePriceRules正常系 - 価格ルール更新 | E-01 (L189-197) | ○ |
| C-50 | createPriceListRules正常系 - 価格リストルール作成 | E-01 (L202-211) | ○ |
| C-51 | updatePriceListRules正常系 - 価格リストルール更新 | E-01 (L216-225) | ○ |
| C-52 | normalizePrices正常系 - ハッシュ化と重複排除 | E-01 (L897-976) | △ |
| C-53 | normalizePrices異常系 - 不正なオペレーターで例外 | E-01 (L923-928) | ○ |
| C-54 | normalizePrices異常系 - ルール値が数値でない場合に例外 | E-01 (L930-935) | ○ |
| C-55 | normalizePriceListDate正常系 - 日付がISO文字列に変換 | E-01 (L1747-1767) | ○ |
| C-56 | isTaxInclusive正常系 - region_idルールと設定がある場合 | E-01 (L1787-1801) | ○ |
| C-57 | isTaxInclusive正常系 - region_idがない場合にcurrency_code使用 | E-01 (L1803-1805) | ○ |
| C-58 | isTaxInclusive正常系 - 設定がない場合にfalse | E-01 (L1807) | ○ |
| C-59 | hashPrice正常系 - 価格のハッシュ文字列生成 | E-01 (L1810-1844) | △ |
| C-60 | hashPrice正常系 - price_rulesを含むハッシュ生成 | E-01 (L1834-1841) | △ |
| C-61 | buildPreNormalizationPriceConstraintsFromData正常系 - 検索制約生成 | E-01 (L1850-1922) | △ |
| C-62 | buildPreNormalizationPriceConstraintsFromData正常系 - ID分離処理 | E-01 (L1909-1917) | △ |
| C-63 | PricingRepository.calculatePrices正常系 - 価格計算 | E-02 (L65-294) | ○ |
| C-64 | PricingRepository.calculatePrices正常系 - 数量フィルタ | E-02 (L130-158) | ○ |
| C-65 | PricingRepository.calculatePrices正常系 - LATERAL JOIN使用 | E-02 (L224-252) | ○ |
| C-66 | PricingRepository.calculatePrices異常系 - currency_codeなしで例外 | E-02 (L82-87) | ○ |
| C-67 | PricingRepository.calculatePrices正常系 - アクティブな価格リストのみ | E-02 (L162) | ○ |
| C-68 | PricingRepository.calculatePrices正常系 - starts_at/ends_atフィルタ | E-02 (L166-171) | ○ |
| C-69 | PricingRepository.calculatePrices正常系 - rules_count=0マッチ | E-02 (L259, L280) | ○ |
| C-70 | PricingRepository.calculatePrices正常系 - 数値演算子処理 | E-02 (L178-187) | ○ |
| C-71 | PricingRepository.clearAvailableAttributes正常系 | E-02 (L33-35) | △ |
| C-72 | PricingRepository.#cacheAvailableAttributes正常系 | E-02 (L37-57) | △ |
| C-73 | validatePriceListDates正常系 - 有効なDate型 | E-03 (L3-20) | ○ |
| C-74 | validatePriceListDates正常系 - 有効な日付文字列 | E-03 (L7, L14) | ○ |
| C-75 | validatePriceListDates異常系 - 不正なstarts_at | E-03 (L7-12) | ○ |
| C-76 | validatePriceListDates異常系 - 不正なends_at | E-03 (L14-19) | ○ |
| C-77 | validatePriceListDates正常系 - null値許容 | E-03 (L7, L14) | ○ |
| C-78 | PriceSet model - IDプレフィックスがpset | E-04 (L6) | ○ |
| C-79 | PriceSet cascades - pricesカスケード削除 | E-04 (L11-13) | ○ |
| C-80 | Price model - IDプレフィックスがprice | E-05 (L8) | ○ |
| C-81 | Price model - rules_countデフォルト0 | E-05 (L14) | ○ |
| C-82 | Price cascades - price_rulesカスケード削除 | E-05 (L27-29) | ○ |
| C-83 | PriceList model - IDプレフィックスがplist | E-06 (L11) | ○ |
| C-84 | PriceList model - statusデフォルトDRAFT | E-06 (L14) | ○ |
| C-85 | PriceList model - typeデフォルトSALE | E-06 (L15) | ○ |
| C-86 | PriceList cascades - 関連エンティティカスケード削除 | E-06 (L26-28) | ○ |
| C-87 | PriceRule model - IDプレフィックスがprule | E-07 (L6) | ○ |
| C-88 | PriceRule model - operatorデフォルトEQ | E-07 (L9) | ○ |
| C-89 | PriceRule model - priorityデフォルト0 | E-07 (L10) | ○ |
| C-90 | PriceRule index - ユニーク制約 | E-07 (L16-20) | ○ |
| C-91 | PriceListRule model - valueがJSON型 | E-08 (L8) | ○ |
| C-92 | PricePreference model - IDプレフィックスがprpref | E-09 (L5) | ○ |
| C-93 | PricePreference model - is_tax_inclusiveデフォルトfalse | E-09 (L8) | ○ |
| C-94 | PricePreference index - ユニーク制約 | E-09 (L11-16) | ○ |
| C-95 | joinerConfig - 4つのモデル含む | E-10 (L5) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-52, C-59, C-60, C-61, C-62**: normalizePrices、hashPrice、buildPreNormalizationPriceConstraintsFromDataはモジュールスコープまたはプライベートメソッドであり、直接単体テストが困難な可能性あり
  - 候補：統合テストでカバー / サービスメソッド経由でテスト / テスト用にエクスポート検討
- **C-71, C-72**: PricingRepositoryの#cacheAvailableAttributesとclearAvailableAttributesはプライベートメソッドまたは内部キャッシュ管理のため、直接テストが困難
  - 候補：calculatePricesの複数回呼び出しテストでカバー / キャッシュ動作の間接テスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: モデル定義のテストケース（C-78〜C-95）- 設定確認のみで実装変更リスク低
- **1（中リスク）**: 内部ヘルパー関数のテストケース（C-52〜C-62）- 直接テスト可否の確認が必要
- **2（高リスク）**: 価格計算ロジック（C-08〜C-13, C-63〜C-70）- ビジネスクリティカルな処理のため十分なカバレッジ確保が必要

## 6) レビュアーチェックリスト（最小）
- [ ] 価格計算（calculatePrices）の正常系・異常系・境界値テストケースが網羅されているか
- [ ] OVERRIDEとSALEの価格リストタイプのロジックが正しくテストされているか
- [ ] 税込判定（isTaxInclusive）のロジックが全パターンカバーされているか
- [ ] カスケード削除のテストがモデルの依存関係を正しく反映しているか
- [ ] プライベート/内部メソッドのテスト方針が確定しているか
- [ ] 数値演算子（gt/gte/lt/lte）のエッジケースがカバーされているか
