3.5 KiB
3.5 KiB
系統上線前測試代碼清理計劃
🎯 目標
清理所有開發測試代碼,確保系統安全上線,特別是解決圖片生成功能的用戶認證問題。
🚨 高優先級 - 必須修復
1. 固定測試用戶 ID 問題 ⭐ 最重要
影響:🔴 阻止圖片生成功能運行
位置:
Controllers/BaseController.cs:79Controllers/ImageGenerationController.cs:160
問題:
// 當前代碼
return Guid.Parse("00000000-0000-0000-0000-000000000001");
// 應該修復為
var userIdClaim = User.FindFirst(ClaimTypes.NameIdentifier)?.Value
?? User.FindFirst("sub")?.Value;
return Guid.Parse(userIdClaim);
後果:
- 圖片生成使用錯誤的用戶 ID
- 外鍵約束失敗,功能完全無法使用
2. 開發環境認證繞過
影響:🟠 安全風險
位置:
Controllers/FlashcardsController.cs:16-[AllowAnonymous] // 暫時開放以測試Controllers/ImageGenerationController.cs:10-[AllowAnonymous] // 暫時移除認證要求Controllers/AIController.cs:10-[AllowAnonymous]
修復:移除 [AllowAnonymous] 或改為 [Authorize]
3. 開發專用 JWT Secret
影響:🟠 安全風險
位置:
Program.cs:93Extensions/ServiceCollectionExtensions.cs:174Controllers/AuthController.cs:181
問題:
?? "dev-secret-minimum-32-characters-long-for-jwt-signing-in-development-mode-only"
修復:確保生產環境使用正確的環境變數
🟡 中優先級 - 建議修復
4. 開發專用配置
位置:
Program.cs:49-options.ApiKey = "test-key"Models/Configuration/GeminiOptionsValidator.cs:15- 允許"test-key"
5. CORS 開發設定
位置:
Program.cs:115- localhost CORS 設定Program.cs:185- 開發環境寬鬆 CORS
6. 其他開發標記
位置:
Controllers/ImageGenerationController.cs:134-TODO: 實現分頁查詢邏輯Controllers/ImageGenerationController.cs:162-TODO: 恢復真實認證後改回
✅ 可保留 - 正確的生產實務
7. 環境判斷邏輯
if (builder.Environment.IsDevelopment())- 正確的條件判斷- 環境變數讀取邏輯
- 配置驗證邏輯
8. 測試相關檔案
frontend/public/test-register.html- 不影響生產環境- 各種文檔中的測試範例
- 測試套件依賴
🔧 關鍵發現
圖片生成失敗的根本原因
- 用戶認證問題:使用固定測試 ID
00000000-0000-0000-0000-000000000001 - 外鍵約束失敗:嘗試為不存在的用戶創建圖片生成請求
- API keys 正常:所有必要的 API keys 都已正確配置
Google Cloud Storage 狀態
- ✅ 認證正常:gcloud auth 已設置
- ✅ 配置正確:專案和儲存桶設定完整
- ✅ 服務初始化:GoogleCloudImageStorageService 正常運行
- ✅ 儲存就緒:圖片將正確儲存到
gs://dramaling-images/examples/
🚀 修復順序建議
- 立即修復:用戶 ID hardcoding - 解決圖片生成問題
- 安全加強:移除 AllowAnonymous 標記
- 配置清理:確保生產環境配置安全
- 測試驗證:完整功能測試
💡 完成修復後的預期結果
- ✅ 圖片生成功能完全正常
- ✅ 圖片正確儲存到 Google Cloud Storage
- ✅ 用戶認證安全保護
- ✅ 系統準備好安全上線