ponshu-room-lite/docs/archive/CURSOR_PROPOSAL_FINAL_REVIE...

6.4 KiB
Raw Permalink Blame History

Cursor提案の最終判断レポート

📅 作成日時

2026年2月3日

🎯 結論

Cursorの提案5箇所のうち、2箇所のみ修正を推奨します。


修正すべき箇所2箇所

1. lib/widgets/home/sake_filter_chips.dart:27行目

現在:

final rawListAsync = ref.watch(rawSakeListItemsProvider);

修正後:

final filteredAsync = ref.watch(allSakeItemsProvider);

理由:

  • セット商品は「ビジネスモードのお品書き作成でしか使わない」
  • 個人モードのタグフィルター選択肢にセット商品のタグを含める必要がない
  • Phase D6の設計意図個人モードでセット商品除外を完全実現

影響範囲:

  • 個人モードのタグフィルターチップ選択肢
  • セット商品のタグが除外されるが、問題なし

デグレリスク: なし


2. lib/widgets/prefecture_filter_sheet.dart:21行目

現在:

final rawListAsync = ref.read(rawSakeListItemsProvider);

修正後:

final filteredAsync = ref.read(allSakeItemsProvider);

理由:

  • セット商品の都道府県を個人モードの選択肢に含める必要がない
  • ビジネスモードに切り替えると選択肢が増える→これは正しい仕様
    • ビジネスモードではセット商品も表示されるため、選択肢が増えるのは自然

影響範囲:

  • 個人モードの都道府県フィルター選択肢
  • セット商品の都道府県が除外される

デグレリスク: なし


修正してはいけない箇所3箇所

3. lib/screens/home_screen.dart:176行目

現在:

final isListActuallyEmpty = ref.watch(rawSakeListItemsProvider).asData?.value.isEmpty ?? true;

修正不可の理由:

if (displayList.isEmpty) {
  if (isListActuallyEmpty) {
    return HomeEmptyState(); // 「まだ1件も登録していません」
  } else {
    return SakeNoMatchState(); // 「フィルタ条件に一致する日本酒がありません」
  }
}

意図的な設計:

  • 「完全に空」vs「フィルタで0件」を区別するため
  • 個人モードでセット商品のみ登録している場合:
    • allSakeItemsProviderは0件セット商品除外済み
    • rawSakeListItemsProviderは1件以上セット商品あり
    • → 「フィルタ条件に一致しません」と正しく表示

修正した場合の問題:

  • セット商品のみ登録している状態で「まだ登録していません」と誤表示
  • ユーザーが混乱する

判定: 修正不可


4. lib/screens/menu_creation_screen.dart:134行目

現在:

final isListActuallyEmpty = ref.watch(rawSakeListItemsProvider).asData?.value.isEmpty ?? true;

修正不可の理由: home_screen.dart:176と同じロジック

判定: 修正不可


5. lib/screens/dev_menu_screen.dart:189行目

現在:

final allItems = ref.read(rawSakeListItemsProvider).asData?.value ?? [];

修正不要の理由:

  • 開発者メニューはデバッグ用
  • セット商品も含めて全データを解析したい
  • 一般ユーザーには非表示(開発者のみアクセス)

判定: ⚠️ 任意(修正しても問題ないが、現状維持を推奨)


📊 修正優先度

優先度 項目 実装時間 デグレリスク
🟡 HIGH sake_filter_chips.dart:27 2分 なし
🟡 HIGH prefecture_filter_sheet.dart:21 2分 なし

合計実装時間: 4分


🔍 UI/UX改善提案の判断

提案1: ダークモードのみAppBar背景色統一

Cursorの提案:

// lib/theme/app_theme.dart:134
backgroundColor: (brightness == Brightness.dark) ? const Color(0xFF1E1E1E) : null,

判定: 実施推奨

理由:

  • デグレリスクゼロ
  • 視覚的統一感向上
  • 実装時間2分

提案2: ライトモードもAppBar背景色統一

Cursorの提案:

backgroundColor: (brightness == Brightness.dark)
    ? const Color(0xFF1E1E1E)
    : Colors.white,

判定: ⚠️ 要慎重検討

理由:

  • 検索フィールドの白テキストを黒に変更必要
  • Material Design 3の標準動作から外れる
  • デグレリスク中程度

推奨: 実施前にユーザーと相談


🎯 最終的な実行計画

Step 1: Phase D6完全性修正4分

  1. sake_filter_chips.dart:27修正
  2. prefecture_filter_sheet.dart:21修正

Step 2: UI/UX改善2分

  1. AppBar背景色統一ダークモードのみ← ユーザー判断

Step 3: 最終検証5分

  1. flutter analyze実行
  2. Android APKビルド

Cursorへの返答推奨文言

## レビュー結果

詳細な調査ありがとうございます。批判的レビューの結果、以下の判断としました。

### 修正する箇所2箇所のみ
1. ✅ lib/widgets/home/sake_filter_chips.dart:27 → `allSakeItemsProvider`に変更
2. ✅ lib/widgets/prefecture_filter_sheet.dart:21 → `allSakeItemsProvider`に変更

### 修正しない箇所3箇所
1. ❌ lib/screens/home_screen.dart:176 → **空状態判定に必須**(現状維持)
2. ❌ lib/screens/menu_creation_screen.dart:134 → **同上**(現状維持)
3. ⚠️ lib/screens/dev_menu_screen.dart:189 → **開発者メニュー**(現状維持)

理由: セット商品のみ登録している場合に「完全に空」と「フィルタで0件」を区別する必要があるため。

### UI/UX改善提案
- **提案1ダークモード統一**: 実施します
- **提案2ライトモード統一**: 見送ります

以上の方針でお願いします。

📝 他AI相談用プロンプト

AI_CONSULTATION_PROMPT.md を作成済み

このプロンプトを使用して、他のAIGemini、GPT-4などにセット商品の設計判断を相談できます。


🎊 期待される成果

修正実施後

  • Phase D6の設計意図完全実現
  • 個人モードでセット商品が完全除外
  • タグ・都道府県フィルターの一貫性確保
  • デグレリスクゼロ

作成者: Claude (Sonnet 4.5) 作成日時: 2026年2月3日