---
generated_at: 2026-02-24 19:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：plugins-draft-order 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-PDO-099（SDK初期化）**：グローバル変数の設定に依存、環境依存の確認が必要
  2. **UT-PDO-100（型定義検証）**：TypeScriptの型検証はコンパイル時の確認が必要

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

- E-01: `packages/plugins/draft-order/src/admin/lib/utils/date-utils.ts`
- E-02: `packages/plugins/draft-order/src/admin/lib/utils/order-utils.ts`
- E-03: `packages/plugins/draft-order/src/admin/lib/utils/number-utils.ts`
- E-04: `packages/plugins/draft-order/src/admin/lib/utils/address-utils.ts`
- E-05: `packages/plugins/draft-order/src/admin/lib/utils/string-utils.ts`
- E-06: `packages/plugins/draft-order/src/admin/lib/data/currencies.ts`
- E-07: `packages/plugins/draft-order/src/admin/lib/data/countries.ts`
- E-08: `packages/plugins/draft-order/src/admin/lib/schemas/address.ts`
- E-09: `packages/plugins/draft-order/src/admin/hooks/api/draft-orders.tsx`
- E-10: `packages/plugins/draft-order/src/admin/hooks/api/orders.tsx`
- E-11: `packages/plugins/draft-order/src/admin/hooks/common/use-debounced-search.tsx`
- E-12: `packages/plugins/draft-order/src/admin/hooks/common/use-query-params.tsx`
- E-13: `packages/plugins/draft-order/src/admin/hooks/common/use-combobox-data.tsx`
- E-14: `packages/plugins/draft-order/src/admin/hooks/common/use-data-table-date-filters.tsx`
- E-15: `packages/plugins/draft-order/src/admin/hooks/order-edits/use-initiate-order-edit.tsx`
- E-16: `packages/plugins/draft-order/src/admin/hooks/order-edits/use-cancel-order-edit.tsx`
- E-17: `packages/plugins/draft-order/src/admin/components/modals/stacked-modal-provider/stacked-modal-provider.tsx`
- E-18: `packages/plugins/draft-order/src/admin/components/modals/stacked-modal-provider/use-stacked-modal.ts`
- E-19: `packages/plugins/draft-order/src/admin/lib/queries/sdk.ts`
- E-20: `packages/plugins/draft-order/src/types/http/draft-orders/payloads.ts`

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

### ユーティリティ関数 (date-utils.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getRelativeDateは有効な日付文字列から相対日付を取得する | E-01 (L6-13) | ○ |
| C-02 | getRelativeDateはDateオブジェクトも処理できる | E-01 (L6-13) | ○ |
| C-03 | getFullDateは日付文字列から完全な日付表示を取得する | E-01 (L15-33) | ○ |
| C-04 | getFullDateはincludeTimeオプションで時刻を含められる | E-01 (L28-30) | ○ |
| C-05 | getFullDateは無効な日付で空文字列を返す | E-01 (L24-26) | ○ |

### ユーティリティ関数 (order-utils.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-06 | getUniqueShippingProfilesはユニークな配送プロファイルを抽出する | E-02 (L3-14) | ○ |
| C-07 | getUniqueShippingProfilesは空配列で空配列を返す | E-02 (L7-13) | ○ |
| C-08 | getUniqueShippingProfilesはMap使用で重複を除去する | E-02 (L6) | ○ |
| C-09 | getItemsWithShippingProfileは指定IDに一致するアイテムをフィルタする | E-02 (L16-24) | ○ |
| C-10 | getItemsWithShippingProfileは一致なしで空配列を返す | E-02 (L20-23) | ○ |
| C-11 | getOrderCustomerは顧客情報から名前を取得する | E-02 (L26-40) | ○ |
| C-12 | getOrderCustomerは配送先住所にフォールバックする | E-02 (L27-28, 37) | ○ |
| C-13 | getOrderCustomerは請求先住所にもフォールバックする | E-02 (L29-30, 37) | ○ |
| C-14 | getOrderCustomerはデータなしで空文字列を返す | E-02 (L37) | ○ |

### ユーティリティ関数 (number-utils.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | convertNumberは数値をそのまま返す | E-03 (L2) | ○ |
| C-16 | convertNumberは文字列を数値に変換する | E-03 (L2) | ○ |
| C-17 | convertNumberはカンマをピリオドに変換する | E-03 (L2) | ○ |
| C-18 | convertNumberはundefinedでundefinedを返す | E-03 (L1-2) | ○ |

### ユーティリティ関数 (address-utils.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | isSameAddressは同一住所でtrueを返す | E-04 (L4-24) | ○ |
| C-20 | isSameAddressは異なる住所でfalseを返す | E-04 (L12-23) | ○ |
| C-21 | isSameAddressは一方がnullでfalseを返す | E-04 (L8-10) | ○ |
| C-22 | isSameAddressは両方nullでfalseを返す | E-04 (L8-10) | ○ |
| C-23 | getFormattedAddressは完全な住所をフォーマットする | E-04 (L26-88) | ○ |
| C-24 | getFormattedAddressは部分情報も処理する | E-04 (L49-73) | ○ |
| C-25 | getFormattedAddressはnullで空配列を返す | E-04 (L29-31) | ○ |
| C-26 | getFormattedAddressは国コードから国名を取得する | E-04 (L77-84) | ○ |
| C-27 | getFormattedAddressは不明な国コードを大文字表示する | E-04 (L82-84) | ○ |

### ユーティリティ関数 (string-utils.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | pluralizeはcount=1で単数形を返す | E-05 (L1-3) | ○ |
| C-29 | pluralizeはcount>=2で複数形を返す | E-05 (L2) | ○ |
| C-30 | pluralizeはcount=0で複数形を返す | E-05 (L2) | ○ |

### 通貨関連関数 (currencies.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | getLocaleAmountはロケール形式で金額をフォーマットする | E-06 (L1-9) | ○ |
| C-32 | getLocaleAmountは通貨別フォーマットを適用する | E-06 (L2-6) | ○ |
| C-33 | getNativeSymbolは通貨シンボルを取得する | E-06 (L11-19) | ○ |
| C-34 | getNativeSymbolはユーロなど他通貨も対応する | E-06 (L12-16) | ○ |
| C-35 | getDecimalDigitsは小数点桁数を取得する | E-06 (L21-28) | ○ |
| C-36 | getDecimalDigitsは日本円で0を返す | E-06 (L27) | ○ |
| C-37 | getStylizedAmountはスタイル付きで金額をフォーマットする | E-06 (L30-40) | ○ |

### 国データ関数 (countries.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | getCountryByIso2はISO2コードから国情報を取得する | E-07 (L6-14) | ○ |
| C-39 | getCountryByIso2は大文字小文字を無視する | E-07 (L13) | ○ |
| C-40 | getCountryByIso2は存在しないコードでundefinedを返す | E-07 (L13) | ○ |
| C-41 | getCountryByIso2はnullでundefinedを返す | E-07 (L8-10) | ○ |

### スキーマ定義 (address.ts)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | addressSchemaは有効な住所データを検証する | E-08 (L3-14) | ○ |
| C-43 | addressSchemaは必須フィールド欠落でエラー | E-08 (L4-8) | ○ |
| C-44 | addressSchemaは空文字列country_codeでエラー | E-08 (L4) | ○ |
| C-45 | addressSchemaはnullishフィールドを許可する | E-08 (L8-14) | ○ |

### デバウンス検索フック (use-debounced-search.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | useDebouncedSearchは300msでデバウンスする | E-11 (L14) | ○ |
| C-47 | useDebouncedSearchは初期状態で空文字列を返す | E-11 (L9-10) | ○ |

### クエリパラメータフック (use-query-params.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-48 | useQueryParamsはURLパラメータから値を取得する | E-12 (L7-23) | ○ |
| C-49 | useQueryParamsは存在しないキーでundefinedを返す | E-12 (L17-18) | ○ |
| C-50 | useQueryParamsはprefixを適用する | E-12 (L16) | ○ |

### 下書き注文APIフック (draft-orders.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | draftOrdersQueryKeysは詳細用キーを生成する | E-09 (L17-22) | ○ |
| C-52 | draftOrdersQueryKeysは一覧用キーを生成する | E-09 (L24-29) | ○ |
| C-53 | useDraftOrdersは下書き注文一覧を取得する | E-09 (L32-53) | ○ |
| C-54 | useDraftOrderは下書き注文詳細を取得する | E-09 (L55-77) | ○ |
| C-55 | useCreateDraftOrderは下書き注文を作成する | E-09 (L79-110) | ○ |
| C-56 | useCreateDraftOrderは作成後にキャッシュを無効化する | E-09 (L95-104) | ○ |
| C-57 | useDeleteDraftOrderは下書き注文を削除する | E-09 (L112-137) | ○ |
| C-58 | useUpdateDraftOrderは下書き注文を更新する | E-09 (L139-171) | ○ |
| C-59 | useConvertDraftOrderは下書きを正式注文に変換する | E-09 (L173-200) | ○ |
| C-60 | useDraftOrderAddItemsはアイテムを追加する | E-09 (L202-223) | ○ |
| C-61 | useDraftOrderUpdateItemはアイテムを更新する | E-09 (L225-247) | ○ |
| C-62 | useDraftOrderRemoveActionItemはアクションアイテムを削除する | E-09 (L249-271) | ○ |
| C-63 | useDraftOrderAddPromotionsはプロモーションを追加する | E-09 (L297-318) | ○ |
| C-64 | useDraftOrderRemovePromotionsはプロモーションを削除する | E-09 (L320-341) | ○ |
| C-65 | useDraftOrderAddShippingMethodは配送方法を追加する | E-09 (L343-365) | ○ |
| C-66 | useDraftOrderRemoveShippingMethodは配送方法を削除する | E-09 (L415-437) | ○ |
| C-67 | useDraftOrderUpdateShippingMethodは配送方法を更新する | E-09 (L439-461) | ○ |
| C-68 | useDraftOrderBeginEditは編集を開始する | E-09 (L463-484) | ○ |
| C-69 | useDraftOrderCancelEditは編集をキャンセルする | E-09 (L486-515) | ○ |
| C-70 | useDraftOrderRequestEditは編集をリクエストする | E-09 (L517-538) | ○ |
| C-71 | useDraftOrderConfirmEditは編集を確定する | E-09 (L540-581) | ○ |

### 注文APIフック (orders.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | ordersQueryKeysはプレビュー用キーを生成する | E-10 (L36) | ○ |
| C-73 | useOrderは注文詳細を取得する | E-10 (L40-60) | ○ |
| C-74 | useOrderChangesは変更履歴を取得する | E-10 (L62-82) | ○ |
| C-75 | useUpdateOrderは注文を更新する | E-10 (L84-111) | ○ |
| C-76 | useOrderPreviewは注文プレビューを取得する | E-10 (L113-133) | ○ |
| C-77 | useOrderEditCreateは注文編集を作成する | E-10 (L135-159) | ○ |
| C-78 | useOrderEditCancelは注文編集をキャンセルする | E-10 (L161-190) | ○ |
| C-79 | useOrderEditConfirmは注文編集を確定する | E-10 (L223-256) | ○ |
| C-80 | useOrderEditAddItemsはアイテムを追加する | E-10 (L258-283) | ○ |

### 注文編集フック (use-initiate-order-edit.tsx, use-cancel-order-edit.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-81 | useInitiateOrderEditは注文編集を自動開始する | E-15 (L20-46) | ○ |
| C-82 | useInitiateOrderEditは既存編集時は新規作成しない | E-15 (L26-29) | ○ |
| C-83 | useInitiateOrderEditはエラー時にトースト通知を表示する | E-15 (L34-38) | ○ |
| C-84 | useCancelOrderEditはキャンセル成功でtrueを返す | E-16 (L13-30) | ○ |
| C-85 | useCancelOrderEditはpreviewなしでtrueを返す | E-16 (L14-16) | ○ |
| C-86 | useCancelOrderEditはエラー時にfalseを返す | E-16 (L18, 21-23) | ○ |

### コンボボックスデータフック (use-combobox-data.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-87 | useComboboxDataはオプションを取得する | E-13 (L21-98) | ○ |
| C-88 | useComboboxDataはデフォルト値をオプションに含める | E-13 (L83-89) | ○ |
| C-89 | useComboboxDataは無限スクロールをサポートする | E-13 (L55-71) | ○ |
| C-90 | useComboboxDataはデータなしでdisabledになる | E-13 (L80) | ○ |

### スタックモーダルプロバイダー
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-91 | StackedModalProviderはgetIsOpenで状態を取得する | E-17 (L14-16) | ○ |
| C-92 | StackedModalProviderはsetIsOpenで状態を設定する | E-17 (L18-25) | ○ |
| C-93 | StackedModalProviderはregisterでモーダルを登録する | E-17 (L27-32) | ○ |
| C-94 | StackedModalProviderはunregisterでモーダルを解除する | E-17 (L34-40) | ○ |
| C-95 | useStackedModalはコンテキストを取得する | E-18 (L4-13) | ○ |
| C-96 | useStackedModalはプロバイダー外でエラーをスローする | E-18 (L7-10) | ○ |

### 日付フィルターフック (use-data-table-date-filters.tsx)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-97 | useDataTableDateFiltersは日付フィルターを取得する | E-14 (L52-90) | ○ |
| C-98 | useDataTableDateFiltersは範囲オプションを無効化できる | E-14 (L55-60) | ○ |

### SDK・型定義
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-99 | SDKがグローバル変数で初期化される | E-19 | △ |
| C-100 | AdminCreateDraftOrder型が正しく定義されている | E-20 | △ |

## 4) 不足情報（Unknown / Missing）
- **C-99（SDK初期化）**: グローバル変数 `__BACKEND_URL__`, `__AUTH_TYPE__`, `__JWT_TOKEN_STORAGE_KEY__` はビルド時に注入されるため、実行時のテストでは環境設定が必要
  - 候補：Vite設定ファイル / 環境変数設定 / モックSDK
- **C-100（型定義検証）**: TypeScript型のテストはコンパイル時に行われるため、ランタイムテストとしては限定的
  - 候補：tsc --noEmit / dtslint / expect-type

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - ユーティリティ関数（純粋関数でテストしやすい）
  - date-utils.ts, number-utils.ts, string-utils.ts, address-utils.ts
- **1: 中リスク** - Reactフック（テスト環境のセットアップが必要）
  - use-debounced-search.tsx, use-query-params.tsx, use-combobox-data.tsx
- **2: 高リスク** - 外部API連携フック（モック・スタブが必要）
  - draft-orders.tsx, orders.tsx, use-initiate-order-edit.tsx, use-cancel-order-edit.tsx

## 6) レビュアーチェックリスト（最小）
- [ ] ユーティリティ関数のテストケースがすべての分岐をカバーしているか確認
- [ ] Reactフックのテストに必要な依存関係（react-router-dom, @tanstack/react-query）のモック方針を確認
- [ ] SDK関連のテストで環境変数の設定方法を確認
- [ ] 金額計算（currencies.ts）のテストで通貨コードの網羅性を確認
- [ ] 住所フォーマット（address-utils.ts）のテストで国際化対応を確認
- [ ] クエリキャッシュ無効化のテストで適切なキーが指定されているか確認
- [ ] エラーハンドリングのテストでトースト通知が正しく表示されるか確認
