---
generated_at: 2026-01-28 14:25:00
metrics:
  claims_total: 80
  claims_with_evidence: 80
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：data_model_product_model 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：80 / 80、根拠なし：0
- 優先レビュー（高）
  1. **ProductData**: メインモデルであり、fromJson/toJsonのテストが最重要
  2. **JsonKeyアノテーション**: configutableData、admin_name、option_id等のマッピング確認
  3. **Hive対応クラス**: Inventories、InventorySourceのローカルストレージ連携

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

- E-01: `lib/data_model/product_model/product_screen_model.dart` - メインプロダクトモデルファイル（785行）
- E-02: `lib/data_model/product_model/booking_slots_modal.dart` - 予約スロットモデルファイル（64行）
- E-03: `@JsonSerializable()` アノテーション - json_annotationパッケージによる自動生成
- E-04: `@JsonKey(name: "xxx")` アノテーション - JSONキーマッピング定義
- E-05: `@HiveType(typeId: x)` アノテーション - Hiveローカルストレージ対応
- E-06: `@HiveField(x)` アノテーション - Hiveフィールド定義
- E-07: `part 'product_screen_model.g.dart'` - 自動生成コードの参照
- E-08: `part 'booking_slots_modal.g.dart'` - 自動生成コードの参照

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

### ProductData クラス（E-01: 21-89行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | ProductData.fromJsonで全フィールドがデシリアライズされる | E-01: L84-85, E-03 | ○ |
| C-02 | オプショナルフィールドがnull許容 | E-01: L22-52（全フィールドnullable） | ○ |
| C-03 | 不正JSON形式でエラー発生 | E-03, E-07（json_serializableの標準動作） | ○ |
| C-04 | toJsonで全フィールドシリアライズ | E-01: L87-88, E-03 | ○ |
| C-05 | 空リストがJSON配列として出力 | E-03（json_serializableの標準動作） | ○ |
| C-06 | コンストラクタで全パラメータ初期化 | E-01: L54-82 | ○ |
| C-79 | configutableDataがconfigurableDataにマッピング | E-01: L30-31, E-04 | ○ |
| C-80 | configurableDataがconfigutableDataとして出力 | E-01: L30-31, E-04 | ○ |

### AdditionalData クラス（E-01: 91-108行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 | admin_nameがadminNameにマッピング | E-01: L97-98, E-04 | ○ |
| C-08 | adminNameがadmin_nameとして出力 | E-01: L97-98, E-04 | ○ |

### ProductFlats クラス（E-01: 110-184行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | newキーワードがisNewにマッピング | E-01: L119-120, E-04 | ○ |
| C-10 | 価格がdynamic型でパース | E-01: L124-127（price, specialPrice, minPrice, maxPrice） | ○ |
| C-11 | priceがnullで正常パース | E-01: L124（dynamic price;はnull許容） | ○ |
| C-12 | 全フィールドシリアライズ | E-01: L180-183, E-03 | ○ |

### AttributeFamily クラス（E-01: 186-201行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | 全フィールドデシリアライズ | E-01: L186-201, E-03 | ○ |
| C-14 | booleanフィールドシリアライズ | E-01: L191-192（status, isUserDefined） | ○ |

### AttributeValues クラス（E-01: 203-230行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | ネストしたAttributeパース | E-01: L213（Attribute? attribute;） | ○ |
| C-16 | attributeがnullで正常パース | E-01: L213（nullable） | ○ |

### Attribute クラス（E-01: 232-245行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | シンプルなAttribute JSONパース | E-01: L232-245, E-03 | ○ |

### Categories クラス（E-01: 247-290行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 | ネストしたリストパース | E-01: L262-263（filterableAttributes, translations） | ○ |
| C-19 | positionがdynamic型 | E-01: L258（dynamic position;） | ○ |

### FilterableAttributes クラス（E-01: 292-307行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 | 全フィールドデシリアライズ | E-01: L292-307, E-03 | ○ |

### Translations クラス（E-01: 309-337行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | 翻訳データパース | E-01: L309-337, E-03 | ○ |
| C-22 | idがdynamic型 | E-01: L311（dynamic id;） | ○ |

### Inventories クラス（E-01: 339-367行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | Hive対応クラスパース | E-01: L339-340, E-05 | ○ |
| C-24 | ネストしたInventorySourceパース | E-01: L353（InventorySource? inventorySource;） | ○ |
| C-25 | HiveObjectがJSON化 | E-01: L339, L363-366, E-05 | ○ |

### InventorySource クラス（E-01: 369-415行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | 全フィールドパース | E-01: L369-415, E-03 | ○ |
| C-27 | HiveFieldなしフィールドパース | E-01: L388-393（state, city等はHiveFieldなし） | ○ |

### Images クラス（E-01: 417-432行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | 画像データパース | E-01: L417-432, E-03 | ○ |
| C-29 | 画像データJSON化 | E-01: L429-431, E-03 | ○ |

### CustomerGroupPrices クラス（E-01: 434-459行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | 顧客グループ価格パース | E-01: L434-459, E-03 | ○ |
| C-31 | qty=0で正常パース | E-01: L437（int? qty;はnullまたは0許容） | ○ |

### Reviews クラス（E-01: 461-490行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | レビューデータパース | E-01: L461-490, E-03 | ○ |
| C-33 | rating境界値 | E-01: L465（int? rating;） | ○ |

### Variants クラス（E-01: 492-513行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | バリアントパース | E-01: L492-513, E-03 | ○ |
| C-35 | map動的設定 | E-01: L499（Map<String, dynamic>? map = {};） | ○ |
| C-36 | 空map処理 | E-01: L499（初期値が空Map） | ○ |

### ConfigurableData クラス（E-01: 515-536行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | 設定可能データパース | E-01: L515-536, E-03 | ○ |
| C-38 | ネストしたattributes配列 | E-01: L518（List<Attributes>? attributes;） | ○ |

### Attributes クラス（E-01: 538-572行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | option_idがoptionIdにマッピング | E-01: L540-541, E-04 | ○ |
| C-40 | attribute_nameがattributeNameにマッピング | E-01: L545-546, E-04 | ○ |
| C-41 | optionIdがoption_idとして出力 | E-01: L540-541, E-04 | ○ |

### Options クラス（E-01: 574-589行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | オプションパース | E-01: L574-589, E-03 | ○ |
| C-43 | isSelectデフォルト値 | E-01: L580（bool? isSelect = false;） | ○ |

### Index クラス（E-01: 591-601行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | インデックスパース | E-01: L591-601, E-03 | ○ |
| C-45 | ネストしたattributeOptionIds | E-01: L594（List<AttributeOptionIds>? attributeOptionIds;） | ○ |

### AttributeOptionIds クラス（E-01: 603-614行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | 属性オプションIDパース | E-01: L603-614, E-03 | ○ |

### VariantPrices クラス（E-01: 616-628行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | バリアント価格パース | E-01: L616-628, E-03 | ○ |
| C-48 | ネストしたRegularPrice | E-01: L619-620（regularPrice, finalPrice） | ○ |

### RegularPrice クラス（E-01: 630-640行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | 通常価格パース | E-01: L630-640, E-03 | ○ |
| C-50 | priceがdynamic型 | E-01: L632（dynamic price;） | ○ |

### VariantImages クラス（E-01: 642-653行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | バリアント画像パース | E-01: L642-653, E-03 | ○ |
| C-52 | ネストしたimages配列 | E-01: L645（List<Images>? images;） | ○ |

### DownloadableProduct クラス（E-01: 655-694行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 | DL可能商品パース | E-01: L655-694, E-03 | ○ |
| C-54 | priceがdouble型 | E-01: L658（double? price;） | ○ |
| C-55 | downloads=0処理 | E-01: L670（int? downloads;） | ○ |
| C-56 | ネストしたtranslations | E-01: L671（List<Translations>? translations;） | ○ |

### BundleOptions クラス（E-01: 696-719行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-57 | バンドルオプションパース | E-01: L696-719, E-03 | ○ |
| C-58 | isRequiredがboolean | E-01: L700（bool? isRequired;） | ○ |
| C-59 | ネストしたbundleOptionProducts | E-01: L703（List<BundleOptionProducts>? bundleOptionProducts;） | ○ |

### BundleOptionProducts クラス（E-01: 721-745行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | バンドル製品パース | E-01: L721-745, E-03 | ○ |
| C-61 | ネストしたProductData | E-01: L730（ProductData? product;） | ○ |

### GroupedProducts クラス（E-01: 747-768行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | グループ商品パース | E-01: L747-768, E-03 | ○ |
| C-63 | ネストしたAssociatedProduct | E-01: L754（AssociatedProduct? associatedProduct;） | ○ |

### AssociatedProduct クラス（E-01: 770-784行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | 関連商品パース | E-01: L770-784, E-03 | ○ |
| C-65 | attributeFamilyIdがdynamic | E-01: L774（dynamic attributeFamilyId;） | ○ |

### BookingSlot クラス（E-02: 5-25行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | 予約スロットパース | E-02: L5-25, E-03 | ○ |
| C-67 | タイムスタンプフィールドパース | E-02: L9-10（fromTimestamp, toTimestamp） | ○ |
| C-68 | qtyがbool型 | E-02: L11（final bool? qty;） | ○ |
| C-69 | 予約スロットJSON化 | E-02: L24, E-03 | ○ |

### SlotGroup クラス（E-02: 27-49行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-70 | スロットグループパース | E-02: L27-49, E-03 | ○ |
| C-71 | ネストしたslots配列 | E-02: L34（final List<BookingSlot>? slots;） | ○ |
| C-72 | 空slots処理 | E-02: L34（nullable List） | ○ |
| C-73 | スロットグループJSON化 | E-02: L48, E-03 | ○ |

### BookingSlotsData クラス（E-02: 51-63行目）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-74 | 予約データ全体パース | E-02: L51-63, E-03 | ○ |
| C-75 | status/responseStatusパース | E-02: L54-55（status, responseStatus） | ○ |
| C-76 | ネストしたdata配列 | E-02: L53（final List<SlotGroup>? data;） | ○ |
| C-77 | data=null処理 | E-02: L53（nullable List） | ○ |
| C-78 | 予約データJSON化 | E-02: L62, E-03 | ○ |

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

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードに基づいて生成されている
- 注意点：
  - `*.g.dart` ファイル（自動生成コード）は解析対象外としたが、json_serializableの標準動作に依存
  - `dynamic` 型フィールドの実行時型エラーの可能性は実装テストで確認必要
  - Hive対応クラス（Inventories, InventorySource）のローカルストレージ連携テストは統合テストで別途確認推奨

## 6) レビュアーチェックリスト（最小）
- [ ] ProductDataクラスのfromJson/toJsonテストケースが網羅的か確認
- [ ] JsonKeyアノテーションのマッピング（configutableData、admin_name、option_id等）が正しいか確認
- [ ] dynamic型フィールド（price、attributeFamilyId等）の境界値テストが適切か確認
- [ ] Hive対応クラスのHiveField属性が正しくテストされているか確認
- [ ] ネストしたオブジェクト/リストのパーステストが全クラスで実施されているか確認
- [ ] booking_slots_modal.dartのBookingSlotのqtyフィールドがbool型であることの妥当性確認（通常qtyは数量を表すため）
