ponshu-room-lite/docs/archive/CURSOR_HANDOFF_REPORT.md

385 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cursor申し送り事項・残課題リスト
## 📅 作成日時
2026年2月3日
## ✅ 完了事項Claude実施済み
### Phase D6完全実装
- ✅ [lib/widgets/home/sake_filter_chips.dart:27-28](lib/widgets/home/sake_filter_chips.dart#L27-L28)
- `rawSakeListItemsProvider``allSakeItemsProvider`
- 個人モードのタグフィルターからセット商品のタグを除外
- ✅ [lib/widgets/prefecture_filter_sheet.dart:21-22](lib/widgets/prefecture_filter_sheet.dart#L21-L22)
- `rawSakeListItemsProvider``allSakeItemsProvider`
- 個人モードの都道府県フィルターからセット商品の都道府県を除外
- ✅ [lib/theme/app_theme.dart:134-135](lib/theme/app_theme.dart#L134-L135)
- ダークモードAppBar背景色統一#121212 → #1E1E1E
### 定数統一化
- ✅ [lib/constants/app_constants.dart](lib/constants/app_constants.dart) 新規作成
- ✅ 10個の定数を7ファイルで使用
### リリースビルド
- ✅ Lite版: `ponshu-room-lite-v1.0.10+19-release.apk` (88.9MB)
- ✅ Pro版: `ponshu-room-pro-v1.0.10+19-release.apk` (50.5MB)
---
## 🔴 残課題(優先度: 高)
### 1. flutter analyze残存issues58件
**現状**: 61 issues → 58 issues3件改善済み
**内訳**:
- deprecated_member_use: 約20件Tutorial関連、Share関連、ExpansionTileController
- use_build_context_synchronously: 約15件
- withOpacity → withValues()への移行: 約10件
- その他: 約13件
**Cursorへの依頼事項**:
```markdown
優先度順に修正してください:
1. **Tutorial関連のdeprecated警告** (7箇所)
- lib/models/user_profile.dart
- lib/models/user_profile.g.dart
- lib/providers/theme_provider.dart
- これらのフィールドは既に削除予定としてマークされているが、完全削除されていない
- 削除しても問題ないか確認後、完全削除を検討
2. **withOpacity → withValues()への移行** (約10箇所)
- Flutter 3.x以降のAPIに準拠
- 精度損失を防ぐための推奨修正
- 一括置換可能(デグレリスクは低い)
3. **use_build_context_synchronously警告** (約15箇所)
- async処理後のBuildContext使用に関する警告
- mounted チェックが必要な箇所を特定
- デグレリスクあり(慎重に対応)
4. **Share → SharePlus移行** (2箇所)
- lib/screens/placeholders/sommelier_screen.dart:51
- 新しいパッケージへの移行
- pubspec.yamlの依存関係確認が必要
5. **ExpansionTileController → ExpansibleController** (2箇所)
- lib/widgets/sake_detail/sake_detail_specs.dart:24
- Flutter 3.31.0以降のAPI変更
```
---
### 2. セット商品のUI設計検討
**現状の課題**:
ユーザーコメント:
> セット商品はあくまでビジネスモードのお品書き作成でしか使いません。
> ビジネスモードでも、カード一覧ではない場所から選択できた方がいいのかもしれない。
**現在の動作**:
- 個人モード: セット商品は完全除外Phase D6完了
- ビジネスモード: カード一覧にセット商品が混在
**検討オプション**:
**Option A: メニュー作成画面専用UI**
```
メリット:
- セット商品と通常商品を明確に分離
- お品書き作成時のUXが向上
- 「セット商品」の用途が明確化
デメリット:
- 新規UIコンポーネント作成が必要
- 実装工数: 中〜大
推奨度: ★★★★☆
```
**Option B: カード一覧に「セット商品タブ」追加**
```
メリット:
- 既存UIの延長で実装可能
- ビジネスモード全体でセット商品にアクセス可能
デメリット:
- タブが増えてUIが複雑化
- 実装工数: 小〜中
推奨度: ★★★☆☆
```
**Option C: 現状維持**
```
メリット:
- 追加実装不要
- デグレリスクゼロ
デメリット:
- ビジネスモードでカード一覧が混雑
- 「セット商品」の特殊性が視覚的に不明確
推奨度: ★★☆☆☆
```
**Cursorへの依頼事項**:
```markdown
AI_CONSULTATION_PROMPT.mdを参考に、他のAIGemini、GPT-4と協議して、
最適なUI設計を提案してください。
検討ポイント:
1. セット商品の登録頻度・使用頻度
2. お品書き作成フローの最適化
3. ビジネスモードの全体的なUX
4. 実装工数とメンテナンス性
```
---
## 🟡 残課題(優先度: 中)
### 3. ライトモードのUI/UX統一
**現状**:
- ダークモードは統一済みAppBar背景色: #1E1E1E
- ライトモードは Material Design 3 の標準動作(スクロールで色変化)
**Cursorへの依頼事項**:
```markdown
ライトモードでAppBarとNavigationBarの背景色を統一する場合:
1. 検索フィールドのテキスト色を変更する必要があるか確認
- 現在: Colors.whiteAppBarが常にダーク背景前提
- 変更後: appColors.textPrimary など
2. Material Design 3のスクロール時色変化を無効化
- backgroundColor を明示的に指定
3. 全テーマSumi, Kohaku, Ai, Wakakusaで確認
⚠️ デグレリスク中程度(慎重に実施)
⚠️ ユーザーに確認を取ってから実施推奨
```
---
### 4. iOS準備将来的
**必要作業**:
1. Info.plist権限追加
```xml
<key>NSPhotoLibraryUsageDescription</key>
<string>写真ライブラリにアクセスして日本酒の画像を選択します</string>
<key>NSCameraUsageDescription</key>
<string>カメラで日本酒のラベルを撮影します</string>
```
2. Firebase iOS設定
- GoogleService-Info.plist作成
- Firebase ConsoleでiOSアプリ追加
3. 2017 MacBook Air制約
- Xcode最新版が動作するか確認
- メモリ不足の可能性あり8GB
**Cursorへの依頼事項**:
```markdown
iOS配布前に以下を実施:
1. Info.plistに必要な権限をすべて追加
2. Firebase iOS設定の手順書作成
3. 2017 MacBook Airでの動作確認手順
4. TestFlightまたはAd-Hoc配布の手順書
```
---
## 🟢 残課題(優先度: 低)
### 5. 未使用コード・コメントのクリーンアップ
**確認が必要な箇所**:
1. lib/models/user_profile.dart の tutorial関連フィールド
- hasSeenCameraTutorial
- hasSeenProfileTutorial
- hasSeenSommelierTutorial
- これらは既に `@Deprecated` だが完全削除されていない
2. tools/ ディレクトリのスクリプト
- avoid_print 警告が多数
- デバッグ用途なら問題ないが、不要なら削除
**Cursorへの依頼事項**:
```markdown
以下をクリーンアップ:
1. Deprecatedフィールドの完全削除
- マイグレーション処理が必要か確認
- 既存ユーザーデータとの互換性確認
2. tools/ ディレクトリのスクリプト整理
- 使用されているスクリプトと未使用スクリプトを分類
- 未使用なら削除、使用中ならdebug用として明示
```
---
### 6. パッケージアップデート
**現状**:
```
Lite版: 60 packages have newer versions incompatible with dependency constraints.
Pro版: 33 packages have newer versions incompatible with dependency constraints.
```
**注意事項**:
- flutter_riverpod 3.1.0 → 3.2.0
- google_fonts 6.3.3 → 8.0.0
- connectivity_plus 6.1.5 → 7.0.0 (Breaking changes likely)
- その他多数
**Cursorへの依頼事項**:
```markdown
⚠️ 慎重に実施Breaking changes多数
1. flutter pub outdated でBreaking changesを確認
2. 影響範囲が小さいパッケージから順次アップデート
3. 各アップデート後に flutter analyze と flutter test を実行
4. 実機テストで動作確認
優先度:
- Low: 現状でも動作している
- ただし、長期的にはメンテナンスが必要
```
---
## 📝 保護すべきコード(絶対に変更しないこと)
### 1. 空状態判定ロジック
```dart
// lib/screens/home_screen.dart:176
final isListActuallyEmpty = ref.watch(rawSakeListItemsProvider).asData?.value.isEmpty ?? true;
// lib/screens/menu_creation_screen.dart:134
final isListActuallyEmpty = ref.watch(rawSakeListItemsProvider).asData?.value.isEmpty ?? true;
```
**理由**: 「完全に空」vs「フィルタで0件」の区別に必須
---
### 2. 開発者メニューの全データアクセス
```dart
// lib/screens/dev_menu_screen.dart:189
final allItems = ref.read(rawSakeListItemsProvider).asData?.value ?? [];
```
**理由**: セット商品含む全データ解析が必要
---
### 3. 意図的なハードコーディング
**画像オーバーレイ** (lib/widgets/home/sake_grid_item.dart:102):
```dart
color: Colors.black54, // Changed from gradient to solid for "Transparent Black" underlay request
```
**理由**: 以前の入念な調整結果。視認性確保のため。
**AppBar検索フィールド** (複数箇所):
```dart
style: const TextStyle(color: Colors.white)
```
**理由**: AppBarは常にダーク背景のため、白テキストが正解。
詳細: [SAFE_FIXES_REPORT.md](SAFE_FIXES_REPORT.md)参照
---
## 🎯 Cursorへの推奨作業順序
### フェーズ1: 安全な修正(デグレリスク: 低)
1. ✅ withOpacity → withValues() 一括置換
2. ✅ Tutorial関連のDeprecated削除マイグレーション確認後
3. ✅ Share → SharePlus移行
4. ✅ ExpansionTileController → ExpansibleController移行
**期待される成果**: flutter analyze 58 issues → 35 issues程度
---
### フェーズ2: 慎重な修正(デグレリスク: 中)
1. ⚠️ use_build_context_synchronously警告の修正
- mounted チェック追加
- 各箇所を個別に検証
2. ⚠️ ライトモードUI統一ユーザー確認後
**期待される成果**: flutter analyze 35 issues → 20 issues程度
---
### フェーズ3: 長期的改善(デグレリスク: 中〜高)
1. ⚠️ セット商品のUI設計変更Option A推奨
2. ⚠️ パッケージアップデート(段階的に)
3. ⚠️ iOS準備将来的
---
## 📊 現状の品質指標
### ビルド
- ✅ Lite版: 88.9MB(リリースビルド成功)
- ✅ Pro版: 50.5MB(リリースビルド成功)
### 静的解析
- flutter analyze: 58 issuesinfo levelのみ、error/warningなし
### Phase D6実装
- ✅ 個人モード: セット商品完全除外
- ✅ ビジネスモード: セット商品表示
- ✅ タグフィルター: セット商品除外(個人モード)
- ✅ 都道府県フィルター: セット商品除外(個人モード)
- ✅ 空状態判定: 正常動作
### UI/UX
- ✅ ダークモード: AppBar/NavigationBar統一
- ⚠️ ライトモード: Material Design 3標準動作要検討
---
## 📚 参考ドキュメント
1. **PHASE_D6_COMPLETION_REPORT.md**: Phase D6完全実装の詳細
2. **IMPLEMENTATION_SUMMARY_v1.0.10+19.md**: 全実装内容のサマリー
3. **CURSOR_PROPOSAL_FINAL_REVIEW.md**: Cursor提案の批判的レビュー
4. **SAFE_FIXES_REPORT.md**: 意図的なハードコーディングのリスト
5. **AI_CONSULTATION_PROMPT.md**: セット商品UI設計の相談用プロンプト
6. **CURSOR_REVIEW_PROMPT_UPDATED.md**: 包括的レビュープロンプト
---
## 🎉 完了の定義Definition of Done
### Android友人配布版
- ✅ Phase D6完全実装完了
- ✅ リリースビルド成功Lite/Pro両方
- ✅ デグレなしflutter analyze安定
- ✅ 実機テスト推奨(ユーザー実施)
### 次期バージョンv1.0.11+20
- [ ] flutter analyze 20 issues以下
- [ ] セット商品UI改善Option A実装
- [ ] iOS TestFlight配布準備完了
- [ ] パッケージアップデート完了
---
**作成者**: Claude (Sonnet 4.5)
**作成日時**: 2026年2月3日
**対象バージョン**: v1.0.10+19
**Cursor申し送り**: このドキュメントに従って段階的に改善してください