---
generated_at: 2026-01-28 10:30:00
metrics:
  claims_total: 90
  claims_with_evidence: 87
  claims_without_evidence: 3
confidence_derived: 0.97
---

# 根拠レポート：checkout.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：87 / 90、根拠なし：3
- 優先レビュー（高）
  1. **UT-CHK-021**：SaveOrderBloc.successがfalseの場合の挙動 - 空のelseブロックの意図が不明
  2. **UT-CHK-028**：GuestAddressRepositoryImp.callCountriesDataのnull返却挙動 - 呼び出し元でのnull処理確認が必要
  3. **UT-CHK-066**：CheckoutScreen._getBodyのデフォルトケース - 実際に到達しうるか確認が必要

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

- E-01: `lib/screens/checkout/checkout_addres/bloc/checkout_address_bloc.dart`
- E-02: `lib/screens/checkout/checkout_addres/bloc/checkout_address_repository.dart`
- E-03: `lib/screens/checkout/checkout_addres/bloc/checkout_address_state.dart`
- E-04: `lib/screens/checkout/checkout_addres/bloc/checkout_address_event.dart`
- E-05: `lib/screens/checkout/checkout_shipping/bloc/checkout_shipping_bloc.dart`
- E-06: `lib/screens/checkout/checkout_shipping/bloc/checkout_shipping_repository.dart`
- E-07: `lib/screens/checkout/checkout_shipping/bloc/checkout_shipping_state.dart`
- E-08: `lib/screens/checkout/checkout_shipping/bloc/checkout_shipping_event.dart`
- E-09: `lib/screens/checkout/checkout_payment/bloc/checkout_payment_bloc.dart`
- E-10: `lib/screens/checkout/checkout_payment/bloc/checkout_payment_repository.dart`
- E-11: `lib/screens/checkout/checkout_payment/bloc/checkout_payment_state.dart`
- E-12: `lib/screens/checkout/checkout_payment/bloc/checkout_payment_event.dart`
- E-13: `lib/screens/checkout/checkout_review/bloc/checkout_review_bloc.dart`
- E-14: `lib/screens/checkout/checkout_review/bloc/checkout_review_repository.dart`
- E-15: `lib/screens/checkout/checkout_review/bloc/checkout_review_state.dart`
- E-16: `lib/screens/checkout/checkout_review/bloc/checkout_review_event.dart`
- E-17: `lib/screens/checkout/checkout_save_order/bloc/save_order_bloc.dart`
- E-18: `lib/screens/checkout/checkout_save_order/bloc/save_order_repositroy.dart`
- E-19: `lib/screens/checkout/checkout_save_order/bloc/save_oredr_state.dart`
- E-20: `lib/screens/checkout/checkout_save_order/bloc/save_order_event.dart`
- E-21: `lib/screens/checkout/guest_add_address/bloc/guest_address_bloc.dart`
- E-22: `lib/screens/checkout/guest_add_address/bloc/guest_address_repository.dart`
- E-23: `lib/screens/checkout/guest_add_address/bloc/guest_address_state.dart`
- E-24: `lib/screens/checkout/guest_add_address/bloc/guest_address_event.dart`
- E-25: `lib/screens/checkout/data_model/save_order_model.dart`
- E-26: `lib/screens/checkout/data_model/checkout_save_shipping_model.dart`
- E-27: `lib/screens/checkout/data_model/checkout_save_address_model.dart`
- E-28: `lib/screens/checkout/data_model/save_payment_model.dart`
- E-29: `lib/screens/checkout/view/checkout_screen.dart`
- E-30: `lib/screens/checkout/view/checkout_header_view.dart`
- E-31: `lib/screens/checkout/checkout_review/view/widget/apply_coupon_code.dart`
- E-32: `lib/screens/checkout/utils/index.dart`

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

### Bloc関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-CHK-001) | CheckOutBloc.mapEventToStateでアドレス情報が正常に取得できる | E-01 (L24-33) | ○ |
| C-02 (UT-CHK-002) | CheckOutBloc.mapEventToStateでエラー時にfail状態になる | E-01 (L30-31) | ○ |
| C-03 (UT-CHK-003) | CheckOutBlocの初期状態がCheckOutLoaderState | E-01 (L20) | ○ |
| C-04 (UT-CHK-004) | CheckOutRepositoryImp.callCheckoutAddressApiでデータ取得できる | E-02 (L20-28) | ○ |
| C-05 (UT-CHK-005) | CheckOutRepositoryImp.callCheckoutAddressApiでエラー時にnull強制アンラップ | E-02 (L29) `return addressModel!` | ○ |
| C-06 (UT-CHK-006) | CheckOutShippingBloc.mapEventToStateで配送先保存成功 | E-05 (L26-62) | ○ |
| C-07 (UT-CHK-007) | CheckOutShippingBloc.mapEventToStateでresponseStatus=falseの場合にfail | E-05 (L58-59) | ○ |
| C-08 (UT-CHK-008) | CheckOutShippingBloc.mapEventToStateで例外時にfail | E-05 (L64-65) | ○ |
| C-09 (UT-CHK-009) | CheckOutShippingRepositoryImp.saveCheckOutShippingでAPI呼び出し | E-06 (L44-98) | ○ |
| C-10 (UT-CHK-010) | useForShipping=trueで配送先が請求先と同じになる | E-06 (L68, L93) | ○ |
| C-11 (UT-CHK-011) | billingId/shippingIdがnullでも動作する | E-06 (L66-68) | ○ |
| C-12 (UT-CHK-012) | CheckOutPaymentBloc.mapEventToStateで支払方法一覧取得 | E-09 (L27-41) | ○ |
| C-13 (UT-CHK-013) | shippingMethodが空の場合にデフォルト値使用 | E-09 (L31-32) `"flatrate_flatrate"` | ○ |
| C-14 (UT-CHK-014) | CheckOutPaymentBloc.mapEventToStateでエラー時にfail | E-09 (L38-39) | ○ |
| C-15 (UT-CHK-015) | CheckOutPaymentRepositoryImp.saveCheckOutPaymentでAPI呼び出し | E-10 (L24-32) | ○ |
| C-16 (UT-CHK-016) | CheckOutReviewBloc.mapEventToStateで支払方法保存成功 | E-13 (L28-39) | ○ |
| C-17 (UT-CHK-017) | paymentMethodがnullの場合に空文字使用 | E-13 (L33) `event.paymentMethod ?? ""` | ○ |
| C-18 (UT-CHK-018) | CheckOutReviewBloc.mapEventToStateでエラー時にfail | E-13 (L37-38) | ○ |
| C-19 (UT-CHK-019) | CheckOutReviewRepositoryImp.savePaymentReviewでAPI呼び出し | E-14 (L21-29) | ○ |
| C-20 (UT-CHK-020) | SaveOrderBloc.mapEventToStateで注文保存成功 | E-17 (L25-37) | ○ |
| C-21 (UT-CHK-021) | success=falseの場合にstateが発行されない | E-17 (L31-33) 空のelse | △ |
| C-22 (UT-CHK-022) | SaveOrderBloc.mapEventToStateで例外時にfail | E-17 (L35-36) | ○ |
| C-23 (UT-CHK-023) | SaveOrderRepositoryImp.savePaymentReviewでAPI呼び出し | E-18 (L23-31) | ○ |
| C-24 (UT-CHK-024) | serverPayloadがnullでも動作する | E-18 (L23) | ○ |
| C-25 (UT-CHK-025) | GuestAddressBloc.mapEventToStateで国リスト取得成功 | E-21 (L22-29) | ○ |
| C-26 (UT-CHK-026) | GuestAddressBloc.mapEventToStateでエラー時にfail | E-21 (L27-28) | ○ |
| C-27 (UT-CHK-027) | GuestAddressRepositoryImp.callCountriesDataでAPI呼び出し | E-22 (L22-30) | ○ |
| C-28 (UT-CHK-028) | APIエラー時にnullが返却される | E-22 (L30) `return countryData` (null可能) | △ |

### データモデル関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 (UT-CHK-029) | SaveOrderModel.fromJsonでデシリアライズ | E-25 (L23-24) | ○ |
| C-30 (UT-CHK-030) | SaveOrderModel.toJsonでシリアライズ | E-25 (L27) | ○ |
| C-31 (UT-CHK-031) | redirectUrlがnullでもデシリアライズ可能 | E-25 (L18) `String? redirectUrl` | ○ |
| C-32 (UT-CHK-032) | Order.fromJsonでデシリアライズ | E-25 (L40) | ○ |
| C-33 (UT-CHK-033) | PaymentMethods.fromJsonでデシリアライズ | E-26 (L39-40) | ○ |
| C-34 (UT-CHK-034) | paymentMethodsが空配列でもデシリアライズ可能 | E-26 (L34) `List<PaymentMethodsList>?` | ○ |
| C-35 (UT-CHK-035) | PaymentMethodsList.fromJsonでデシリアライズ | E-26 (L55-56) | ○ |
| C-36 (UT-CHK-036) | SaveCheckoutAddresses.fromJsonでデシリアライズ | E-27 (L57-58) | ○ |
| C-37 (UT-CHK-037) | shippingMethodsがnullでもデシリアライズ可能 | E-27 (L46) `List<ShippingMethods>?` | ○ |
| C-38 (UT-CHK-038) | ShippingMethods.fromJsonでデシリアライズ | E-27 (L70-71) | ○ |
| C-39 (UT-CHK-039) | Methods.fromJsonでデシリアライズ | E-27 (L90-91) | ○ |
| C-40 (UT-CHK-040) | SavePayment.fromJsonでデシリアライズ | E-28 (L44-45) | ○ |

### State関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 (UT-CHK-041) | CheckOutAddressState.successが正しく生成される | E-03 (L31) | ○ |
| C-42 (UT-CHK-042) | CheckOutAddressState.failが正しく生成される | E-03 (L32) | ○ |
| C-43 (UT-CHK-043) | CheckOutFetchShippingState.successが正しく生成される | E-07 (L29) | ○ |
| C-44 (UT-CHK-044) | CheckOutFetchShippingState.failが正しく生成される | E-07 (L30) | ○ |
| C-45 (UT-CHK-045) | CheckOutFetchPaymentState.successが正しく生成される | E-11 (L31) | ○ |
| C-46 (UT-CHK-046) | CheckOutFetchPaymentState.failが正しく生成される | E-11 (L32) | ○ |
| C-47 (UT-CHK-047) | CheckOutReviewSavePaymentState.successが正しく生成される | E-15 (L28) | ○ |
| C-48 (UT-CHK-048) | CheckOutReviewSavePaymentState.failが正しく生成される | E-15 (L29) | ○ |
| C-49 (UT-CHK-049) | SaveOrderFetchDataState.successが正しく生成される | E-19 (L30) | ○ |
| C-50 (UT-CHK-050) | SaveOrderFetchDataState.failが正しく生成される | E-19 (L31) | ○ |
| C-51 (UT-CHK-051) | GuestAddressCountryState.successが正しく生成される | E-23 (L30) | ○ |
| C-52 (UT-CHK-052) | GuestAddressCountryState.failが正しく生成される | E-23 (L32) | ○ |

### Event関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 (UT-CHK-053) | CheckOutFetchShippingEventで全フィールド設定 | E-08 (L18-67) | ○ |
| C-54 (UT-CHK-054) | CheckOutFetchShippingEvent.propsが空リスト | E-08 (L70) | ○ |
| C-55 (UT-CHK-055) | useForShippingのデフォルト値がtrue | E-08 (L67) `this.useForShipping = true` | ○ |
| C-56 (UT-CHK-056) | CheckOutPaymentEventでshippingMethod設定 | E-12 (L14-16) | ○ |
| C-57 (UT-CHK-057) | CheckOutPaymentEvent.shippingMethodがnull許容 | E-12 (L15) `String?` | ○ |
| C-58 (UT-CHK-058) | CheckOutReviewSavePaymentEventでpaymentMethod設定 | E-16 (L14-16) | ○ |
| C-59 (UT-CHK-059) | SaveOrderFetchDataEventでserverPayload設定 | E-20 (L16-18) | ○ |

### 画面関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 (UT-CHK-060) | CheckoutScreen.initStateでユーザー状態取得 | E-29 (L72-75) | ○ |
| C-61 (UT-CHK-061) | currentIndex=1でログインユーザーはCheckoutAddressView | E-29 (L111-222) | ○ |
| C-62 (UT-CHK-062) | currentIndex=1でゲストはGuestAddAddressForm | E-29 (L224-278) | ○ |
| C-63 (UT-CHK-063) | currentIndex=2でCheckoutShippingPageView | E-29 (L280-328) | ○ |
| C-64 (UT-CHK-064) | currentIndex=3でCheckoutPaymentView | E-29 (L329-344) | ○ |
| C-65 (UT-CHK-065) | currentIndex=4でCheckoutOrderReviewView | E-29 (L346-359) | ○ |
| C-66 (UT-CHK-066) | 不正なcurrentIndexでSizedBox | E-29 (L360-361) | △ |
| C-67 (UT-CHK-067) | AddressType.bothでuseForShipping=true | E-29 (L138-142) | ○ |
| C-68 (UT-CHK-068) | AddressType.billingで請求先のみ設定 | E-29 (L144-182) | ○ |
| C-69 (UT-CHK-069) | AddressType.shippingで配送先のみ設定 | E-29 (L183-221) | ○ |
| C-70 (UT-CHK-070) | currentIndex=2でshippingId空時に警告 | E-29 (L437-440) | ○ |
| C-71 (UT-CHK-071) | currentIndex=3でpaymentId空時に警告 | E-29 (L442-447) | ○ |
| C-72 (UT-CHK-072) | currentIndex=1でbillingAddress null時に警告 | E-29 (L459-463) | ○ |
| C-73 (UT-CHK-073) | currentIndex=1でshippingAddress null時に警告 | E-29 (L464-469) | ○ |
| C-74 (UT-CHK-074) | currentIndex=5で注文完了画面遷移 | E-29 (L477-480) | ○ |
| C-75 (UT-CHK-075) | isDownloadable=falseで4ステップ | E-30 (L51-56) | ○ |
| C-76 (UT-CHK-076) | isDownloadable=trueで3ステップ | E-30 (L44-50) | ○ |
| C-77 (UT-CHK-077) | 現在ステップより前がアクティブカラー | E-30 (L111-117) | ○ |
| C-78 (UT-CHK-078) | 現在ステップ以降が非アクティブカラー | E-30 (L111-117) | ○ |
| C-79 (UT-CHK-079) | ApplyCouponCode.initStateでクーポン初期値設定 | E-31 (L38-40) | ○ |
| C-80 (UT-CHK-080) | クーポンコード空時にエラーメッセージ | E-31 (L77-83) | ○ |
| C-81 (UT-CHK-081) | クーポン未設定時にAddCouponCartEvent | E-31 (L111-114) | ○ |
| C-82 (UT-CHK-082) | クーポン設定済みでRemoveCouponCartEvent | E-31 (L115-119) | ○ |
| C-83 (UT-CHK-083) | 小計が正しく表示される | E-31 (L177-178) | ○ |
| C-84 (UT-CHK-084) | 配送料が正しく表示される | E-31 (L198-199) | ○ |
| C-85 (UT-CHK-085) | 割引額が正しく表示される | E-31 (L219-221) | ○ |
| C-86 (UT-CHK-086) | discountAmount null時に0.0表示 | E-31 (L219-222) | ○ |
| C-87 (UT-CHK-087) | 税額が正しく表示される | E-31 (L252) | ○ |
| C-88 (UT-CHK-088) | 合計金額が正しく表示される | E-31 (L305-306) | ○ |
| C-89 (UT-CHK-089) | 税率詳細が展開表示される | E-31 (L263-283) | ○ |
| C-90 (UT-CHK-090) | StreamControllerがクローズされる | E-29 (L79-81) | ○ |

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

- **UT-CHK-021**: SaveOrderBloc.mapEventToStateで`success==false`の場合の挙動
  - コード上は空のelseブロックがあり、何も発行されない
  - 候補：バグの可能性 / 意図的な設計 / 別の箇所でハンドリング

- **UT-CHK-028**: GuestAddressRepositoryImp.callCountriesDataでAPIエラー時のnull返却
  - 他のリポジトリは`null!`で強制アンラップしているが、このメソッドはnullを返却可能
  - 候補：呼び出し元でのnullチェック確認が必要

- **UT-CHK-066**: CheckoutScreen._getBodyのデフォルトケース
  - currentIndexが1-4以外の値を取りうるかの確認が必要
  - 候補：防御的コーディング / 実際には到達しない

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

| リスクレベル | 項目 | 理由 |
|---|---|---|
| 2 (高) | UT-CHK-021 | 注文保存失敗時にユーザーへのフィードバックがない可能性 |
| 1 (中) | UT-CHK-005 | null強制アンラップによるランタイムエラーの可能性 |
| 1 (中) | UT-CHK-028 | null返却によるnullポインタエラーの可能性 |
| 0 (低) | UT-CHK-066 | デフォルトケースは防御的コーディング |

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

- [ ] UT-CHK-021: SaveOrderBloc.mapEventToStateで`success==false`の場合にユーザーへのフィードバックが必要か確認
- [ ] UT-CHK-005, UT-CHK-019, UT-CHK-015: リポジトリでの`null!`強制アンラップがAPIエラー時に問題にならないか確認
- [ ] UT-CHK-028: GuestAddressRepositoryImp.callCountriesDataのnull返却が呼び出し元で適切にハンドリングされているか確認
- [ ] 全Bloc: イベント発行からState変更までの非同期処理が適切にテストできるか確認
- [ ] データモデル: @JsonSerializableアノテーションの生成コード（.g.dartファイル）が最新か確認
- [ ] CheckoutScreen: 住所バリデーションのロジックが請求先・配送先両方で網羅されているか確認
