dramaling-vocab-learning/docs/01_requirement/functional-requirements.md

515 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DramaLing 功能需求規格書
## 1. 核心功能需求
### 1.1 用戶認證系統
#### 1.1.1 註冊功能
- **Email 註冊**
- 輸入Email、密碼、用戶名
- 密碼要求最少8位需包含大小寫字母、數字、特殊符號
- Email 格式驗證
- 用戶名唯一性檢查3-20字符
- 發送驗證郵件24小時有效期
- 驗證後自動登入
- **Google OAuth 登入**
- 一鍵 Google 登入
- 自動獲取用戶名稱和頭像
- 首次登入自動創建帳號
- 綁定現有帳號功能
- **錯誤處理**
- Email 已註冊提示
- 密碼強度即時反饋
- 驗證碼錯誤/過期處理
#### 1.1.2 登入/登出
- **登入功能**
- Email/密碼登入
- 記住我功能7天/30天選項
- 登入失敗次數限制5次後鎖定15分鐘
- 顯示上次登入時間和IP
- **忘記密碼**
- 輸入 Email 發送重設連結
- 重設連結有效期1小時
- 密碼重設成功通知
- 安全問題驗證(可選)
- **Session 管理**
- JWT TokenAccess Token: 15分鐘Refresh Token: 7天
- 自動更新 Token
- 多裝置登入管理
- 強制登出所有裝置選項
### 1.2 AI 詞卡生成
#### 1.2.1 輸入處理
- **文字輸入**
- 支援格式純文字、SRT字幕、劇本格式
- 字數限制單次最多5000字
- 自動語言檢測(英文)
- 保留上下文理解
- **主題模式**
- 預設主題:
- 日常對話Daily Conversation
- 商務英語Business English
- 美劇經典TV Series Classics
- 電影台詞Movie Quotes
- 學術英語Academic English
- 自定義主題輸入
- 難度選擇A1, A2, B1, B2, C1, C2
#### 1.2.2 AI 生成規格
- **原始例句輸入**
- 輸入方式
1. 手動輸入
- 輸入資料
- 可接受多句子
- 字數限制規則限定300字以內
- **例句分析**
- 用戶輸入句子後AI進行以下分析
- 例句語法校正
- 例句中文翻譯
- 例句單字分析
- 例句慣用語分析
1. 點擊查詢體驗
- 句子顯示為可點擊的單字
- 點擊對象
- 若為高價值標記,則即時顯示意思(無延遲,讀取預分析資料),不扣除使用次數
- 若非高價值標記則拿當前點擊單字及當前句子給AI分析並生成內容詳情扣除使用次數一次
- 片語/俚語特殊高亮顯示
- 智能提醒:當單字屬於片語/俚語時,優先顯示片語意思並提醒
- 若出現多筆片語/俚語需標記時,請使用不同顏色區分
2. 成本優化策略
- **核心原則**:一句一次 API 調用,多次查詢零成本
- 相同句子分析結果快取24小時
- 常用單字基礎資訊本地快取
- 預估 API 成本降低 80-95%
3. 收費策略(phase 2)
- 免費用戶5次/3小時
- 付費用戶:無限制
- **生成內容詳情**
- **原始例句**
- 整體意思:不論原始例句是多句、一句、片段,就是將原始例句整體意思描述出來
- 修正語法錯誤:若原始例句有語法錯誤,則進行修正,並說明修正原因,且後續學習內容皆以正確的版本進行
- **單字/片語**
- 原形展示
- 詞性標註n./v./adj./adv./idioms
- 英文定義 (程度應維持在A1-A2)
- 同義詞最多3個且程度應維持在A1-A2
- **翻譯**
- 繁體中文翻譯
- **發音**
- IPA 國際音標
- 美式發音
- 音頻播放(整合 TTS
- **例句**
- 原始例句(來自輸入文本)
- 生成例句1個
- 例句中文翻譯
- 重點標示highlight目標詞
- 例句圖
- 例句發音
- **生成後處理**
- 預覽所有生成詞卡
- 單個詞卡編輯/刪除
- 重新生成選項
- 批量保存到卡組
### 1.3 詞卡管理
#### 1.3.1 卡組管理
- **卡組 CRUD**
- 創建卡組(名稱、描述、封面圖)
- 編輯卡組資訊
- 刪除卡組(需二次確認)
- 複製卡組
- 卡組排序(創建時間/名稱/詞卡數量)
- **卡組類型**
- 個人卡組(私有)
- 共享卡組(公開,未來功能)
- 系統卡組(官方提供)
#### 1.3.2 詞卡操作
- **新增詞卡**
- 手動創建(填寫表單)
- 從 AI 生成添加
- 批量導入CSV/JSON
- 快速添加模式
- **編輯詞卡**
- 編輯所有欄位
- 富文本編輯器(例句)
- 圖片上傳(記憶圖像)
- 音頻錄製(自定義發音)
- **刪除詞卡**
- 單個刪除(滑動/右鍵)
- 批量刪除(多選)
- 軟刪除回收站30天內可恢復
- **批量操作**
- 批量移動到其他卡組
- 批量添加標籤
- 批量重設學習進度
- 批量導出
- **智能檢測**
- 單一詞彙檢測
- 全面檢查指定詞彙所有內容是否有問題,並修正錯誤內容
- 點擊指定內容進行檢查,並修正錯誤內容
- 錯誤清單一鍵檢測
- 點擊後及針對當前錯誤回報系統中清單進行檢測,一一修正錯誤內容
#### 1.3.3 組織功能
- **標籤系統**
- 預設標籤(動詞、名詞、片語、俚語等)
- 自定義標籤最多10個/詞卡)
- 標籤顏色自定義
- 標籤批量管理
- **收藏功能**
- 一鍵收藏/取消收藏
- 收藏夾分類
- 快速訪問收藏詞卡
- **搜尋篩選**
- 全文搜尋(單字、翻譯、例句)
- 按標籤篩選
- 按難度篩選
- 按學習狀態篩選(新詞/學習中/已掌握)
- 組合篩選條件
### 1.4 學習系統
#### 1.4.1 間隔重複算法SM-2
- **算法參數**
- 初始間隔2^0天、2^1天...依此類推
- 難度係數0.8-2.5
- 最小間隔1天
- 最大間隔365天
- **評分及間隔時間**
- 1分完全不記得重置進度
- 2分有印象但錯誤間隔×0.6
- 3分困難但正確間隔×0.8
- 4分猶豫後正確間隔×1.0
- 5分輕鬆正確間隔×1.3
- **複習排程**
- 每日複習上限設定預設50個
- 優先級排序(過期天數)
- 智能分散(避免同時大量到期)
#### 1.4.2 學習模式
- **翻卡模式**
- 正面:英文詞彙
- 背面:英文定義、例句、發音、例句圖
- 手勢操作:左滑(不記得)、右滑(記得)、上滑(收藏)
- 鍵盤快捷鍵支援
- **測驗模式**
- 選擇題題目是英文定義答案中文翻譯4選1
- 填空題
- 題目是顯示例句圖和挖空的例句
- 點擊提示,會出現詞彙的英文定義
- 答案就是詞彙,但是不是原型,而是例句挖空的部分
- 拼寫測試 (phase 2)
- 聽力測試(聽音選詞)
- 口說測試 (念例句)
- **錯誤回報**
- 翻卡模式及所有測驗模式,都要設定錯誤回報
- 點擊錯誤回報後,可以輸入錯誤原因,可以不填寫直接送出
- **沉浸模式**
- 全螢幕學習
- 自動播放(可調速度)
- 背景音樂(白噪音)
- 番茄鐘計時25分鐘
#### 1.4.3 複習設定
- **提醒功能**
- 每日提醒時間設定
- 推送通知(瀏覽器/Email
- 連續學習天數追蹤
- 複習債務提醒
- **個人化設定**
- 每日目標詞數
- 學習時段偏好
- 難度調整(激進/保守)
- 音效開關
### 1.5 數據分析
#### 1.5.1 學習統計
- **基礎數據**
- 總學習詞彙數
- 今日學習時間
- 連續學習天數
- 本週/本月學習時間
- 平均每日學習詞數
- **進階分析**
- 記憶曲線(艾賓浩斯)
- 詞彙掌握度分布
- 最難/最易詞彙排行
- 學習效率趨勢
- 最佳學習時段分析
#### 1.5.2 視覺化展示
- **圖表類型**
- 折線圖:學習趨勢
- 柱狀圖:每日學習量
- 熱力圖365天學習記錄
- 圓餅圖:詞彙分類分布
- 雷達圖:能力維度分析
- **成就系統**
- 里程碑徽章100/500/1000詞
- 連續學習徽章7/30/100天
- 特殊成就(完美週/月)
- 等級系統(經驗值)
- 排行榜(未來功能)
#### 1.5.3 報告導出
- **導出格式**
- PDF 學習報告
- Excel 數據表
- 圖表圖片
- **報告內容**
- 學習總結
- 詞彙清單
- 進步分析
- 學習建議
## 2. 用戶介面需求
### 2.1 頁面結構
- **首頁(未登入)**
- 產品介紹
- 功能展示
- 價格方案
- 註冊/登入入口
- **Dashboard已登入**
- 今日學習任務卡片
- 快速操作按鈕(生成詞卡/開始學習)
- 學習進度概覽
- 最近學習的詞卡
- **詞卡頁面**
- 卡組列表視圖(網格/列表切換)
- 詞卡詳情視圖
- 批量操作工具欄
- 篩選器側邊欄
- **學習頁面**
- 全螢幕學習界面
- 進度條顯示
- 操作按鈕區
- 設定面板
- **個人中心**
- 個人資料編輯
- 學習設定
- 數據統計
- 帳號安全
### 2.2 響應式設計
- **桌面版(>1024px**
- 三欄布局(側邊欄+主內容+右側面板)
- 懸浮操作按鈕
- 鍵盤快捷鍵支援
- **平板版768-1024px**
- 兩欄布局
- 可收縮側邊欄
- 觸控優化
- **手機版(<768px**
- 單欄布局
- 底部導航欄
- 手勢操作
- 大按鈕設計
## 3. 技術規格需求
### 3.1 前端技術
- **框架**Next.js 14 (App Router)
- **語言**TypeScript
- **樣式**Tailwind CSS + shadcn/ui
- **狀態管理**Zustand
- **數據獲取**TanStack Query
- **表單**React Hook Form + Zod
### 3.2 後端技術
- **API**Next.js API Routes
- **資料庫**Supabase (PostgreSQL)
- **認證**NextAuth.js
- **AI**Google Gemini API
- **文件存儲**Supabase Storage
- **快取**Redis (Upstash)
### 3.3 第三方服務
- **Email**Resend/SendGrid
- **分析**Google Analytics
- **錯誤追蹤**Sentry
- **CDN**Vercel Edge Network
## 4. 非功能性需求
### 4.1 效能需求
- **載入速度**
- FCP < 1.8秒
- LCP < 2.5秒
- TTI < 3.8秒
- CLS < 0.1
- **API 效能**
- 一般 API < 200ms
- AI 生成 < 3秒
- 資料庫查詢 < 100ms
- **容量需求**
- 支援單用戶 10,000+ 詞卡
- 支援 100+ 卡組
- 並發用戶 1000+
### 4.2 可用性需求
- **瀏覽器支援**
- Chrome 90+
- Safari 14+
- Firefox 88+
- Edge 90+
- **無障礙性**
- WCAG 2.1 AA 標準
- 鍵盤導航
- 螢幕閱讀器支援
- 高對比模式
- **國際化**
- 繁體中文預設
- 英文介面
- 日期/時間本地化
### 4.3 安全需求
- **認證安全**
- 密碼加密bcrypt
- JWT Token 管理
- Session 超時控制
- 2FA未來功能
- **數據安全**
- HTTPS only
- XSS 防護
- CSRF Token
- SQL Injection 防護
- Rate Limiting
- **隱私保護**
- GDPR 合規
- 數據加密存儲
- 用戶數據導出
- 帳號刪除功能
### 4.4 可靠性需求
- **可用性**99.9% uptime
- **備份**每日自動備份
- **災難恢復**RTO < 4小時RPO < 1小時
- **錯誤處理**優雅降級友善錯誤提示
## 5. 開發階段劃分
### Phase 1 - MVP第1-2週
**目標**基礎功能可用
- 用戶註冊/登入Email only
- AI 詞卡生成基礎版
- 詞卡 CRUD
- 簡單翻卡學習
- 基礎 UI
### Phase 2 - 核心功能第3-4週
**目標**完整學習流程
- Google OAuth
- 卡組管理
- SM-2 算法實現
- 學習模式翻卡+測驗
- 基礎統計
- 響應式設計
### Phase 3 - 增強功能第5-6週
**目標**提升用戶體驗
- 標籤系統
- 搜尋篩選
- **互動式單字查詢系統**
- 句子預分析 API 端點
- 可點擊文字組件
- 片語/俚語智能提醒
- 快取機制實現
- 進階統計圖表
- 成就系統
- 學習提醒
- 性能優化
### Phase 4 - 商業化準備第7-8週
**目標**準備上線
- 付費方案
- 用戶反饋系統
- 管理後台
- 數據分析
- A/B 測試
## 6. 驗收標準
### 6.1 功能驗收
- 所有 P0 功能完整實現
- 通過所有功能測試用例
- 無阻塞性 Bug
### 6.2 性能驗收
- Lighthouse 分數 > 90
- 所有頁面載入 < 3秒
- API 響應時間符合規格
### 6.3 品質驗收
- 代碼覆蓋率 > 80%
- 無安全漏洞(通過安全掃描)
- UI/UX 審查通過
## 7. 風險與限制
### 7.1 技術風險
- Gemini API 配額限制
- Supabase 免費層限制
- 第三方服務依賴
### 7.2 業務風險
- 競品競爭
- 用戶獲取成本
- 內容版權問題
### 7.3 緩解措施
- 實施 API 快取機制(重點:單字查詢預分析快取)
- 準備備用 AI 服務
- 建立用戶反饋循環
- 確保內容合規性
- 監控 AI API 使用量並設定預算警告
- 實現降級機制API 配額用盡時使用離線字典