385 lines
12 KiB
Markdown
385 lines
12 KiB
Markdown
|
|
# 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残存issues(58件)
|
|||
|
|
|
|||
|
|
**現状**: 61 issues → 58 issues(3件改善済み)
|
|||
|
|
|
|||
|
|
**内訳**:
|
|||
|
|
- 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を参考に、他のAI(Gemini、GPT-4)と協議して、
|
|||
|
|
最適なUI設計を提案してください。
|
|||
|
|
|
|||
|
|
検討ポイント:
|
|||
|
|
1. セット商品の登録頻度・使用頻度
|
|||
|
|
2. お品書き作成フローの最適化
|
|||
|
|
3. ビジネスモードの全体的なUX
|
|||
|
|
4. 実装工数とメンテナンス性
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🟡 残課題(優先度: 中)
|
|||
|
|
|
|||
|
|
### 3. ライトモードのUI/UX統一
|
|||
|
|
|
|||
|
|
**現状**:
|
|||
|
|
- ダークモードは統一済み(AppBar背景色: #1E1E1E)
|
|||
|
|
- ライトモードは Material Design 3 の標準動作(スクロールで色変化)
|
|||
|
|
|
|||
|
|
**Cursorへの依頼事項**:
|
|||
|
|
```markdown
|
|||
|
|
ライトモードでAppBarとNavigationBarの背景色を統一する場合:
|
|||
|
|
|
|||
|
|
1. 検索フィールドのテキスト色を変更する必要があるか確認
|
|||
|
|
- 現在: Colors.white(AppBarが常にダーク背景前提)
|
|||
|
|
- 変更後: 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 issues(info 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申し送り**: このドキュメントに従って段階的に改善してください
|