鄭沛軒
|
69b85c542c
|
feat: 實現用戶隔離和重複保存告警機制
重大改進:
- 修復用戶隔離快取機制,使用用戶 ID 區分快取 key
- 添加重複保存告警,防止同一次分析中重複保存相同詞彙
- 實現 JWT token 解析獲取用戶 ID,確保資料隔離
- 添加 24 小時快取過期機制
用戶體驗優化:
- 已保存詞彙顯示綠色勾號視覺標記
- 重複保存時提供確認對話框和清楚說明
- 新分析時自動重置已保存詞彙追蹤
- 完整的快取驗證和安全檢查
隱私保護:
- 不同用戶的分析結果完全隔離
- 換帳號後無法看到其他用戶的快取內容
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 22:50:49 +08:00 |
鄭沛軒
|
a0bda28c41
|
fix: 添加 Generate 頁面的 JWT 認證支援
- 修復 AI 分析 API 調用缺少認證 token 的問題
- 添加適當的 401 錯誤處理和用戶提示
- 確保統一的認證邏輯應用到所有受保護的 API
現在所有功能都正確使用 JWT 認證,系統完全準備好上線。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 22:31:14 +08:00 |
鄭沛軒
|
92b9697430
|
fix: 完成前端 URL 配置統一管理
- 修復 API 配置預設端口從 5000 改為 5008
- 重構 Profile 頁面使用統一的 API_URLS 配置
- 更新測試檔案的端口號
- 新增系統上線前測試代碼清理計劃文檔
完成前端 URL 配置統一管理,所有 API 調用現在都使用正確的端口和統一配置。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 22:16:06 +08:00 |
鄭沛軒
|
58b833ef98
|
feat: 系統上線前測試代碼清理和功能修復
重大修復:
- 修復固定測試用戶 ID,改為從 JWT token 正確解析
- 移除所有 AllowAnonymous 認證繞過,啟用生產級安全保護
- 清理開發專用配置,移除 test-key 允許邏輯
- 修復前端認證 token 發送,統一使用 auth_token key
功能驗證:
- ✅ 圖片生成功能完全正常
- ✅ Google Cloud Storage 儲存成功驗證
- ✅ 完整的認證保護已啟用
- ✅ 前後端認證整合完成
系統現已準備好安全上線!
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 22:08:51 +08:00 |
鄭沛軒
|
99677fc014
|
docs: 新增例句口說練習整合技術規格文檔
- 詳細規劃例句口說練習功能的前後端整合方案
- Microsoft Azure Speech Services 發音評估 API 整合設計
- 完整的 API 介面規格和資料庫 Schema 設計
- Web Audio API 錄音功能實現規格
- 複習系統 quizType 擴展方案 (sentence-speaking)
- 多維度評分系統設計 (準確度/流暢度/完整度/韻律)
- 成本分析和部署考量事項
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 00:40:03 +08:00 |
鄭沛軒
|
fce5138c55
|
refactor: 簡化 Generate 頁面邏輯,移除未使用的狀態變數
- 移除未使用的 isInitialLoad 狀態變數,修復 TypeScript 警告
- 簡化快取恢復邏輯,去除不必要的初始化標記
- 保持核心功能:凍結互動句子顯示,避免跟隨新輸入變化
- 確保代碼簡潔且無警告
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 00:09:41 +08:00 |
鄭沛軒
|
4d0f1ea3a5
|
fix: 實現方案二 - 凍結互動句子顯示,保留舊分析結果
- 移除自動清除分析結果的邏輯,保留舊分析結果不被刪除
- 修改互動句子部分使用 lastAnalyzedText 而非 textInput,避免跟隨新輸入變化
- 修改播放按鈕使用 lastAnalyzedText,確保播放的是已分析的文本
- 添加智能狀態指示器,清楚標示當前顯示的分析對象
- 當輸入與分析不匹配時提供橙色警告提示,引導用戶重新分析
- 當輸入與分析匹配時顯示綠色確認狀態
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-09 00:04:21 +08:00 |
鄭沛軒
|
55b229409f
|
fix: 修復 Generate 頁面輸入和分析結果不匹配的 UX 問題
- 添加 lastAnalyzedText 和 isInitialLoad 狀態追踪
- 實現智能清除機制:當用戶修改輸入文本時自動清除舊的分析結果
- 優化快取恢復邏輯,確保頁面重載時正確同步狀態
- 添加友善提示,當有文本但無分析結果時引導用戶點擊分析按鈕
- 確保輸入文本和顯示的分析結果始終保持一致
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 23:56:32 +08:00 |
鄭沛軒
|
b5c94eaacd
|
docs: 新增 Google Cloud Storage 整合和前端架構說明文檔
- Google Cloud Storage 圖片儲存遷移手冊
- 前端圖片 URL 處理機制詳解
- Generate 頁面 UX 改善計劃
- Cloudflare R2 遷移指南
- CORS 配置文件
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 23:53:04 +08:00 |
鄭沛軒
|
a953509ba8
|
fix: 修復圖片 URL 生成邏輯,確保返回完整的 Google Cloud Storage URLs
- 注入 IImageStorageService 到 FlashcardsController
- 添加 GetImageUrlAsync 方法統一處理圖片 URL 生成
- 重構 GetFlashcards 從 LINQ 改為 foreach 迴圈支援異步操作
- 修復 GetFlashcard 方法的圖片 URL 處理邏輯
- 確保前端接收到完整的 GCS URLs 而非相對路徑
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 23:52:44 +08:00 |
鄭沛軒
|
1a20a562d2
|
feat: 實現 Google Cloud Storage 圖片儲存整合
重大功能更新:
- 新增完整的 Google Cloud Storage 抽換式圖片儲存架構
- 支援條件式切換:本地儲存 ↔ Google Cloud Storage
- 實現 GoogleCloudImageStorageService 服務類別
- 整合 Application Default Credentials 認證機制
- 修正前端圖片 URL 處理邏輯,支援 Google Cloud URL
- 建立完整的 Google Cloud Storage 遷移手冊
- 設定 CORS 政策允許跨域圖片存取
技術特色:
- 零程式碼修改的儲存方式切換
- 完整的錯誤處理和日誌記錄
- 支援 CDN 和自訂域名
- 符合生產環境的安全性標準
測試驗證:
- Google Cloud Storage 認證設定成功
- 圖片成功上傳到雲端 bucket
- CORS 設定解決跨域問題
- 前端圖片 URL 處理正確
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 18:42:23 +08:00 |
鄭沛軒
|
b9f89361d9
|
feat: 重新設計AI生成頁面為統一界面
重大更新:
- 完全重新設計為上下流式統一界面,無需切換頁面
- 移除showAnalysisView狀態,左側輸入右側即時顯示結果
- 添加句子播放按鈕,支援整句語音播放
- 實現localStorage分析結果持久化,跳頁後保留內容
- 統一WordPopup所有區塊顏色為灰色主題,保持視覺一致
- 優化詞彙統計顯示,移除多餘的進度條
- 添加保存提醒警告,避免查詢紀錄消失
- 程度指示器整合到頁面標題區域
用戶體驗大幅提升:
- 更直觀的操作流程
- 更豐富的互動功能
- 更一致的視覺設計
- 更好的數據持久化
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 03:11:42 +08:00 |
鄭沛軒
|
1b6e62de95
|
feat: 完善AI生成頁面功能與體驗
- 修復詞彙顏色邏輯,實現基於用戶程度的相對難度顯示
- A2用戶看B2詞彙現在正確顯示橘色(挑戰等級),而非固定藍色
- 新增分析結果localStorage持久化,跳頁後保留分析內容
- 添加簡潔的用戶程度指示器,使用經典齒輪圖標
- 程度按鈕靠右對齊,固定灰色主題,清楚導航到設定頁面
提升個人化學習體驗和界面一致性
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 02:14:36 +08:00 |
鄭沛軒
|
2c204c1146
|
fix: 修復AI生成頁面詞彙顏色邏輯,實現相對難度顯示
- 修改getWordClass函數,加入用戶等級參數進行相對難度判斷
- 實現智能顏色系統:綠色(太簡單)、藍色(適中)、橘色(挑戰)、紅色(困難)
- 修復A2用戶看到B2詞彙(如sentimental)應顯示橘色而非藍色的問題
- 從localStorage獲取用戶英語等級,提供個人化學習體驗
現在詞彙顏色會根據用戶能力水平動態調整
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 01:38:06 +08:00 |
鄭沛軒
|
adf9ef0394
|
fix: 統一所有頁面布局,解決排版不一致問題
- 修復AI生成頁面的雙層容器問題,移除多餘的max-w-4xl限制
- 統一所有頁面使用相同的容器設定 (max-w-7xl mx-auto px-4 sm:px-6 lg:px-8)
- 統一背景色為藍色漸層,保持視覺一致性
- 統一標題樣式為響應式設計 (text-2xl sm:text-3xl)
- 清理未使用的導入和變數
所有頁面標題和內容位置現在完全對齊
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 01:27:36 +08:00 |
鄭沛軒
|
4866ff8e9c
|
feat: 優化詞卡管理頁面體驗
- 重新設計手機版詞卡布局,圖片放左上角,翻譯在詞彙下方
- 新增播放按鈕到詞卡列表,桌面版在音標旁,手機版在詞性旁
- 移除手機版音標顯示,精簡界面
- 調整 CEFR 和詞性標籤位置,底部左右分布更合理
- Logo 導航從儀表板改為詞卡頁面,保持導航一致性
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 01:11:53 +08:00 |
鄭沛軒
|
0ba66b6c60
|
fix: 修復登出按鈕不立即跳轉的問題
- 在 AuthContext.logout() 中添加立即跳轉邏輯
- 確保所有登出操作都會立即跳轉到登入頁面
- 統一登出行為,提升用戶體驗
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 00:36:04 +08:00 |
鄭沛軒
|
b7c695bb4e
|
feat: 優化用戶體驗與界面設計
- 修復用戶名稱更新後導航欄不即時更新的問題
- 新增 AuthContext.updateUser 方法同步全域用戶狀態
- 隱藏導航欄通知鈴鐺按鈕
- 隱藏儀表板導航項目
- 隱藏個人資料頁面的學習設定分頁
- 調整登出按鈕顏色為較溫和的灰色
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-08 00:18:10 +08:00 |
鄭沛軒
|
6b66c56adc
|
refactor: 移除冗餘接口文件,簡化架構並重新組織測試結構
- 刪除重複的接口定義文件,採用具體實現類
- 重新組織測試項目結構,建立 Unit 測試分類
- 新增 Contracts 目錄統一管理資料契約
- 更新服務注入配置,簡化依賴關係
- 修復相關控制器和服務的類型引用
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 23:45:25 +08:00 |
鄭沛軒
|
b199ccfb5e
|
docs: 新增架構重構與測試保護計劃文檔
- 建立完整的架構重構與API測試計劃文檔
- 新增測試保護效用實證示範文檔
- 記錄破壞性變更檢測能力驗證過程
- 提供未來架構重構的詳細指引
文檔內容:
- 現狀分析與問題診斷
- 三階段重構計劃 (測試→重構→改進)
- 完整的執行檢查清單
- 實證的測試保護效用示範
- 最終完成狀況與統計數據
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 22:05:12 +08:00 |
鄭沛軒
|
c0e617065c
|
feat: 建立完整的 API 整合測試安全網
測試基礎設施建立:
- WebApplicationFactory + IntegrationTestBase 測試框架
- MockGeminiClient AI 服務 Mock 避免外部依賴
- JwtTestHelper + TestDataSeeder 完整測試工具
- Program.cs 曝露給測試專案使用
API 整合測試覆蓋 (54個新測試):
- FlashcardsController: 7/7 完美通過 ✅
- AuthController: 9個認證相關測試
- AIController: 7個 AI 分析測試
- OptionsVocabularyController: 8個選項生成測試
- ImageGenerationController: 7個圖片生成測試
端對端業務流程測試 (16個):
- 完整複習流程 (答對/答錯/跳過邏輯)
- AI 詞彙生成到儲存完整流程
- 使用者資料隔離與安全驗證
實證破壞性變更檢測能力:
- DI 註冊錯誤立即檢測
- 編譯時型別錯誤防護
- 業務邏輯完整性保護
總計 123 個測試,96個通過,為架構重構提供安全保障
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 22:04:27 +08:00 |
鄭沛軒
|
4525e8338b
|
docs: 新增後端服務完整審計報告
- 詳細記錄了 Services 目錄的完整分析過程
- 包含服務依賴關係檢查結果
- 記錄優化作業的執行步驟和時間軸
- 提供清理統計數據和效益評估
- 為未來的架構優化提供參考基準
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 20:38:43 +08:00 |
鄭沛軒
|
da78d04b8b
|
refactor: 清理未使用的後端服務並建立審計報告
- 移除4個未使用的服務檔案:
• IGeminiAnalyzer.cs - 未實作的介面
• AudioCacheService.cs - 未使用的音頻快取服務
• AzureSpeechService.cs - 未使用的語音服務
• UsageTrackingService.cs - 未使用的使用量追蹤服務
- 移除相關的 DI 容器註冊
- 移除空的 Services/Media/Audio/ 目錄
- 新增完整的後端服務審計報告文件
- 保留核心功能服務的所有依賴關係
編譯測試通過,功能完整保留,程式碼減少約500+行
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 20:38:26 +08:00 |
鄭沛軒
|
ad63b8fed8
|
feat: 完整修復 AI 同義詞功能並優化架構
同義詞功能修復:
- 添加 Synonyms 屬性到 Flashcard 實體並執行 migration
- 創建 Services/AI/Utils/SynonymsParser.cs 專門處理 AI 同義詞解析
- 修復 ReviewService 使用真實同義詞資料而非硬編碼空陣列
- 更新前後端 CreateFlashcardRequest DTO 支援同義詞傳輸
- 修復前端 generate page 包含 AI 生成的同義詞資料
- 前端 flashcards.ts 添加 synonyms 欄位支援
UI 優化:
- 重新設計手機版分頁導航,圓形大按鈕解決觸控問題
- 修復手機版詞卡管理佈局,解決擠壓和字體過小問題
- 統一全站詞性顯示為標準簡寫格式
- 修復詞卡詳細頁面日期顯示問題
- 導航列優化:個人檔案移至右上角用戶區域
架構改進:
- AI 邏輯集中在 Services/AI 模組
- Review 服務專注複習功能
- 前後端責任分離:後端解析,前端顯示
現在 AI 生成的同義詞完整保存並在各界面正確顯示。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 19:57:25 +08:00 |
鄭沛軒
|
a5b2cc746c
|
feat: 重新設計手機版分頁導航解決字體過小問題
- 手機版採用極簡圓形按鈕設計,移除擠壓的下拉選單
- 大字體顯示:text-base (16px) 和 text-lg (18px) 確保清晰易讀
- 圓形大按鈕:12x12 觸控區域 + 陰影效果 + 按壓動畫
- 垂直居中布局:分頁資訊 + 導航控制分層顯示
- 桌面版保持完整功能:詳細統計 + 頁碼導航 + 每頁選擇
- 改進桌面版下拉選單:min-w-[80px] 確保適當寬度
解決手機版下拉選單字體過小和界面擠壓問題。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 18:49:27 +08:00 |
鄭沛軒
|
f08d798aa4
|
feat: 修復 AI 生成同義詞完整保存功能
- 添加 Synonyms 屬性到 Flashcard 實體模型並配置 DbContext
- 執行 FixSynonymsColumn migration 在資料庫中添加 synonyms 欄位
- 更新前後端 CreateFlashcardRequest DTO 支援同義詞傳輸
- 修復前端 generate page 包含 AI 生成的同義詞資料
- 添加前端安全 JSON 解析,正確顯示同義詞標籤
- 修復完整資料流程:AI 分析 → 前端處理 → API 傳輸 → 資料庫儲存
現在 AI 生成的同義詞不再被浪費,完整保存並在詞卡詳細頁面顯示。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 18:09:06 +08:00 |
鄭沛軒
|
3b6b52c0d4
|
feat: 統一詞性簡寫顯示並修復複習日期問題
- 統一全站詞性顯示為標準簡寫格式 (n., v., adj., adv.)
- 修復詞卡詳細頁面 1970/1/1 日期顯示問題:
* 後端 GetFlashcard API 添加複習記錄查詢
* 前端添加安全的日期格式化處理
- 重新設計手機版詞卡管理頁面:
* 優化 FlashcardCard 手機版布局,解決擠壓問題
* 重新設計 SearchControls 導航為垂直分層布局
- 移除過時的掌握度顯示,簡化界面
- 改進詞卡詳細頁面間距,增加視覺舒適度
現在詞卡管理和詳細頁面在手機版和桌面版都有更好的用戶體驗。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 17:23:55 +08:00 |
鄭沛軒
|
4c7696f80b
|
feat: 重新設計個人檔案頁面並整合設定功能
- 建立全新分頁式個人檔案頁面(👤個人資料 ⚙️學習設定 🎯英語程度)
- 整合原有 settings 功能到 profile 頁面的分頁中
- 重新設計導航列:移除設定連結,個人檔案放在右上角用戶區域
- 改進響應式設計:桌面和手機版都有清晰的個人檔案入口
- 簡化 settings 頁面為重新導向頁面,統一用戶體驗
- 修復前端條件判斷邏輯,改善空狀態畫面顯示
新設計更簡潔易用,符合標準 UI 模式。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 07:18:35 +08:00 |
鄭沛軒
|
4a7c3aec92
|
fix: 修復前端認證 token 發送和用戶資料隔離問題
- 啟用前端 API client 的認證 header 發送(修復關鍵問題)
- 添加 401 錯誤自動清除過期 token 機制
- 設計兩種空狀態畫面:新用戶歡迎 vs 完成慶祝
- 改進錯誤處理:區分認證錯誤和一般錯誤
- 添加詳細除錯日誌追蹤 API 調用過程
- 修復前端條件判斷邏輯,確保正確顯示空狀態
現在用戶資料完全隔離,認證過期會自動處理並引導重新登入。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 06:21:21 +08:00 |
鄭沛軒
|
1eb28e83c5
|
refactor: 強化 Quiz Option 生成機制防止重複詞彙
- 加強 AI 生成後的詞彙過濾,確保不包含目標詞彙
- 改進 fallback 選項品質,使用更具挑戰性的詞彙池
- 添加詳細日誌追蹤選項生成過程(✅📚💡🤖)
- 修復資料庫重複詞彙問題,確保選項品質
測試驗證:happy -> efficient, essential, fundamental
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 05:12:15 +08:00 |
鄭沛軒
|
f24f2b0445
|
fix: 修復後端認證權限和前端快取問題
- 強化後端權限保護:為所有控制器添加 [Authorize] 屬性
- 修復 OptionsVocabularyService LINQ 查詢問題(EF Core 翻譯錯誤)
- 移除前端 localStorage 快取機制,確保詞卡資料即時性
- 改進開發環境硬編碼用戶ID的安全處理
- 添加生產環境 JWT Secret 強度驗證
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 05:00:11 +08:00 |
鄭沛軒
|
d0b6e9e757
|
feat: 建立開發/正式版本分離的進度組件架構
## 組件重組
- 創建 QuizProgressDev.tsx:給 /review-dev 使用,保留完整開發功能
- 修改 QuizProgress.tsx:給 /review 使用,移除開發測試資訊
- 頁面獨立:兩個頁面使用不同組件,互不影響
## TypeScript 修復
- 完善 CardState interface 類型兼容性
- 修復 primaryImageUrl, updatedAt, exampleTranslation 類型匹配
- 確保所有必需屬性都有預設值
## 頁面功能
- /review: 使用簡化版 QuizProgress,適合正式使用
- /review-dev: 使用完整版 QuizProgressDev,保留所有調試功能
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 02:21:13 +08:00 |
鄭沛軒
|
473ecf4508
|
refactor: 精簡正式複習頁面 UI
- 移除測驗過程中的「重新開始」按鈕
- 保持更簡潔的複習體驗
- 用戶可以在結果頁面進行重新開始
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 01:08:29 +08:00 |
鄭沛軒
|
c3dafee6c3
|
fix: 修復新複習頁面的 TypeScript 類型錯誤
- 在 CardState interface 中添加 difficultyLevelNumeric 屬性
- 確保與 reviewSimpleData 中的類型定義兼容
- 修復 QuizProgress 組件的類型匹配問題
- /review 頁面現在能正常編譯和運行
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 01:07:49 +08:00 |
鄭沛軒
|
a8562c3d48
|
feat: 更新導航欄指向新的複習頁面結構
- Navigation.tsx: 將複習連結從 /review-simple 更新為 /review
- Dashboard.tsx: 更新「開始今日複習」按鈕指向新的 /review 頁面
- 確保用戶界面統一指向正式複習頁面
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 01:06:15 +08:00 |
鄭沛軒
|
8e96b07d71
|
refactor: 重新組織複習頁面結構
- 將 review-simple 重命名為 review-dev (開發測試頁面)
- 新增 /review 作為正式複習頁面
- 複製相同功能作為新頁面的修改基礎
- 準備進行正式頁面的功能開發
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 00:31:19 +08:00 |
鄭沛軒
|
ce0455df3d
|
feat: 實現詞彙完全掌握時自動更新複習時間功能
## 後端改進
- 新增 POST /flashcards/{id}/mastered 簡化API端點
- 實作 MarkWordMasteredAsync 方法,專門處理詞彙掌握
- 修復 GetOrCreateReviewAsync 立即保存新記錄問題
- 使用 2^成功次數 演算法計算下次複習間隔
## 前端整合
- 更新 useReviewSession 支援詞彙級別完成檢測
- 新增 checkWordCompleteAndCorrect 檢查所有測驗項目
- 實作 submitWordCompletion 自動提交詞彙掌握
- 新增 markWordMastered API 方法呼叫簡化端點
- 改用真實後端資料替代靜態測試資料
## 核心功能
- 詞彙所有測驗(flip-card + vocab-choice)完成且全對時自動觸發
- 背景呼叫 /mastered API 更新複習演算法
- Console 顯示詳細掌握訊息和新複習時間
- 容錯設計:API失敗不影響複習流程繼續
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-07 00:29:53 +08:00 |
鄭沛軒
|
006dcfee86
|
feat: 整合 AI 智能 quizOptions 到 due API
✨ 新增功能
- 每張詞卡自動生成 3 個混淆選項 (quizOptions)
- AI 驅動的智能混淆選項生成系統
- 基於詞性和難度等級的選項匹配
🧠 AI 生成邏輯
- 使用 Gemini AI 生成語義相關但明確不同的選項
- 根據 CEFR 等級和詞性調整選項難度
- JSON 格式回應解析和錯誤處理
🚀 性能優化
- 記憶體快取機制 (1小時過期)
- 資料庫持久化儲存生成的選項
- 智能降級機制:AI失敗時使用固定選項
📊 測試確認
- API 回應包含完整的 quizOptions 陣列
- 支援異步批量生成多張詞卡選項
- 前端可直接使用於詞彙選擇測驗
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 21:15:12 +08:00 |
鄭沛軒
|
e8ab42dfd7
|
feat: 實現 /api/flashcards/due API 完整功能
✨ 新增功能
- 建立 FlashcardReview 實體與資料庫表格
- 實現間隔重複算法 (2^n 天公式)
- 支援信心度評估系統 (0=答錯, 1-2=答對)
- 完整的複習統計與進度追蹤
🔧 技術實作
- FlashcardReviewRepository: 優化查詢避免 SQLite APPLY 限制
- ReviewService: 業務邏輯與算法實現
- FlashcardsController: 新增 GET /due 和 POST /{id}/review 端點
- 資料庫遷移與索引優化
📊 API 功能
- 支援查詢參數: limit, includeToday, includeOverdue, favoritesOnly
- 返回格式完全兼容前端 api_seeds.json 結構
- 包含完整 reviewInfo 複習狀態信息
- API 已測試確認在 http://localhost:5000 正常運作
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 20:49:40 +08:00 |
鄭沛軒
|
f5795b8bd6
|
refactor: 清理 reviewSimpleData.ts 未使用的程式碼
移除未使用的 ApiResponse interface、MOCK_API_RESPONSE 常數和 sortCardsByPriority 舊版函數,簡化程式碼結構。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 19:57:42 +08:00 |
鄭沛軒
|
c8330d2b78
|
feat: 新增複習系統完整架構 + 前端重構統一命名
主要新增:
- FlashcardReview 實體 + ReviewDTOs (後端複習系統基礎)
- DbContext 配置複習記錄關聯和唯一約束
- 前端技術規格實作版文檔 (含完整SA圖表)
- 後端規格v2.0 (基於前端需求更新)
前端重構:
- TestItem → QuizItem 統一命名
- testType → quizType 屬性統一
- 所有組件和Hook命名保持一致
- QuizProgress 組件增強視覺化顯示
架構改善:
- 數據庫設計支援間隔重複算法 (2^n天)
- API端點設計配合前端需求
- 完整的狀態管理和持久化策略
- 詳細的前端架構圖表和流程說明
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 19:48:15 +08:00 |
鄭沛軒
|
3783be0fcd
|
refactor: 重構 Generate 頁面移除過度抽象 + 統一按鈕樣式
主要改動:
- 移除 ClickableTextV2 組件 (115行) → 內聯為35行邏輯
- 新增 selectedWord 狀態管理與統一 WordPopup 組件
- 移除慣用語區塊複雜星星判斷邏輯 (17行 → 0行)
- 調整句子主體字體大小 text-xl→lg 更適中
- 重構單字樣式: 下劃線 → 按鈕樣式 (邊框+圓角+hover)
- 根據 CEFR 等級設置顏色主題 (A1/A2綠、B1/B2藍、C1/C2紅)
效果:
- 淨減少 ~80行代碼複雜度
- 統一視覺風格 (慣用語 + 單字按鈕一致)
- 提升用戶體驗 (清晰可點擊按鈕)
- 簡化維護成本
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 17:49:16 +08:00 |
鄭沛軒
|
6a5831bb16
|
docs: 新增 Generate 頁面重構分析報告與複習功能流程圖
- 新增 Generate 頁面過度重構分析報告 (詳細說明問題與解決方案)
- 新增複習功能前後端系統流程圖 (系統架構文檔)
- 修正 generate 頁面慣用語彈窗統一為 WordPopup 組件
- 簡化 popupPositioning 工具保持向後兼容
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 16:56:37 +08:00 |
鄭沛軒
|
262312b02a
|
feat: 實現慣用語彈窗智能定位 + 簡化 WordPopup 組件
## 慣用語彈窗智能定位系統
- ✅ 創建智能定位工具 (popupPositioning.ts)
- ✅ 自動檢測可用空間,防止彈窗被底部遮蔽
- ✅ 智能選擇彈出方向 (上方/下方/居中)
- ✅ 響應式適配:桌面智能定位 + 手機底部modal
- ✅ 修正底部慣用語點擊體驗問題
## WordPopup 組件簡化
- 🔧 移除未使用的 useState import
- 🔧 簡化過度的響應式設計 (移除多處 sm: 斷點)
- 🔧 替換 ContentBlock 為簡單 div 結構
- 🔧 簡化條件渲染邏輯 (IIFE → 簡單 &&)
- ✅ 統一字體大小,與慣用語彈窗保持一致
## 技術改進
- 📱 設備檢測:自動適配移動/桌面體驗
- 🎯 智能定位:邊界檢測 + 動態位置計算
- 🧹 代碼簡化:減少複雜度,提升維護性
- 🎨 設計統一:兩種彈窗風格對齊
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-06 00:42:05 +08:00 |
鄭沛軒
|
b45d119d78
|
fix: 修正 generate 頁面硬編碼 API URL 問題
- 🔧 修正 app/generate/page.tsx 中的硬編碼端口
- 🔧 修正 useSentenceAnalysis.ts Hook 中的硬編碼端口
- ✅ 統一使用 API_CONFIG.BASE_URL 配置
- ✅ 修正 "Failed to fetch" 錯誤
- ⚙️ 確保 AI 句子分析功能正常運作
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-05 20:47:48 +08:00 |
鄭沛軒
|
fc517d8cd2
|
fix: 修正 VocabChoiceQuiz 語法錯誤和字符編碼問題
- 🔧 重寫 VocabChoiceQuiz.tsx 解決編碼問題
- ✅ 移除亂碼字符,確保正常編譯
- ✅ 完善答題後「下一題」按鈕功能
- ✅ 添加播放按鈕到答案解析區域
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-05 05:14:41 +08:00 |
鄭沛軒
|
2a2c47da48
|
fix: 修正圖片載入失敗 + 清理未使用的 CSS 檔案
## 修正圖片載入問題
- ✅ 移除 flashcardUtils.ts 中的硬編碼端口
- ✅ 使用統一的 API_CONFIG.BASE_URL 配置
- ✅ 圖片 URL 現在自動跟隨後端配置
- ✅ 添加圖片載入失敗的錯誤處理
## 代碼清理
- 🗑️ 移除未使用的 review-simple/globals.css
- 🗑️ 移除對應的 CSS import
- ✅ 所有組件使用 Tailwind CSS,保持一致性
## 技術改進
- 🔧 消除硬編碼,提升維護性
- ⚙️ 統一配置管理,環境變數驅動
- 🛡️ 更好的錯誤處理和用戶體驗
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-05 05:14:25 +08:00 |
鄭沛軒
|
fde7d1209b
|
feat: 實現 TTS 播放功能 + 改進詞彙選擇 UX 流程
## TTS 播放功能 (BluePlayButton)
- ✅ 實現瀏覽器內建 TTS 語音播放
- ✅ 添加瀏覽器支援檢測和錯誤處理
- ✅ 支援語速、音調、音量調整參數
- ✅ 改進播放/停止狀態管理
- ✅ 優化視覺回饋和無障礙體驗
## FlipMemory 組件整合
- ✅ 在單詞展示區添加播放按鈕
- ✅ 在例句區塊添加播放按鈕
- ✅ 防止播放觸發翻卡動作
## VocabChoiceQuiz UX 改進
- ✅ 移除自動跳頁邏輯,改為手動「下一題」
- ✅ 答題後顯示「下一題」按鈕取代「跳過」
- ✅ 在答案解析中添加單詞和例句播放功能
- ✅ 提供更好的學習體驗,讓用戶有時間查看解析
## 技術改進
- 🎵 使用 Web Speech API 實現 TTS
- 📱 響應式設計,支援多種按鈕尺寸
- 🛡️ 完善的錯誤處理和記憶體管理
- ⚡ 即時回應,無網路延遲
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-05 05:06:12 +08:00 |
鄭沛軒
|
3ff3b7f0a1
|
refactor: 重構 review 組件架構 + 修正 API 端口配置
- 重構組件命名: Simple* → 更語義化命名
- SimpleFlipCard → FlipMemory
- VocabChoiceTest → VocabChoiceQuiz
- SimpleProgress → QuizProgress
- SimpleResults → QuizResult
- SimpleTestHeader → QuizHeader
- 重新組織目錄結構:
- components/review/simple/ → components/review/quiz/ & ui/
- 分離測驗邏輯組件 (quiz/) 和 UI 組件 (ui/)
- 修正 API 配置:
- 更新 frontend/lib/config/api.ts: localhost:5008 → localhost:5000
- 配合後端實際運行端口
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-05 04:43:48 +08:00 |
鄭沛軒
|
51e5870390
|
feat: 實現線性雙測驗流程系統
## 主要功能
- 實現線性複習流程:A翻卡 → A選擇 → B翻卡 → B選擇...
- 測驗項目級別的狀態管理和進度追蹤
- 自動測驗類型切換,無需用戶選擇
## 核心改進
- 新增 TestItem 數據結構支援線性流程
- 重構 useReviewSession Hook 管理測驗項目
- 修正延遲計數系統優先級排序邏輯
- 統一兩種測驗的跳過按鈕位置
## 評分標準修正
- 翻卡記憶:一般(1分)以上算答對
- 詞彙選擇:正確選擇算答對
- 答錯的測驗項目不標記完成,會重新出現
## 用戶體驗改善
- 進入頁面自動開始線性測驗
- 清楚的測驗類型和進度指示
- 測驗項目序列可視化
- 延遲計數系統視覺反饋
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-05 04:06:54 +08:00 |