Commit Graph

125 Commits

Author SHA1 Message Date
鄭沛軒 0292c1bbfe refactor: 重新命名review-tests為review-design
- 資料夾從review-tests重命名為review-design
- 導航標籤改為🎨設計,更明確UI設計用途
- 頁面標題更新為"Review 組件設計"
- 統一外層排版與review頁面一致
- 移除測驗組件外層卡片包裝,直接展示在背景上

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 21:00:14 +08:00
鄭沛軒 f494331bdb feat: 建立Review Tests組件展示頁面
- 新增/review-tests測試頁面專門展示review-tests組件
- 導航欄添加🧪測試項目方便快速進入
- 實現Tab切換界面,每個測驗組件獨立展示
- 包含操作日誌系統追蹤組件互動行為
- 修正SentenceSpeakingTest組件props類型錯誤
- 提供完整模擬資料用於組件測試

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 19:18:43 +08:00
鄭沛軒 74932e58ff fix: 修復Flashcards頁面TypeScript類型錯誤
- 添加imageGenerationService導入修復未定義錯誤
- 修正getExampleImage和hasExampleImage函數類型簽名
- 添加缺失的generatingCards和generationProgress屬性
- 移除未使用的hasExampleImage函數
- 為status參數添加類型註解

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 18:50:41 +08:00
鄭沛軒 3fdd8bd6c3 feat: 完成完整的Learn→Review路由統一化
## 路由統一化
- 移除重複的 /app/learn/ 目錄
- 統一使用 /review 路由作為用戶訪問入口
- 更新 Navigation.tsx 路由:/learn → /review

## 用戶界面更新
- Dashboard按鈕:「開始今日學習」→「開始今日複習」
- Navigation標籤:「學習」→「複習」
- 路由跳轉全部指向 /review

## 統一化成果
- 用戶訪問:http://localhost:3000/review
- 語義一致:從路由到組件都使用review概念
- 架構清晰:不再有learn/review混淆
- 專業性提升:使用正確的教育學術術語

## 功能驗證
- /review 路由正常運作 (HTTP 200)
- /dashboard 和 /flashcards 功能完整
- Navigation導航正確跳轉
- 用戶體驗無縫切換

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 18:42:12 +08:00
鄭沛軒 afd0e660ef refactor: 完成Learn→Review重命名和Navigation死代碼清理
## Learn → Review 語義重命名
- 目錄結構: learn/ → review/ (內部架構)
- 測驗組件目錄: tests/ → review-tests/
- 狀態管理: useLearnStore → useReviewStore
- 服務層: LearnService → ReviewService
- 核心組件: TestRunner → ReviewRunner

## Navigation.tsx 死代碼清理
- 移除從未使用的 showExitLearning 和 onExitLearning props
- 刪除永不顯示的「結束複習」按鈕邏輯
- 簡化函數簽名,提升代碼可讀性
- 更新導航文字:「學習」→「複習」

## 架構優化成果
- 語義更精確:review(複習) 比 learn(學習) 更準確描述功能
- 代碼更清潔:移除16行左右的死代碼
- 用戶體驗保持:/learn 路由依然正常運作
- 維護性提升:組件職責更明確,擴展更容易

## 技術改進
- 保持完整的企業級4層架構
- 7種測驗組件完整重命名
- Zustand狀態管理語義優化
- 路由兼容性確保用戶無感知

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 18:18:43 +08:00
鄭沛軒 9f47be50d7 feat: 建立企業級Learn功能前端架構
## 架構重新設計
- 實現4層分離架構:UI層、組件層、狀態層、服務層
- 建立Zustand狀態管理中心,替代複雜的useState邏輯
- 建立完整的7種測驗類型組件庫,獨立且可復用

## 核心組件完成
- TestRunner.tsx: 測驗執行統一管理器
- 7種測驗組件: FlipMemory、VocabChoice、SentenceFill、SentenceReorder、聽力、口說
- 完整錯誤處理體系: 分類處理、自動重試、降級備份

## 狀態管理架構
- useLearnStore: 核心學習狀態和業務邏輯
- useUIStore: UI控制狀態管理
- 智能狀態恢復機制完整實現

## 技術改進
- 頁面代碼從2428行減少到215行 (91.1%減少)
- 模組化設計:1個巨型檔案 → 15個專門模組
- 企業級錯誤處理和容災機制
- 充分利用現有組件庫,避免重複開發

## 文檔完善
- 建立完整前端架構說明文檔
- 文檔重組和交叉引用系統
- 統一文檔導航入口

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 17:37:45 +08:00
鄭沛軒 0b7f709dba docs: 建立詞彙學習測驗UI設計規格文件
## 文件內容
- 從原始備份檔案提取完整的測驗UI設計規格
- 涵蓋6種測驗類型的詳細HTML結構和CSS樣式
- 包含互動邏輯、動畫效果和無障礙設計規範

## 設計規格涵蓋
- 翻卡記憶:3D動畫效果和信心等級評估
- 詞彙選擇:四選一選擇題和即時反饋
- 例句填空:內嵌式輸入框和動態寬度調整
- 例句重組:拖拽式重組和雙區域設計
- 聽力測驗:音頻播放和網格選項布局
- 口說測驗:語音錄製和評估系統

## 技術特色
- 響應式設計和一致性配色方案
- 完整的狀態管理和錯誤處理
- 進度追蹤系統和Modal設計規範
- 保留原始用戶體驗的所有設計細節

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 15:32:41 +08:00
鄭沛軒 599af6a6b0 refactor: 重構學習頁面為標準模組化架構
## 重構成果
- 將 page.tsx 從 2428 行重構為 229 行 (90.6% 代碼減少)
- 建立標準 Next.js 架構:hooks 和 components 全域化
- 創建完整備份系統,保留原始實作以供參考

## 新的模組化架構
- `/hooks/learn/` - 4個專用狀態管理 hooks
- `/components/learn/` - 4個可復用 UI 組件
- `/lib/utils/` - CEFR 工具函數
- `/app/learn/page.tsx` - 純路由邏輯

## 技術改進
- 消除代碼重複和複雜狀態管理
- 實現關注點分離和單一職責原則
- 提升開發體驗和可維護性
- 支持未來功能擴展和團隊協作

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 15:06:54 +08:00
鄭沛軒 807eb9114d feat: 實現測驗狀態持久化和智能導航系統設計
## 核心功能實現
- 實現測驗狀態持久化機制,解決刷新重置問題
- 新增 GET /api/study/completed-tests 和 POST /api/study/record-test API
- 添加 StudyRecord 表唯一索引防止重複記錄測驗
- 實現前端載入時查詢已完成測驗並跳過的邏輯

## 智能導航系統設計
- 重新設計導航邏輯:答題前顯示「跳過」,答題後顯示「繼續」
- 設計跳過隊列管理:答錯和跳過題目移到隊列最後
- 完善產品需求規格書,添加 US-008 和 US-009 用戶故事

## 技術架構改進
- 修復 API 認證問題,統一使用 auth_token
- 改善後端錯誤診斷,添加詳細日誌記錄
- 創建完整的 5 階段開發計劃文檔
- 更新前後端功能規格書,整合新功能需求

## 文檔更新
- 更新產品需求規格書 User Flow 和功能需求
- 更新前端功能規格書測驗狀態管理章節
- 更新後端功能規格書新增 API 端點
- 創建智能複習系統開發計劃文檔

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 17:57:31 +08:00
鄭沛軒 6c8c656dc3 feat: 添加重構計劃文檔和前端會話狀態優化
- 新增複習系統重構計劃文檔,詳細規劃後端驅動架構
- 優化前端學習頁面,添加詞卡複習會話狀態管理
- 實現測驗項目進度追蹤和任務清單彈出功能
- 清理過期文檔檔案
- 為後續重構奠定基礎

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 13:37:34 +08:00
鄭沛軒 c21e9de8e5 feat: 改進進度條為測驗數量追蹤,更準確反映學習進度
- 新增測驗進度狀態管理 (totalTests, completedTests)
- 實現智能測驗數量計算,基於CEFR情境判斷每詞卡測驗數
- 進度條改為基於測驗完成度而非詞卡完成度
- 新增詳細調試日誌,顯示測驗總數計算和分布
- 進度顯示格式:X/Y 測驗 + 詞卡位置 + 答題分數
- 更準確反映不同難度詞彙的實際學習工作量

範例:A1學習者3測驗 + 困難詞彙2測驗 + 適中詞彙3測驗 = 8測驗總數

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 11:00:45 +08:00
鄭沛軒 db16e58fb6 refactor: 移除冗餘UserLevel/WordLevel欄位,實現純CEFR標準架構
- 執行資料庫遷移移除flashcards表的UserLevel和WordLevel冗餘欄位
- 更新Flashcard模型移除數值屬性定義
- 清理FlashcardsController和SpacedRepetitionService中的數值欄位邏輯
- 更新前端接口移除數值欄位映射,改用純CEFR字符串
- 消除資料重複問題:users.english_level不再與UserLevel重複
- 消除資料重複問題:flashcards.difficulty_level不再與WordLevel重複
- 系統現使用即時CEFR轉換,性能優異且符合國際標準
- 徹底解決技術債務,實現純淨的CEFR標準化架構

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 08:43:29 +08:00
鄭沛軒 d19fa34556 fix: 修復學習頁面到期詞卡載入問題
- 移除API調用中的date參數,使用後端預設邏輯
- 修復日期篩選過於嚴格導致可學習詞卡被過濾問題
- 添加詳細調試日誌,便於追蹤API調用和數據轉換
- 後端現在返回所有需要復習的詞卡(到期、逾期、新詞卡)
- 學習頁面現在能正確載入5張可復習詞卡

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 08:03:01 +08:00
鄭沛軒 6c83316467 feat: 統一全前端播放按鈕為精美圓形TTS設計
- 完全重構AudioPlayer組件,移除後端依賴,改用純TTS
- 統一播放按鈕設計:圓形漸變、播放中波紋動畫、懸停特效
- 實現獨立播放狀態:詞彙和例句播放按鈕各自管理狀態
- 添加完整無障礙支援:aria-label、title提示、鍵盤支援
- 優化播放控制:點擊播放/暫停、互斥播放、錯誤處理
- 現在所有頁面的播放按鈕都使用統一的精美圓形設計

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 23:51:41 +08:00
鄭沛軒 0f0f1de913 fix: 修復詞卡頁面新增詞卡功能模態框顯示問題
- 修復setShowForm未定義錯誤,添加缺失的狀態管理
- 解決模態框z-index被遮擋問題,將模態框移至最外層
- 使用內聯樣式替代CSS類名,避免樣式衝突
- 優化模態框架構:狀態提升到父組件,確保正確顯示
- 新增詞卡功能現已完全正常運作

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 23:23:41 +08:00
鄭沛軒 d0b8269f60 feat: 完成學習頁面Mock數據清理,升級為生產級系統
- 移除所有硬編碼選項數據,改用動態生成邏輯
- 更新"智能適配演示"為"CEFR智能複習系統"
- 優化選項生成:優先使用其他詞卡,必要時使用相關詞彙補充
- 清理所有Mock相關註釋,完善接口文檔
- 系統現已完全脫離Demo狀態,成為正式的智能複習平台

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 22:42:25 +08:00
鄭沛軒 10778ac738 fix: 統一學習頁面導航欄設計,移除結束學習按鈕
- 移除Navigation組件的showExitLearning和onExitLearning props
- 學習頁面右上角菜單現在與其他頁面保持一致
- 用戶可以通過標準導航菜單正常切換頁面
- 提升界面一致性和用戶體驗

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 22:34:48 +08:00
鄭沛軒 639f620948 fix: 修復卡片右上角CEFR顯示空白問題
- 移除ExtendedFlashcard接口中冗余的difficulty屬性
- 所有CEFR顯示統一使用difficultyLevel屬性
- 確保卡片右上角正確顯示CEFR等級 (A1, A2, B1, etc.)
- 完善接口註釋,避免屬性混淆

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 22:30:37 +08:00
鄭沛軒 bc4b14a629 fix: 修復CEFR顯示錯誤,使用正確的difficultyLevel屬性
- 修復測驗卡片右上角CEFR等級顯示問題
- 將所有currentCard.difficulty改為currentCard.difficultyLevel
- 修復AudioPlayer在p標籤內導致的HTML結構錯誤
- 確保CEFR字符串架構完全正確運作

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 21:07:27 +08:00
鄭沛軒 52ae910276 feat: 實現純CEFR字符串智能複習系統和完整四情境對照表
- 將雙欄位架構改為純CEFR字符串架構,消除資料冗余
- 後端API改為接收CEFR字符串,使用即時轉換進行計算
- 前端完全使用CEFR等級進行智能選擇和顯示
- 新增完整四情境對照表,突出顯示當前情境和建議複習方式
- 優化沒有到期詞卡時的用戶體驗,提供專用提示頁面
- 修復例句重組結果閃爍重置問題
- 修復AudioPlayer在p標籤內的HTML結構錯誤

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 21:05:54 +08:00
鄭沛軒 7011502270 fix: 修復ExtendedFlashcard接口類型衝突
- 使用 Omit<Flashcard, 'nextReviewDate'> 避免類型衝突
- 移除未使用的 isA1Learner import
- 修復 nextReviewDate 可選屬性類型錯誤

編譯現在應該無錯誤,頁面可正常顯示
2025-09-25 18:20:58 +08:00
鄭沛軒 31fb57861a fix: 修復智能複習系統載入和TypeScript錯誤
## 🐛 修復問題
- 修復頁面載入卡在自動選擇狀態的問題
- 修復 startTime 屬性不存在的 TypeScript 錯誤
- 修復 synonyms 可能為 undefined 的類型錯誤
- 修復 exampleImage 類型不匹配問題
- 移除不存在的圖片路徑,避免404錯誤

##  載入邏輯優化
- 簡化初始載入流程,避免循環依賴
- 確保 isAutoSelecting 狀態正確設置
- 新增詳細的 console.log 用於調試
- 優化錯誤處理和邊界條件

## 🎯 現在可以正常訪問
http://localhost:3001/learn 已可正常顯示智能複習系統
2025-09-25 18:18:14 +08:00
鄭沛軒 c2ca9e0aea feat: 優化智能複習系統mock數據展示四情境自動適配效果
## 🎯 Mock數據優化重點

### 📚 四情境完整演示
1. **A1學習者情境** (卡片1-2)
   - userLevel ≤ 20 → 自動限制基礎3題型
   - 詞彙: cat, dog (基礎詞彙)
   - 系統選擇: 翻卡記憶、詞彙選擇、詞彙聽力

2. **簡單詞彙情境** (卡片3)
   - userLevel > wordLevel (difficulty < -10)
   - 詞彙: happy (學習者70 vs 詞彙35)
   - 系統選擇: 例句重組、例句填空

3. **適中詞彙情境** (卡片4)
   - userLevel ≈ wordLevel (-10 ≤ difficulty ≤ 10)
   - 詞彙: determine (學習者60 vs 詞彙65)
   - 系統選擇: 填空、重組、口說

4. **困難詞彙情境** (卡片5)
   - userLevel < wordLevel (difficulty > 10)
   - 詞彙: sophisticated (學習者50 vs 詞彙85)
   - 系統選擇: 翻卡記憶、詞彙選擇

### 🖥️ UI增強功能
- **智能適配演示面板**: 實時顯示當前情境和程度差異
- **實時熟悉度指示器**: 展示記憶衰減效果
- **詳細演示說明**: 引導用戶體驗不同情境效果

### 📱 互動體驗
- 點擊「下一張」體驗不同情境下的自動題型選擇
- 每張卡片都會自動選擇最適合的複習方式
- 清楚展示零選擇負擔的智能學習體驗

## 🌟 演示價值
- 直觀展示四情境智能適配邏輯
- 證明A1學習者自動保護機制
- 展示基於學習程度的個人化複習體驗
- 體驗零選擇負擔的流暢學習流程

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 18:09:49 +08:00
鄭沛軒 3ef5ea8ffe feat: 實現智能複習系統前端核心重構
## 🎯 重構完成項目

###  移除手動模式切換
- 刪除7個手動切換按鈕 (lines 337-410)
- 改為系統自動選擇模式
- 保留所有優秀的UI設計和互動邏輯

###  新增智能化組件
- **ReviewTypeIndicator**: 純顯示當前系統選擇的題型
- **MasteryIndicator**: 實時熟悉度顯示,支援衰減指示
- **masteryCalculator**: 四情境適配邏輯 + 熟悉度計算

###  API服務擴展
- 擴展 flashcardsService 新增6個智能複習方法
- getDueFlashcards: 取得到期詞卡
- getNextReviewCard: 取得下一張復習詞卡
- getOptimalReviewMode: 系統自動選擇題型
- submitReview: 提交復習結果並更新間隔
- generateQuestionOptions: 生成題目選項

###  狀態管理升級
- 從固定 mock data 改為動態 API 數據
- 新增 ExtendedFlashcard 接口支援智能複習欄位
- 實現自動選擇邏輯和四情境適配
- 整合復習結果提交和熟悉度更新

###  例句聽力功能補完
- 新增例句選項自動生成邏輯
- 實現例句聽力答題和結果反饋
- 移除"開發中"標記,功能正式可用

## 🌟 核心價值實現
- **零選擇負擔**: 用戶無需手動選擇,系統自動提供最適合的題型
- **四情境適配**: A1學習者自動保護,簡單/適中/困難詞彙智能匹配
- **7種題型完整**: 所有複習方法UI和邏輯都已完成
- **實時熟悉度**: 動態計算和顯示學習進度

## 🎨 UI設計保留
-  精美的3D翻卡動畫
-  完整的音頻播放和錄音功能
-  響應式設計和流暢互動
-  詳細的答題反饋和錯誤處理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 18:01:25 +08:00
鄭沛軒 1661eccf24 feat: 改進詞卡編輯流程,從列表導航到詳細頁面編輯
 UX改進:
- 點擊列表中的編輯按鈕直接導航到詳細頁面
- 詳細頁面自動開啟編輯模式,提供專注的編輯環境
- 移除列表頁面底部的編輯表單,簡化界面

🔧 技術實作:
- 使用URL參數(?edit=true)傳遞編輯狀態
- 詳細頁面檢查URL參數自動開啟編輯模式
- 清理不必要的編輯表單狀態管理

🚀 編輯體驗提升:
- 在詳細頁面編輯,享有完整功能(圖片生成、統計資訊等)
- 避免在列表頁面編輯時的干擾和空間限制
- 統一所有編輯操作在同一位置進行

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 09:09:17 +08:00
鄭沛軒 f3d1f358d6 fix: 修復所有資料變更操作的快取問題
- 統一所有 CRUD 操作使用 refetch() 而非 refresh()
- 確保新增、刪除、收藏切換後畫面立即更新
- 解決刪除成功但畫面未更新的問題

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 08:03:11 +08:00
鄭沛軒 48bbfb867b fix: 修復圖片生成後前端未即時顯示的問題
- 修復 FlashcardsController 中變數引用和型別匹配錯誤
- 統一 GetFlashcards 和 GetFlashcard API 的圖片資料結構
- 更新前端使用 refetch() 清除快取確保載入最新圖片資料
- 完善圖片生成後的狀態更新和資料刷新機制

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 08:00:07 +08:00
鄭沛軒 cb3309295b feat: 完成前端詞卡圖片整合與詞性簡寫顯示
🎉 前端詞卡管理功能完全整合後端圖片資料

**圖片整合功能**:
-  更新Flashcard介面:添加exampleImages、hasExampleImage、primaryImageUrl欄位
-  取代硬編碼映射:getExampleImage和hasExampleImage改用API資料
-  詞卡列表頁面:完全使用動態圖片資料顯示
-  詞卡詳細頁面:修復資料載入邏輯使用列表API獲取圖片資訊

**詞性簡寫顯示**:
-  全域詞性轉換函數:getPartOfSpeechDisplay()
-  標準英語縮寫:noun→n., verb→v., adjective→adj.等
-  複合詞性處理:preposition/adverb→prep./adv.
-  應用到所有詞性顯示位置:列表和詳細頁面

**系統整合成果**:
-  完全移除硬編碼圖片映射依賴
-  前端直接使用後端API返回的圖片URL
-  支援AI生成圖片的即時顯示
-  Mock資料相容性:添加圖片欄位避免錯誤

前端詞卡管理系統現已完全整合AI圖片生成功能!

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 01:57:04 +08:00
鄭沛軒 b45f2ef4c1 feat: 實現詞卡管理頁面完整響應式設計(RWD)
- 例句圖片使用固定像素尺寸,不隨螢幕縮放變形
- 手機版採用垂直堆疊佈局,平板/桌面版水平排列
- 操作按鈕在小螢幕僅顯示圖示,節省空間
- 搜尋控制區域支援垂直/水平佈局切換
- 進階篩選網格響應式調整(1列→2列→4列)
- 頁面標題和按鈕區域完整響應式設計

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 18:02:18 +08:00
鄭沛軒 913d31100f refactor: 簡化例句圖片新增按鈕設計
- 移除內聯樣式避免尺寸衝突
- 改用div結構取代button標籤
- 純粹依賴Tailwind類別控制大小
- 保持完整的互動效果

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 17:29:47 +08:00
鄭沛軒 ecbc5f7d09 fix: 修正例句圖片映射邏輯,正確顯示新增按鈕
- 修改imageMap只保留真正有圖片的詞彙(evidence)
- warrants和recovering現在會顯示「新增例句圖」按鈕
- 修復所有詞卡都顯示mock圖片的問題
- 為AI生成流程提供正確的入口點

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 17:08:23 +08:00
鄭沛軒 acd20e3f2c feat: 實現智能例句圖片顯示和AI生成按鈕
- 修改例句圖片邏輯,只顯示已確認存在的圖片
- 為沒有例句圖片的詞彙顯示「新增例句圖」按鈕
- 添加AI生成例句圖片的預留接口
- 提供直觀的視覺提示,區分已有圖片和待生成圖片
- 為下階段AI生成流程做準備

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:59:42 +08:00
鄭沛軒 e424c04443 style: 將詞卡數目統計顯示調整為右對齊
- 修改詞卡數量統計的對齊方式從左對齊改為右對齊
- 提升頁面佈局的視覺平衡

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:51:57 +08:00
鄭沛軒 9a54105061 refactor: 移除搜尋欄位內的橢圓形查詢數量顯示
- 移除搜尋框內重複的查詢結果數量顯示
- 保留清除搜尋按鈕功能
- 統一在搜尋控制下方顯示詞卡統計信息

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:50:58 +08:00
鄭沛軒 f7ee5be06c feat: 在搜尋控制與詞卡清單間添加詞卡數目統計顯示
- 添加詞卡總數和當前頁面詞卡數量顯示
- 支援分頁時顯示頁面信息
- 添加快取狀態指示器
- 提升用戶對搜尋結果的認知

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:44:31 +08:00
鄭沛軒 51cdd521b1 fix: 恢復詞卡管理頁面的例句圖片顯示功能
- 在重構過程中遺失的例句圖片功能已恢復
- 添加 getExampleImage 函數到新架構中
- 更新組件 props 以支援例句圖片傳遞
- 在 FlashcardItem 組件中重新實現例句圖片顯示

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:42:20 +08:00
鄭沛軒 0549b1c972 feat: 實現智能快取策略優化CEFR篩選功能
- 添加資料快取機制,5分鐘TTL避免重複API調用
- 分離API篩選與客戶端篩選邏輯
- CEFR等級篩選使用快取資料,瞬間響應
- 智能觸發邏輯,只在必要時重新呼叫API
- 客戶端排序和分頁,提升用戶體驗

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:32:16 +08:00
鄭沛軒 e05e6f09f2 feat: 實現進階搜尋功能的完整前後端架構重構
- 新增完整的前後端架構設計文檔
- 實現 useFlashcardSearch Hook 統一狀態管理
- 重構 FlashcardsPage 使用新架構
- 添加排序和分頁功能
- 實現客戶端 CEFR 等級篩選
- 修復 TypeScript 類型錯誤

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:23:01 +08:00
鄭沛軒 75f81f3e2e fix: 修復搜尋框失去焦點問題並優化搜尋體驗
- 分離輸入顯示狀態(searchInput)和查詢狀態(debouncedSearchTerm)
- 新增 isSearching 狀態區分初始載入和搜尋載入,避免搜尋時觸發 loading 狀態
- 使用 useRef 追蹤輸入框 DOM 元素並實現智能焦點恢復機制
- 修復每次輸入後輸入框失去焦點需要重新點擊的 UX 問題
- 保持游標位置在正確的輸入位置,確保連續輸入體驗

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 15:13:38 +08:00
鄭沛軒 989e92ce85 fix: 修復詞卡頁面 TypeScript 錯誤並清理冗餘代碼
🔧 TypeScript 錯誤修復:
- 移除循環引用:刪除 `type Flashcard = Flashcard` 重複定義
- 清理 import 衝突:直接使用從 flashcards.ts 導入的 Flashcard 型別
- 移除未使用變數:刪除 mockFlashcards 假資料定義
- 清理冗餘型別:移除不需要的 CardSet 型別定義

🧹 代碼清理:
- 完全移除假資料依賴,現在純粹使用真實 API
- 簡化型別結構,避免不必要的型別重複定義
- 提升代碼可維護性和類型安全性

現在詞卡頁面沒有 TypeScript 錯誤,所有功能正常運作。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 14:41:23 +08:00
鄭沛軒 70bf3f8fed feat: 完善通知系統堆疊效果並添加分頁 emoji
🎨 Toast 通知系統改進:
- 實現智能通知堆疊:新通知推動舊通知下移而不覆蓋
- 優化動畫邏輯:只有最新通知從右側滑入,舊通知僅平滑移位
- 新增位置追蹤:每個通知按堆疊順序計算垂直位置 (80px 間隔)
- 修復閃爍問題:防止舊通知重複執行入場動畫
- 限制通知數量:最多顯示 5 個通知,自動移除最舊的
- 改進動畫細節:分離入場動畫和位置移動動畫

📚 視覺設計優化:
- 為「所有詞卡」分頁添加 📚 書籍 emoji
- 完善分頁視覺層次:📚 所有詞卡 與  收藏詞卡 形成完美對比
- 提升學習應用的視覺識別度和用戶友善性

🚀 用戶體驗提升:
- 支援快速連續操作:每個動作都有自己的通知反饋
- 非侵入式設計:通知不會阻擋用戶操作流程
- 平滑的視覺效果:所有動畫過渡自然流暢

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 14:34:01 +08:00
鄭沛軒 724ba391b2 feat: 實現優雅的角落通知系統取代惱人的 alert 彈窗
🎨 新增 Toast 通知組件:
- 位置:右上角固定位置,不阻擋主要內容
- 動畫:優雅的滑入/滑出動畫 (300ms)
- 自動消失:3秒後自動消失,無需手動點擊
- 手動關閉:可點擊 X 按鈕立即關閉
- 響應式設計:在手機上自動調整寬度

🎯 支援多種通知類型:
- success:  綠色成功通知(收藏、保存、刪除成功)
- error:  紅色錯誤通知(操作失敗、網路錯誤)
- warning: ⚠️ 黃色警告通知(重複詞卡、數據警告)
- info: ℹ️ 藍色資訊通知(提示信息)

🔄 全面替換所有 alert 調用:
- 詞卡管理頁面:收藏切換、創建、刪除、編輯操作
- AI 生成頁面:詞卡保存成功、重複檢測、錯誤處理
- 詞卡詳細頁面:更新、刪除、收藏操作反饋

🚀 用戶體驗大幅提升:
- 移除煩人的阻擋式 alert 彈窗
- 實現非侵入式的操作反饋
- 保持操作流程的連續性和流暢度
- 提供視覺上更加現代和優雅的交互體驗

修復編譯問題並重新啟動前端,確保所有功能正常運作。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 04:55:31 +08:00
鄭沛軒 bfa353bd6b fix: 修復收藏詞卡分頁數量顯示和統計同步問題
- 新增 totalCounts 狀態追蹤所有詞卡和收藏詞卡的總數量
- 新增 loadTotalCounts 函數分別載入全部和收藏詞卡數量統計
- 修復收藏詞卡分頁使用後端 filteredCards 而非前端假資料篩選
- 優化分頁標籤顯示實際的統計數量而非動態計算
- 確保所有 CRUD 操作後都會重新載入統計數據:
  * 創建詞卡後更新統計
  * 刪除詞卡後更新統計
  * 收藏切換後更新統計
- 分離 C1 和 C2 快速篩選按鈕,提供更精準的等級篩選

現在收藏詞卡功能完全基於後端 API,分頁數量顯示準確且即時同步。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 04:34:02 +08:00
鄭沛軒 c6d5bb6ce3 feat: 完成詞卡管理功能前後端完整整合
🎯 後端 API 增強:
- 擴展搜尋功能支援例句內容 (Example 和 ExampleTranslation)
- 新增進階篩選查詢參數 (cefrLevel, partOfSpeech, masteryLevel)
- 建立完整的 FlashcardDto.cs 含資料驗證規則
- 查詢效能優化:新增 AsNoTracking() 提升效能
- 實現三級掌握度篩選邏輯 (high ≥80%, medium 60-79%, low <60%)

🖥️ 前端功能完善:
- FlashcardsService 支援完整進階篩選參數
- FlashcardForm 新增 CEFR 等級選擇器 (A1-C2)
- 統一詞性格式使用英文值 (noun, verb, adjective 等)
- 詞卡頁面整合後端篩選,移除前端重複邏輯
- 實現 300ms 搜尋防抖處理
- 快速篩選按鈕分離 C1/C2 等級選項
- AI 生成頁面支援完整 CEFR 等級儲存

🔗 完整 API 整合:
- 詞卡詳細頁面修復 import 錯誤並完整整合後端 API
- ClickableTextV2 修復 userLevel 和 compareCEFRLevels 函數問題
- 所有 CRUD 操作 (創建、讀取、更新、刪除、收藏) 完全整合
- 前後端型別定義完全一致,確保型別安全

📋 文檔完善:
- 建立後端 API 開發計劃文檔含完整技術規格
- 所有文檔引用標注清楚,便於開發者理解

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 04:21:06 +08:00
鄭沛軒 7f85c79bc3 docs: 簡化星星標記提示文字並新增詞卡管理功能產品需求規格
- 簡化星星標記說明為「 為常用高頻詞彙,建議優先學習!」
- 修復 generate 頁面 TypeScript 錯誤:新增 compareCEFRLevels 函數
- 修復慣用語星星顯示邏輯中的 userLevel 變數問題
- 新增詳細的詞卡管理功能產品需求規格書,涵蓋:
  * 完整的功能模組分析和UI/UX設計規格
  * 搜尋與篩選系統的詳細實現規格
  * CRUD操作流程和技術架構定義
  * 響應式設計要求和可訪問性標準
  * 測試用例規格和未來功能規劃

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 03:01:12 +08:00
鄭沛軒 8d85366a45 feat: 精確化星星顯示條件
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 02:46:31 +08:00
鄭沛軒 650a19c998 fix: 將星星標記說明移至分析結果頁面
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 02:17:20 +08:00
鄭沛軒 55ad563fd2 feat: 添加星星標記使用說明
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 01:57:39 +08:00
鄭沛軒 e71c0f5542 feat: 改善詞卡保存用戶反饋體驗
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 01:50:59 +08:00
鄭沛軒 af45b5d3da fix: 修復前端TypeScript類型錯誤,完成重命名統一
修復重命名過程中遺留的類型定義問題:
- 更新所有SimpleFlashcard類型引用為Flashcard
- 清理Next.js webpack快取解決編譯錯誤
- 確保前端服務正確連接到新的/api/flashcards端點

 前端重新編譯成功,所有類型錯誤已解決
 智能詞卡生成和保存功能現已完全正常

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 01:47:02 +08:00