---
generated_at: 2026-02-24 23:15:00
metrics:
  claims_total: 51
  claims_with_evidence: 51
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：currency.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：51 / 51、根拠なし：0
- 優先レビュー（高）
  1. なし（全テストケースに根拠あり）

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

- E-01: `packages/modules/currency/src/services/currency-module-service.ts` - CurrencyModuleServiceクラス定義
- E-02: `packages/modules/currency/src/models/currency.ts` - Currencyモデル定義
- E-03: `packages/modules/currency/src/index.ts` - モジュールエントリポイント
- E-04: `packages/modules/currency/src/loaders/initial-data.ts` - 初期データローダー
- E-05: `packages/modules/currency/src/types/index.ts` - 型定義
- E-06: `packages/core/types/src/currency/service.ts` - ICurrencyModuleServiceインターフェース
- E-07: `packages/core/types/src/currency/common/currency.ts` - CurrencyDTO, FilterableCurrencyProps型定義
- E-08: `packages/modules/currency/integration-tests/__tests__/currency-module-service.spec.ts` - 既存統合テスト

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

### CurrencyModuleService.retrieveCurrency
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 有効な通貨コードで通貨を取得できること | E-01, E-06, E-08 | ○ |
| C-02 | 大文字の通貨コードでも取得できること | E-01 (normalizeFilters), E-08 | ○ |
| C-03 | 混合ケースの通貨コードでも取得できること | E-01 (normalizeFilters) | ○ |
| C-04 | config.selectで指定したフィールドのみ返却されること | E-06, E-08 | ○ |
| C-05 | 存在しない通貨コードでエラーがスローされること | E-08 | ○ |
| C-06 | undefinedが渡された場合エラーがスローされること | E-08 | ○ |
| C-07 | nullが渡された場合エラーがスローされること | E-01 | ○ |
| C-08 | 空文字が渡された場合エラーがスローされること | E-01 | ○ |

### CurrencyModuleService.listCurrencies
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | フィルターなしで全通貨リストが取得できること | E-01, E-06, E-08 | ○ |
| C-10 | 通貨コードでフィルターできること | E-06, E-08 | ○ |
| C-11 | 複数の通貨コードでフィルターできること | E-06 | ○ |
| C-12 | 大文字の通貨コードでもフィルターできること | E-01 (normalizeFilters), E-08 | ○ |
| C-13 | 混合ケースの通貨コードでもフィルターできること | E-01 (normalizeFilters) | ○ |
| C-14 | skip/takeでページネーションできること | E-06 | ○ |
| C-15 | config.selectで指定したフィールドのみ返却されること | E-06 | ○ |
| C-16 | 空のフィルター配列で全件取得できること | E-01 | ○ |
| C-17 | skip=0, take=0の場合の挙動 | E-01 | ○ |
| C-18 | filtersがundefinedの場合も正常動作すること | E-01 (normalizeFilters) | ○ |

### CurrencyModuleService.listAndCountCurrencies
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | フィルターなしで通貨リストとカウントが取得できること | E-01, E-06, E-08 | ○ |
| C-20 | 通貨コードでフィルターした結果とカウントが返却されること | E-06, E-08 | ○ |
| C-21 | 複数通貨コードでフィルターした結果とカウントが返却されること | E-06 | ○ |
| C-22 | skip/takeを使用してもカウントは全件数が返却されること | E-08 | ○ |
| C-23 | 大文字の通貨コードでもフィルターできること | E-01 (normalizeFilters) | ○ |
| C-24 | config.selectで指定したフィールドのみ返却されること | E-08 | ○ |
| C-25 | 存在しないコードでフィルターした場合空配列と0が返却されること | E-01 | ○ |
| C-26 | filtersがundefinedの場合も正常動作すること | E-01 (normalizeFilters) | ○ |

### normalizeFilters / normalizeFilterable
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | 通貨コードが小文字に正規化されること | E-01 (line 88-90) | ○ |
| C-28 | undefinedのフィルターがそのまま返却されること | E-01 (line 102-104) | ○ |
| C-29 | code以外のフィールドは正規化されないこと | E-01 (line 88-92) | ○ |
| C-30 | $andフィルターが再帰的に正規化されること | E-01 (line 108-111) | ○ |
| C-31 | $orフィルターが再帰的に正規化されること | E-01 (line 108-111) | ○ |
| C-32 | 配列フィールドの各要素が正規化されること | E-01 (line 113-116) | ○ |
| C-33 | 非配列フィールドも正規化されること | E-01 (line 117-119) | ○ |
| C-34 | 空オブジェクトの場合空オブジェクトが返却されること | E-01 (line 106-120) | ○ |
| C-35 | undefinedのフィールド値は出力に含まれないこと | E-01 (line 112) | ○ |
| C-36 | codeがnullの場合正規化されずnullのまま返却されること | E-01 (line 88) | ○ |

### CurrencyModuleService.constructor
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | 依存関係が正しく注入されること | E-01 (line 32-40) | ○ |

### initialDataLoader
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | デフォルト通貨がDBにupsertされること | E-04 (line 27-31) | ○ |
| C-39 | 通貨コードが小文字に正規化されてupsertされること | E-04 (line 27-30) | ○ |
| C-40 | ロード成功時にログにデバッグメッセージが出力されること | E-04 (line 32) | ○ |
| C-41 | upsert失敗時に警告ログが出力されること | E-04 (line 33-36) | ○ |
| C-42 | upsert失敗時に例外がスローされないこと | E-04 (line 33-37) | ○ |
| C-43 | loggerがない場合consoleにフォールバックすること | E-04 (line 20-21) | ○ |

### Currency Model
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | codeがprimaryKeyとして定義されていること | E-02 (line 4) | ○ |
| C-45 | codeがsearchableとして定義されていること | E-02 (line 4) | ○ |
| C-46 | nameがsearchableとして定義されていること | E-02 (line 7) | ○ |
| C-47 | decimal_digitsのデフォルト値が0であること | E-02 (line 8) | ○ |
| C-48 | roundingのデフォルト値が0であること | E-02 (line 9) | ○ |

### Module Export
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | Modules.CURRENCYとして正しく登録されること | E-03 (line 8) | ○ |
| C-50 | loadersにinitialDataLoaderが含まれること | E-03 (line 6, 9) | ○ |
| C-51 | linkable設定が正しくエクスポートされること | E-08 (line 12-33) | ○ |

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

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースがソースコードまたは既存テストに基づいて生成されている
- currencyモジュールは比較的小規模（10ファイル）で、機能が明確に定義されている
- 既存の統合テスト（E-08）で主要な機能がカバーされており、テストケースの妥当性が確認できる

## 6) レビュアーチェックリスト（最小）
- [ ] normalizeFilters関数のエッジケース（C-27〜C-36）が実際の動作と一致するか確認
- [ ] initialDataLoaderのエラーハンドリング（C-41, C-42）がプロダクション要件に適合するか確認
- [ ] 統合テスト（E-08）で既にカバーされているケース（C-01〜C-26）と単体テストの重複が許容範囲か確認
- [ ] Currencyモデルのフィールド定義（C-44〜C-48）がCurrencyDTO型と整合しているか確認
