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

154 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

# Day 2: セキュリティ & キャッシュ確認チェックリスト
**実施日**: 2026-01-22
**担当**: 開発者(実機テスト)
---
## ✅ 1. Git履歴からAPIキー削除確認完了
### 確認結果
-`.gitignore``lib/secrets.local.dart``lib/libsecrets.dart` が含まれている
-`lib/secrets.dart` は未追跡(`??` = untracked
-`lib/secrets.local.dart.example` も未追跡
-`lib/secrets.dart``defaultValue` は空文字列38行目
- ✅ APIキーは `secrets.local.dart` から読み込まれる50行目
### セキュリティ状態
**🟢 安全**: APIキーはGit履歴に残っていません。
**重要**:
- `lib/secrets.dart` を今後Gitにコミットする場合、必ず `defaultValue: ''` のままにしてください
- `lib/secrets.local.dart` は絶対にコミットしないでください
---
## ⏳ 2. キャッシュ機能の実機テスト(実施中)
### テスト手順
#### Step 1: 新しい日本酒の写真を選択
1. ギャラリーから**今まで解析していない日本酒の写真**を選択
2. AI解析が実行されるキャッシュMISS
3. ログで以下を確認:
```
I/flutter: 🔍 Cache MISS: [ハッシュ値]
I/flutter: ✅ AI解析成功: [銘柄名]
```
#### Step 2: 同じ写真を再度選択
1. ギャラリーから**同じ写真**を選択
2. AI解析がスキップされるキャッシュHIT
3. ログで以下を確認:
```
I/flutter: 💰 API呼び出しをスキップキャッシュヒット
```
#### Step 3: 開発者メニューでキャッシュサイズを確認
1. マイページ → 設定 → 開発者メニュー
2. 「キャッシュサイズ」を確認
3. 数値が表示されているか確認(例: 「2件」
#### Step 4: キャッシュクリアのテスト
1. 開発者メニューで「キャッシュクリア」をタップ
2. 確認ダイアログで「OK」
3. キャッシュサイズが「0件」になることを確認
#### Step 5: キャッシュクリア後の再解析
1. ギャラリーから**先ほどの写真**を選択
2. AI解析が再度実行されるキャッシュMISS
3. ログで以下を確認:
```
I/flutter: 🔍 Cache MISS: [ハッシュ値]
```
### 期待される結果
- ✅ 同じ写真を選択した場合、API呼び出しがスキップされる
- ✅ ログで「💰 API呼び出しをスキップ」が表示される
- ✅ 開発者メニューでキャッシュサイズが確認できる
- ✅ キャッシュクリア後は再度API呼び出しが実行される
### キャッシュ効果の試算
| シナリオ | API呼び出し | 削減率 |
|---------|------------|--------|
| 新しい写真 | 1回 | 0% |
| 同じ写真2回目 | 0回 | 100% |
| 同じ写真3回目 | 0回 | 100% |
| **合計** | **1回** | **66%削減** |
---
## ⏳ 3. エラーハンドリング確認(実施中)
### テスト手順
#### Test 1: ネットワークエラー
1. スマホを**機内モード**にする
2. ギャラリーから写真を選択
3. エラーメッセージが表示されるか確認:
```
「AI解析に失敗しました」
```
4. 「再試行」ボタンが表示されるか確認
5. 機内モードを解除
6. 「再試行」ボタンをタップ
7. AI解析が成功するか確認
**期待される結果**: ✅ エラーメッセージ表示 → 再試行で成功
---
#### Test 2: API制限到達手動テスト
**注意**: このテストは**20回の解析**を実行するため、API制限に達します。
1. ギャラリーから**異なる写真を20回**選択
2. 21回目の解析を実行
3. エラーメッセージが表示されるか確認:
```
「本日のAI解析リクエスト上限に達しました。
明日またお試しください。」
```
4. 「再試行」ボタンをタップ
5. 同じエラーメッセージが表示されるか確認
**期待される結果**: ✅ 制限到達時に適切なエラーメッセージ表示
**注意**: このテストを実行すると、今日はこれ以上AI解析ができなくなります。
---
#### Test 3: 画像読み込みエラー
1. ギャラリーから**破損した画像**または**非常に大きな画像**を選択
2. エラーメッセージが表示されるか確認
3. アプリがクラッシュしないか確認
**期待される結果**: ✅ エラーメッセージ表示、クラッシュなし
---
## 📊 Day 2 完了判定
### 必須項目
- [ ] Git履歴にAPIキーが残っていないことを確認✅ 完了)
- [ ] キャッシュHITが動作することを確認
- [ ] 開発者メニューでキャッシュサイズが表示されることを確認
- [ ] ネットワークエラー時に適切なエラーメッセージが表示されることを確認
### オプション項目(推奨)
- [ ] API制限到達時のエラーメッセージを確認20回解析が必要
- [ ] 画像読み込みエラー時の挙動を確認
---
## 🎯 次のステップDay 3
Day 2のテストが完了したら、以下を実施:
1. 全機能の実機テスト
2. バグ修正
3. パフォーマンステスト
---
**実施者**: 開発者
**確認者**: Cursor AIログ確認