詞彙學習
++ 掌握餐廳點餐情境的5個核心詞彙,包含發音、定義和實際使用情境 +
+diff --git a/Drama_Ling_Enterprise_Design_Master_Plan.md b/Drama_Ling_Enterprise_Design_Master_Plan.md new file mode 100644 index 0000000..47bc20b --- /dev/null +++ b/Drama_Ling_Enterprise_Design_Master_Plan.md @@ -0,0 +1,389 @@ +# 🚀 Drama Ling 企業級UI設計總體計劃 + +**建立日期**: 2025-01-15 +**計劃版本**: v4.0 - 企業級重構 +**架構基礎**: 共用模組架構 v3.0 +**設計標準**: 企業級UI/UX規範 +**執行目標**: 95+ UI畫面完整重設計 + +## 📋 計劃概述 + +### 🎯 核心目標 +基於 Drama Ling v3.0 共用模組架構,創建企業級標準的完整UI設計系統,確保: +- **100%符合功能規格**: 嚴格按照 `/docs/02_design/function-specs/` 規格執行 +- **統一設計語言**: 完全遵循 `/docs/02_design/ui-ux/ui-ux-guidelines.md` 規範 +- **企業級品質**: 達到Fortune 500企業內部系統標準 +- **零設計債務**: 徹底重構,消除所有設計不一致問題 + +### 🏗️ 設計架構原則 +1. **規格優先**: 所有設計必須100%符合功能規格文件 +2. **模組化設計**: 基於v3.0共用模組架構的設計組件系統 +3. **一致性保證**: 跨平台設計語言統一 +4. **可擴展性**: 支援未來功能快速擴展的設計框架 +5. **無障礙標準**: 符合WCAG 2.1 AA級無障礙要求 + +## 🔍 階段一:設計規範完善與標準化 (第1-2週) + +### 1.1 UI/UX規範補全與更新 ⭐ **CRITICAL** + +**目標**: 建立企業級完整設計規範系統 + +**工作內容**: +- [ ] **色彩系統完善** + - 引用文件: `/docs/02_design/ui-ux/ui-ux-guidelines.md` (第35-103行) + - 補全遺失的色彩定義:狀態色彩、反饋色彩、學習進度色彩 + - 建立暗色/亮色主題完整色彩對照表 + - 定義色彩使用場景和層次規範 + +- [ ] **字體系統標準化** + - 引用文件: `/docs/02_design/ui-ux/ui-ux-guidelines.md` (第105-136行) + - 補全遺失字體規格:多語言字體、特殊用途字體 + - 建立響應式字體大小系統 (mobile/tablet/desktop) + - 定義字體層次和使用場景指南 + +- [ ] **間距與佈局系統** + - 引用文件: `/docs/02_design/ui-ux/ui-ux-guidelines.md` (第139-163行) + - 建立8px grid系統標準 + - 定義響應式佈局斷點和規則 + - 創建元件間距和頁面佈局標準模板 + +- [ ] **組件設計規範** + - 引用文件: `/docs/02_design/ui-ux/ui-ux-guidelines.md` (第188-200行) + - 補全缺失的組件規範:表單元件、遊戲化元件、學習專用元件 + - 建立組件狀態系統 (default/hover/active/disabled/loading) + - 定義組件變體和使用場景 + +**輸出物**: +- `ui-ux-guidelines.md` 完整更新版本 (企業級標準) +- `design-system-components.md` 完整組件庫文檔 +- `responsive-design-standards.md` 響應式設計標準 +- `accessibility-guidelines.md` 無障礙設計指南 + +### 1.2 企業級設計系統建立 + +**目標**: 創建可重用的設計系統和組件庫 + +**工作內容**: +- [ ] **原子設計系統**: Atoms → Molecules → Organisms → Templates → Pages +- [ ] **Design Tokens**: 設計變數化管理系統 +- [ ] **組件庫標準化**: 可重用UI組件集合 +- [ ] **圖標系統**: 學習情境專用圖標設計 +- [ ] **動畫設計語言**: 統一的動畫效果和互動反饋 + +**輸出物**: +- `design-system-tokens.css` - 完整設計變數系統 +- `component-library.html` - 互動式組件展示 +- `animation-guidelines.md` - 動畫設計標準 +- `icon-system.svg` - 完整圖標庫 + +## 📱 階段二:Mobile端企業級重設計 (第3-6週) + +### 2.1 核心學習功能頁面群組 (第3-4週) + +#### 2.1.1 情境對話系統 🎯 (優先級: P0) + +**規格參考**: +- 主規格: `/docs/02_design/function-specs/mobile/01_situational-dialogue-mobile.md` +- 共用模組: `/docs/02_design/function-specs/common/ai-algorithm-specs.md` +- 共用模組: `/docs/02_design/function-specs/common/speaking-evaluation-specs.md` +- 共用模組: `/docs/02_design/function-specs/common/pragmatic-analysis-specs.md` + +**需設計的頁面**: +- [ ] **UI_Dialogue_Practice_Main** - 情境對話練習主界面 + - 設計要求: 語音輸入界面 (參考: ai-algorithm-specs.md 語音處理) + - 設計要求: 即時AI反饋顯示 (參考: ai-algorithm-specs.md AI評估系統) + - 設計要求: 劇情任務和詞彙任務雙重可視化 + - 設計要求: 300秒限時挑戰計時器 + - UI規範: 語音優先設計、即時語法反饋 (ui-ux-guidelines.md 第27-28行) + +- [ ] **UI_Dialogue_Character_Selection** - 角色選擇頁面 + - 設計要求: 角色卡片設計,突出角色特色和學習情境 + - 設計要求: 角色能力和適合程度顯示 + +- [ ] **UI_Dialogue_Scene_Setting** - 場景設定頁面 + - 設計要求: 沉浸式場景展示 + - UI規範: 沉浸式學習環境設計 (ui-ux-guidelines.md 第9行) + +- [ ] **UI_AI_Assistance_Panel** - AI輔助功能面板 + - 設計要求: 回覆提示道具使用界面 + - 設計要求: 語法即時檢測顯示 + - UI規範: 智慧輔助、漸進引導 (ui-ux-guidelines.md 第21-22行) + +- [ ] **UI_Dialogue_Results** - 對話練習結果頁面 + - 設計要求: 口說評分五維雷達圖 (參考: speaking-evaluation-specs.md) + - 設計要求: 語用分析六維評估 (參考: pragmatic-analysis-specs.md) + - UI規範: 即時成就反饋 (ui-ux-guidelines.md 第25行) + +#### 2.1.2 詞彙學習系統 📝 (優先級: P0) + +**規格參考**: +- 主規格: `/docs/02_design/function-specs/mobile/02_vocabulary-learning-mobile.md` +- 共用模組: `/docs/02_design/function-specs/common/progressive-stage-system.md` + +**需設計的頁面**: +- [ ] **UI_Vocab_Learning_Enhanced** - 多媒體詞彙學習主界面 + - 設計要求: 詞彙展示 (音標、定義、例句) + - 設計要求: 雙語音頻系統 (標準速度/慢速) + - 設計要求: 智慧詞彙標註 (Source + Example) + - 設計要求: 視覺輔助學習 (例句配圖) + - UI規範: 詞彙學習流程 (ui-ux-guidelines.md 第29行) + +- [ ] **UI_Vocab_Choice_Practice** - 詞彙選擇練習頁面 + - 設計要求: 選擇題界面,支援多選和單選模式 + - 設計要求: 即時正確性反饋 + +- [ ] **UI_Vocab_Fluency_Results** - 流暢度練習綜合結果 + - 設計要求: 學習成效可視化展示 + - 設計要求: 進度追蹤和建議系統 + +- [ ] **UI_Vocab_Review_System** - 間隔複習系統界面 + - 設計要求: 複習提醒和排程界面 + - UI規範: 間隔複習提醒 (ui-ux-guidelines.md 第31行) + +#### 2.1.3 學習地圖系統 🗺️ (優先級: P0) + +**規格參考**: +- 主規格: `/docs/02_design/function-specs/mobile/03_learning-map-mobile.md` +- 共用模組: `/docs/02_design/function-specs/common/progressive-stage-system.md` + +**需設計的頁面**: +- [ ] **UI_Level_Map** - 學習地圖主畫面 (線性闖關版) + - 設計要求: 13階段×20劇本的地圖視覺化 + - 設計要求: 四關進度指示器 (詞彙學習→詞彙熟悉→口說練習→情境對話) + - 設計要求: 關卡狀態管理 (🔒鎖定/⏳可進行/🔄進行中/✅已完成) + - 引用規格: progressive-stage-system.md 完整關卡系統 + +- [ ] **UI_Current_Level_Info** - 當前可進行關卡資訊面板 + - 設計要求: 關卡詳細資訊展示 + - 設計要求: 開始學習入口和準備指南 + +- [ ] **UI_Level_Progress_Detail** - 關卡進度詳情頁面 + - 設計要求: 詳細進度追蹤和統計 + - 設計要求: 個人表現分析 + +- [ ] **UI_Stage_Overview** - 階段總覽和劇本選擇 + - 設計要求: 階段性學習目標展示 + - 設計要求: 劇本選擇和預覽功能 + +- [ ] **UI_Level_Locked_Modal** - 關卡鎖定提示彈窗 + - 設計要求: 解鎖條件清晰提示 + - 設計要求: 引導用戶完成前置任務 + +### 2.2 商業功能頁面群組 (第4-5週) + +#### 2.2.1 道具商店系統 🛒 (優先級: P1) + +**規格參考**: +- 主規格: `/docs/02_design/function-specs/mobile/04_item-shop-mobile.md` +- 共用模組: `/docs/02_design/function-specs/common/business-rules.md` + +**需設計的頁面**: +- [ ] **UI_Shop_Categories** - 道具商店分類主頁面 + - 設計要求: 鑽石購買區 (5個價格套餐) + - 設計要求: 學習輔助道具區 (回覆提示、補命、加時) + - 設計要求: 限時挑戰道具區 (時間暫停、時間加成) + - 引用規格: business-rules.md 命條系統和經濟系統 + +- [ ] **UI_Diamond_Purchase** - 鑽石購買頁面 + - 設計要求: 價格套餐展示和優惠信息 + - 設計要求: 支付流程整合 + +- [ ] **UI_Item_Details** - 單一道具詳情頁面 + - 設計要求: 道具功能詳細說明 + - 設計要求: 使用場景和效果展示 + +- [ ] **UI_Shop_Item_Confirm** - 道具購買確認彈窗 + - 設計要求: 購買資訊確認和風險提示 + - UI規範: 高風險按鈕文字標注 (ui-ux-guidelines.md 第194行) + +- [ ] **UI_Cost_Confirm_Popup** - 成本確認彈窗 (口說練習特別關卡) + - 設計要求: 特殊關卡成本說明 + - 設計要求: 用戶決策支援資訊 + +#### 2.2.2 用戶認證系統 🔐 (優先級: P1) + +**規格參考**: +- 主規格: `/docs/02_design/function-specs/mobile/05_user-authentication-mobile.md` +- 共用模組: `/docs/02_design/function-specs/common/business-rules.md` + +**需設計的頁面**: +- [ ] **UI_Login_Main** - 主要登入頁面 + - 設計要求: 多平台登入選項 (Google, Facebook, Apple) + - 設計要求: 記住登入和安全驗證 + - 設計要求: 錯誤處理和安全提示 + +- [ ] **UI_SignUp_Main** - 用戶註冊頁面 + - 設計要求: 分步驟註冊流程 + - 設計要求: 即時驗證和錯誤提示 + - 設計要求: 學習目標和程度設定 + +- [ ] **UI_PasswordReset_Form** - 密碼重置表單 + - 設計要求: 多步驟驗證流程 + - 設計要求: 安全性說明和引導 + +- [ ] **UI_PasswordReset_Popup** - 密碼重置確認彈窗 + - 設計要求: 重置成功確認和後續指引 + +- [ ] **UI_Account_List** - 帳戶列表管理頁面 + - 設計要求: 多帳戶管理和切換 + - 設計要求: 帳戶安全狀態顯示 + +- [ ] **UI_Account_Option** - 帳戶選項設定頁面 + - 設計要求: 帳戶設定和隱私控制 + - 設計要求: 帳戶關聯和解綁功能 + +### 2.3 支援功能頁面群組 (第5-6週) + +#### 2.3.1 系統介面和狀態頁面 📊 (優先級: P2) + +**需設計的頁面**: +- [ ] **UI_Insufficient_Resources** - 資源不足提示頁面 + - 設計要求: 清晰的資源不足說明 + - 設計要求: 獲取資源的引導路徑 + +- [ ] **UI_LifePoints_Display** - 生命點數顯示組件 + - 設計要求: 直觀的生命值視覺化 + - UI規範: 命條生命系統 (ui-ux-guidelines.md 第30行) + +- [ ] **UI_Subscription_Success** - 訂閱成功頁面 + - 設計要求: 訂閱確認和權益說明 + - 設計要求: 後續使用指引 + +- [ ] **UI_TimeWarp_Cards** - 時光卷使用介面 + - 設計要求: 時光卷功能說明和使用確認 + - 設計要求: 使用後效果展示 + +- [ ] **UI_LevelResult_SuccessResult** - 關卡成功結果頁面 + - 設計要求: 成就慶祝動畫和統計展示 + - UI規範: 即時成就反饋 (ui-ux-guidelines.md 第25行) + +## 💻 階段三:Web端企業級重設計 (第7-9週) + +### 3.1 Web端專屬功能設計 (第7-8週) + +**規格參考**: `/docs/02_design/function-specs/web/` 全部Web端規格 + +**設計重點**: +- [ ] **桌面優化界面**: 大螢幕佈局和多視窗支援 +- [ ] **鍵盤導航**: 完整的鍵盤操作支援 +- [ ] **批量操作**: 企業級批量管理功能 +- [ ] **高級分析**: 詳細的學習分析和報告功能 + +**需設計的主要頁面**: +- [ ] **詞彙學習Web版**: 桌面優化的詞彙學習界面 +- [ ] **情境對話Web版**: 大螢幕對話練習界面 +- [ ] **學習地圖Web版**: 多層級地圖導航界面 +- [ ] **道具商店Web版**: 企業級商店管理界面 +- [ ] **用戶認證Web版**: SSO和企業登入支援 + +### 3.2 響應式設計和跨平台整合 (第8-9週) + +**工作內容**: +- [ ] **響應式佈局**: Mobile → Tablet → Desktop 完整適配 +- [ ] **跨瀏覽器相容性**: Chrome, Firefox, Safari, Edge 完整支援 +- [ ] **效能優化**: 載入時間和互動回應最佳化 +- [ ] **PWA功能**: 漸進式Web應用功能整合 + +## 🔧 階段四:設計系統完善和品質保證 (第10-12週) + +### 4.1 設計系統文檔化和工具化 (第10-11週) + +**工作內容**: +- [ ] **設計規範手冊**: 完整的設計規範使用指南 +- [ ] **組件使用指南**: 每個組件的使用場景和最佳實踐 +- [ ] **設計審查清單**: 品質控制清單和審查標準 +- [ ] **維護指南**: 設計系統維護和更新流程 + +### 4.2 品質保證和使用性測試 (第11-12週) + +**工作內容**: +- [ ] **設計一致性審查**: 跨平台設計一致性檢查 +- [ ] **無障礙性測試**: WCAG 2.1 AA級合規驗證 +- [ ] **使用性測試**: 用戶測試和回饋收集 +- [ ] **效能評估**: 設計對系統效能的影響評估 + +## 📊 成功標準和驗收條件 + +### 🎯 品質標準 +1. **功能規格符合度**: 100%符合所有功能規格要求 +2. **設計一致性**: 跨平台設計語言100%統一 +3. **無障礙標準**: WCAG 2.1 AA級100%合規 +4. **效能標準**: 頁面載入時間<3秒,互動回應時間<200ms +5. **瀏覽器支援**: 主流瀏覽器100%相容 + +### 📋 驗收清單 +- [ ] 所有UI畫面符合對應功能規格文件要求 +- [ ] 所有設計符合UI/UX規範標準 +- [ ] 跨平台視覺一致性通過審查 +- [ ] 無障礙功能測試全部通過 +- [ ] 使用性測試滿意度≥90% + +## 📁 交付物清單 + +### 🎨 設計文檔 +- [ ] `ui-ux-guidelines.md` - 完善的UI/UX設計規範 +- [ ] `design-system-documentation.md` - 設計系統完整文檔 +- [ ] `component-library-guide.md` - 組件庫使用指南 +- [ ] `responsive-design-standards.md` - 響應式設計標準 + +### 💻 設計資產 +- [ ] `design-system.css` - 完整CSS設計系統 +- [ ] 95+ HTML原型頁面 (Mobile + Web) +- [ ] 完整SVG圖標庫 +- [ ] 設計系統展示網站 + +### 📋 支援文檔 +- [ ] `design-review-checklist.md` - 設計審查清單 +- [ ] `accessibility-compliance-report.md` - 無障礙合規報告 +- [ ] `usability-test-results.md` - 使用性測試報告 +- [ ] `maintenance-guidelines.md` - 維護指南 + +## 🚨 風險管控和品質保證 + +### ⚠️ 關鍵風險點 +1. **規格理解偏差**: 設計不符合功能規格要求 + - **控制措施**: 每個設計階段都進行規格文件交叉檢查 + - **責任人**: 設計師必須深度閱讀相關規格文件 + +2. **設計一致性風險**: 跨頁面設計語言不統一 + - **控制措施**: 建立設計審查機制,每週進行一致性檢查 + - **工具支援**: 建立設計系統檢查清單 + +3. **無障礙合規風險**: 無障礙功能不完整 + - **控制措施**: 每個組件設計完成都進行無障礙測試 + - **標準遵循**: 嚴格遵循WCAG 2.1 AA級標準 + +### 🔍 品質控制機制 +1. **階段性審查**: 每個階段結束進行全面審查 +2. **同行評議**: 設計師之間相互審查和回饋 +3. **用戶測試**: 關鍵頁面進行真實用戶測試 +4. **技術可行性評估**: 設計與開發團隊聯合評估 + +## 📞 執行支援和溝通機制 + +### 🤝 團隊協作 +- **設計團隊**: 負責設計執行和品質控制 +- **產品團隊**: 提供功能需求解釋和使用者回饋 +- **開發團隊**: 提供技術可行性建議和實現支援 +- **測試團隊**: 提供品質測試和驗收支援 + +### 📋 進度追蹤 +- **每週進度會議**: 檢討進度和解決阻礙 +- **里程碑審查**: 階段性成果展示和評估 +- **問題升級機制**: 重大問題快速上報和解決 +- **文檔同步更新**: 確保所有團隊資訊同步 + +--- + +**📝 重要聲明**: +本計劃基於Drama Ling v3.0共用模組架構制定,確保所有設計完全符合功能規格要求,達到企業級應用標準。所有設計師在執行前必須深入理解相關功能規格文件和UI/UX規範,確保設計品質和一致性。 + +**🎯 最終目標**: +創建Drama Ling史上最高品質的UI設計系統,為用戶提供世界級的沉浸式英語學習體驗。 + +--- + +**最後更新**: 2025-01-15 +**計劃版本**: v4.0 - 企業級重構 +**執行週期**: 12週 +**預期成果**: 95+ 企業級UI畫面 \ No newline at end of file diff --git a/docs/00_starter/README.md b/docs/00_starter/README.md index 9d85aac..b6587b2 100644 --- a/docs/00_starter/README.md +++ b/docs/00_starter/README.md @@ -21,15 +21,15 @@ docs/ ### 🚀 `/00_starter` - 專案基礎 **用途**: 包含專案初始化和AI輔助開發所使用的基礎模板和提示詞。 -| 檔案名稱 | 用途 | -|------|---------| -| `CLAUDE_TEMPLATE.md` | Claude AI 互動模板和專案設置 | -| `READ.md` | 使用入門模板的說明指引 | -| `business_function_design_prompt.md` | 生成業務功能設計的 AI 提示詞 | -| `generate_requirements_prompt.md` | 創建專案需求的 AI 提示詞 | -| `generate_system_structure_prompt.md` | 系統架構生成的 AI 提示詞 | -| `system_detail_prompt.md` | 詳細系統規格的 AI 提示詞 | -| `system_structured_schema.json` | 結構化系統設計輸出的 JSON 架構 | +| 檔案名稱 | 用途 | +| ------------------------------------- | ------------------------------ | +| `CLAUDE_TEMPLATE.md` | Claude AI 互動模板和專案設置 | +| `READ.md` | 使用入門模板的說明指引 | +| `business_function_design_prompt.md` | 生成業務功能設計的 AI 提示詞 | +| `generate_requirements_prompt.md` | 創建專案需求的 AI 提示詞 | +| `generate_system_structure_prompt.md` | 系統架構生成的 AI 提示詞 | +| `system_detail_prompt.md` | 詳細系統規格的 AI 提示詞 | +| `system_structured_schema.json` | 結構化系統設計輸出的 JSON 架構 | **使用時機**: 這些檔案主要在專案初始化時使用,以及與 AI 助手協作生成文檔和程式碼結構時使用。 @@ -38,13 +38,13 @@ docs/ ### 📋 `/01_requirement` - 需求文檔 **用途**: 包含核心專案需求、規格說明和系統設計文檔。**專注於知識管理和規格定義**。 -| 檔案名稱 | 用途 | -|------|---------| -| `founding_pitch.md` | 初始專案提案和商業案例 | -| `requirements.md` | **產品功能需求總覽** - 詳細的產品規格和功能概述 | -| `user-stories.md` | **用戶故事和使用場景** - 用戶需求和互動情境 | -| `business-rules.md` | **業務邏輯和規則定義** - 核心商業規則和流程 | -| `acceptance-criteria.md` | **驗收標準和測試條件** - 功能驗收和品質標準 | +| 檔案名稱 | 用途 | +| ------------------------------ | ----------------------------------------------------------------- | +| `founding_pitch.md` | 初始專案提案和商業案例 | +| `requirements.md` | **產品功能需求總覽** - 詳細的產品規格和功能概述 | +| `user-stories.md` | **用戶故事和使用場景** - 用戶需求和互動情境 | +| `business-rules.md` | **業務邏輯和規則定義** - 核心商業規則和流程 | +| `acceptance-criteria.md` | **驗收標準和測試條件** - 功能驗收和品質標準 | | `system_structure_design.json` | **結構化系統設計** - 從需求生成,包含模組、功能和UI視圖的JSON格式 | **關鍵文檔**: `requirements.md` 是產品應該做什麼以及如何運作的唯一真實來源。 @@ -54,20 +54,20 @@ docs/ ### 🎨 `/02_design` - 設計規格 (更新 2025-09-09) **用途**: 涵蓋使用者體驗、視覺設計和互動模式的文檔。**專注於知識管理和規格定義**。 -| 檔案名稱 | 用途 | -|------|---------| -| `ui-specifications.md` | **UI設計規範和標準** - 視覺設計標準和介面規範 | -| `ux-guidelines.md` | **用戶體驗設計指南** - 互動模式和使用者流程 | -| `component-library.md` | **UI組件庫文檔** - 可重用組件和設計系統 | -| `design-tokens.md` | **設計令牌和主題系統** - 顏色、字體、間距等設計變量 | -| `ai-algorithm-specs.md` | AI 分析演算法和語言處理規格 | -| `business-logic-rules.md` | 核心商業規則和邏輯流程定義 | -| `content-management-specs.md` | 內容創建、策劃和管理工作流程 | -| `gamification-mechanics.md` | 遊戲元素、成就和獎勵系統設計 | -| `ui-ux-guidelines.md` | 視覺設計標準、組件庫和使用者介面指南 | -| `function-specs/` | 平台別功能規格(mobile/web/common)| -| `html-prototypes/` | HTML原型和頁面範例 | -| `views/` | UI視圖設計檔案 | +| 檔案名稱 | 用途 | +| ---------------------------- | --------------------------------------------------- | +| `prototype-design-plan.md` | **原型設計製作計劃** - 雛形畫面開發的完整規劃 | +| `function-specs/` | **平台別功能規格** - mobile/web/common功能詳細規格 | +| `prototypes/` | **HTML原型系統** - 可互動的功能演示界面 | +| `ui-ux/` | **UI/UX設計系統** - 視覺規範、組件庫、樣式指南 | +| `views/` | **UI視圖設計檔案** - 介面設計的視覺化參考 | + +**實際子目錄結構**: +- `function-specs/common/` - 跨平台共用規格(API、資料模型、業務規則等) +- `function-specs/mobile/` - 行動端專用功能規格 +- `function-specs/web/` - 網頁端專用功能規格 +- `ui-ux/ui-ux-guidelines.md` - 統一的UI/UX設計規範 +- `ui-ux/dramaling-ui.css` - Drama Ling設計系統樣式表 **目標讀者**: 設計師、前端開發人員和產品經理。 @@ -76,14 +76,14 @@ docs/ ### 👨💻 `/03_development` - 開發文檔 (更新 2025-09-09) **用途**: 為開發人員提供編碼標準、工作流程和專案路線圖的指南。**專注於知識管理和規格定義**。 -| 檔案名稱 | 用途 | -|------|---------| -| `coding-standards.md` | **程式碼規範** - Flutter/Dart 和 .NET/C# 的程式碼風格指南、命名慣例和最佳實踐 | -| `architecture-overview.md` | **系統架構概述** - 整體系統架構和設計決策說明 | -| `deployment-guide.md` | **部署流程文檔** - 部署步驟、環境配置和發布流程 | -| `troubleshooting.md` | **常見問題排除** - 開發過程中常見問題的解決方案 | -| `development-workflow.md` | Git 工作流程、分支策略、程式碼審查流程和開發生命週期 | -| `project-roadmap.md` | **開發時程表** - 階段、里程碑和功能交付時程 | +| 檔案名稱 | 用途 | +| -------------------------- | ----------------------------------------------------------------------------- | +| `coding-standards.md` | **程式碼規範** - Flutter/Dart 和 .NET/C# 的程式碼風格指南、命名慣例和最佳實踐 | +| `architecture-overview.md` | **系統架構概述** - 整體系統架構和設計決策說明 | +| `deployment-guide.md` | **部署流程文檔** - 部署步驟、環境配置和發布流程 | +| `troubleshooting.md` | **常見問題排除** - 開發過程中常見問題的解決方案 | +| `development-workflow.md` | Git 工作流程、分支策略、程式碼審查流程和開發生命週期 | +| `project-roadmap.md` | **開發時程表** - 階段、里程碑和功能交付時程 | **目標讀者**: 所有參與專案的開發人員。 @@ -92,19 +92,19 @@ docs/ ### ⚙️ `/04_technical` - 技術規格 (更新 2025-09-09) **用途**: 技術實作細節、系統架構和整合規格說明。**專注於知識管理和規格定義**。 -| 子目錄/檔案 | 用途 | -|------|---------| -| `api-specifications.md` | **API接口文檔** - 完整API規格、端點定義和資料格式 | -| `database-schema.md` | **資料庫設計文檔** - 資料表結構、關聯和索引設計 | -| `security-requirements.md` | **安全性需求** - 安全標準、認證機制和資料保護 | -| `performance-standards.md` | **效能標準定義** - 效能指標、基準測試和優化準則 | -| `01_architecture/` | 系統架構設計和決策文檔 | -| `02_api/` | **REST API 文檔** - 完整API規格、端點文檔、Swagger UI | -| `03_frontend/` | 前端技術規格和實作指南 | -| `04_mobile/` | 移動端開發技術規格 | -| `05_deployment/` | 部署流程和環境配置 | -| `06_development/` | **開發過程管理** - 問題追蹤、環境設定和開發工具配置 | -| `07_planning/` | 技術規劃和決策記錄 | +| 子目錄/檔案 | 用途 | +| -------------------------- | ----------------------------------------------------- | +| `api-specifications.md` | **API接口文檔** - 完整API規格、端點定義和資料格式 | +| `database-schema.md` | **資料庫設計文檔** - 資料表結構、關聯和索引設計 | +| `security-requirements.md` | **安全性需求** - 安全標準、認證機制和資料保護 | +| `performance-standards.md` | **效能標準定義** - 效能指標、基準測試和優化準則 | +| `01_architecture/` | 系統架構設計和決策文檔 | +| `02_api/` | **REST API 文檔** - 完整API規格、端點文檔、Swagger UI | +| `03_frontend/` | 前端技術規格和實作指南 | +| `04_mobile/` | 移動端開發技術規格 | +| `05_deployment/` | 部署流程和環境配置 | +| `06_development/` | **開發過程管理** - 問題追蹤、環境設定和開發工具配置 | +| `07_planning/` | 技術規劃和決策記錄 | **關鍵文檔**: `02_api/` 目錄中的API文檔作為前端和後端團隊之間的契約。 @@ -135,15 +135,15 @@ docs/ ### ✅ 正確的內容分層 -| 內容類型 | 正確位置 | -|---------|----------| -| 產品規格和需求 | `docs/01_requirement/` | -| 設計標準和指南 | `docs/02_design/` | -| 技術架構和 API 規格 | `docs/04_technical/` | -| 編碼規範和流程 | `docs/03_development/` | -| 具體任務和待辦事項 | `TASKS.md` | -| 專案執行計畫 | `projects/[專案名].md` | -| 進度追蹤和狀態更新 | 專案管理工具 | +| 內容類型 | 正確位置 | +| ------------------- | ---------------------- | +| 產品規格和需求 | `docs/01_requirement/` | +| 設計標準和指南 | `docs/02_design/` | +| 技術架構和 API 規格 | `docs/04_technical/` | +| 編碼規範和流程 | `docs/03_development/` | +| 具體任務和待辦事項 | `TASKS.md` | +| 專案執行計畫 | `projects/[專案名].md` | +| 進度追蹤和狀態更新 | 專案管理工具 | --- @@ -176,7 +176,7 @@ docs/ - 主要文檔: `/02_design/ui-ux-guidelines.md`, `/02_design/gamification-mechanics.md` - 內容策略: `/02_design/content-management-specs.md` - 功能規格: `/02_design/function-specs/` -- 原型參考: `/02_design/html-prototypes/` +- 原型參考: `/02_design/prototypes/` --- @@ -198,16 +198,16 @@ docs/ ## 🔍 快速參考 -| 尋找... | 前往... | -|----------------|----------| -| 要建構什麼功能 | `/01_requirement/requirements.md` | -| API 端點和資料格式 | `/04_technical/02_api/` | -| 系統架構 | `/04_technical/01_architecture/` | -| UI 設計標準 | `/02_design/ui-ux-guidelines.md` | -| 如何貢獻程式碼 | `/03_development/development-workflow.md` | -| 開發時程表 | `/03_development/project-roadmap.md` | -| 功能規格 | `/02_design/function-specs/` | -| 部署流程 | `/04_technical/05_deployment/` | +| 尋找... | 前往... | +| ------------------ | ----------------------------------------- | +| 要建構什麼功能 | `/01_requirement/requirements.md` | +| API 端點和資料格式 | `/04_technical/02_api/` | +| 系統架構 | `/04_technical/01_architecture/` | +| UI 設計標準 | `/02_design/ui-ux-guidelines.md` | +| 如何貢獻程式碼 | `/03_development/development-workflow.md` | +| 開發時程表 | `/03_development/project-roadmap.md` | +| 功能規格 | `/02_design/function-specs/` | +| 部署流程 | `/04_technical/05_deployment/` | --- diff --git a/docs/02_design/views/UI_Account_List.png b/docs/01_requirement/views/UI_Account_List.png similarity index 100% rename from docs/02_design/views/UI_Account_List.png rename to docs/01_requirement/views/UI_Account_List.png diff --git a/docs/02_design/views/UI_Account_Option.png b/docs/01_requirement/views/UI_Account_Option.png similarity index 100% rename from docs/02_design/views/UI_Account_Option.png rename to docs/01_requirement/views/UI_Account_Option.png diff --git a/docs/02_design/views/UI_Assessment_Results.png b/docs/01_requirement/views/UI_Assessment_Results.png similarity index 100% rename from docs/02_design/views/UI_Assessment_Results.png rename to docs/01_requirement/views/UI_Assessment_Results.png diff --git a/docs/02_design/views/UI_Assessment_Test.png b/docs/01_requirement/views/UI_Assessment_Test.png similarity index 100% rename from docs/02_design/views/UI_Assessment_Test.png rename to docs/01_requirement/views/UI_Assessment_Test.png diff --git a/docs/02_design/views/UI_Challenge_Exit_Confirm.png b/docs/01_requirement/views/UI_Challenge_Exit_Confirm.png similarity index 100% rename from docs/02_design/views/UI_Challenge_Exit_Confirm.png rename to docs/01_requirement/views/UI_Challenge_Exit_Confirm.png diff --git a/docs/02_design/views/UI_Character_Details.png b/docs/01_requirement/views/UI_Character_Details.png similarity index 100% rename from docs/02_design/views/UI_Character_Details.png rename to docs/01_requirement/views/UI_Character_Details.png diff --git a/docs/02_design/views/UI_Correction_Fluency.png b/docs/01_requirement/views/UI_Correction_Fluency.png similarity index 100% rename from docs/02_design/views/UI_Correction_Fluency.png rename to docs/01_requirement/views/UI_Correction_Fluency.png diff --git a/docs/02_design/views/UI_Correction_Fluency_Practice.png b/docs/01_requirement/views/UI_Correction_Fluency_Practice.png similarity index 100% rename from docs/02_design/views/UI_Correction_Fluency_Practice.png rename to docs/01_requirement/views/UI_Correction_Fluency_Practice.png diff --git a/docs/02_design/views/UI_Correction_Grammar.png b/docs/01_requirement/views/UI_Correction_Grammar.png similarity index 100% rename from docs/02_design/views/UI_Correction_Grammar.png rename to docs/01_requirement/views/UI_Correction_Grammar.png diff --git a/docs/02_design/views/UI_Correction_Grammar_Retry.png b/docs/01_requirement/views/UI_Correction_Grammar_Retry.png similarity index 100% rename from docs/02_design/views/UI_Correction_Grammar_Retry.png rename to docs/01_requirement/views/UI_Correction_Grammar_Retry.png diff --git a/docs/02_design/views/UI_Correction_Pass_Result.png b/docs/01_requirement/views/UI_Correction_Pass_Result.png similarity index 100% rename from docs/02_design/views/UI_Correction_Pass_Result.png rename to docs/01_requirement/views/UI_Correction_Pass_Result.png diff --git a/docs/02_design/views/UI_Correction_Retry_Result.png b/docs/01_requirement/views/UI_Correction_Retry_Result.png similarity index 100% rename from docs/02_design/views/UI_Correction_Retry_Result.png rename to docs/01_requirement/views/UI_Correction_Retry_Result.png diff --git a/docs/02_design/views/UI_Cost_Confirm_Popup.png b/docs/01_requirement/views/UI_Cost_Confirm_Popup.png similarity index 100% rename from docs/02_design/views/UI_Cost_Confirm_Popup.png rename to docs/01_requirement/views/UI_Cost_Confirm_Popup.png diff --git a/docs/02_design/views/UI_Dialogue_Analysis.png b/docs/01_requirement/views/UI_Dialogue_Analysis.png similarity index 100% rename from docs/02_design/views/UI_Dialogue_Analysis.png rename to docs/01_requirement/views/UI_Dialogue_Analysis.png diff --git a/docs/02_design/views/UI_Dialogue_Main.png b/docs/01_requirement/views/UI_Dialogue_Main.png similarity index 100% rename from docs/02_design/views/UI_Dialogue_Main.png rename to docs/01_requirement/views/UI_Dialogue_Main.png diff --git a/docs/02_design/views/UI_Insufficient_Resources.png b/docs/01_requirement/views/UI_Insufficient_Resources.png similarity index 100% rename from docs/02_design/views/UI_Insufficient_Resources.png rename to docs/01_requirement/views/UI_Insufficient_Resources.png diff --git a/docs/02_design/views/UI_Keywords_Details.png b/docs/01_requirement/views/UI_Keywords_Details.png similarity index 100% rename from docs/02_design/views/UI_Keywords_Details.png rename to docs/01_requirement/views/UI_Keywords_Details.png diff --git a/docs/02_design/views/UI_Level_Locked_Modal.png b/docs/01_requirement/views/UI_Level_Locked_Modal.png similarity index 100% rename from docs/02_design/views/UI_Level_Locked_Modal.png rename to docs/01_requirement/views/UI_Level_Locked_Modal.png diff --git a/docs/02_design/views/UI_Level_Map.png b/docs/01_requirement/views/UI_Level_Map.png similarity index 100% rename from docs/02_design/views/UI_Level_Map.png rename to docs/01_requirement/views/UI_Level_Map.png diff --git a/docs/02_design/views/UI_Level_Selection_Modal.png b/docs/01_requirement/views/UI_Level_Selection_Modal.png similarity index 100% rename from docs/02_design/views/UI_Level_Selection_Modal.png rename to docs/01_requirement/views/UI_Level_Selection_Modal.png diff --git a/docs/02_design/views/UI_Level_Selection_Modal_A.png b/docs/01_requirement/views/UI_Level_Selection_Modal_A.png similarity index 100% rename from docs/02_design/views/UI_Level_Selection_Modal_A.png rename to docs/01_requirement/views/UI_Level_Selection_Modal_A.png diff --git a/docs/02_design/views/UI_Level_Selection_Modal_B.png b/docs/01_requirement/views/UI_Level_Selection_Modal_B.png similarity index 100% rename from docs/02_design/views/UI_Level_Selection_Modal_B.png rename to docs/01_requirement/views/UI_Level_Selection_Modal_B.png diff --git a/docs/02_design/views/UI_LifePoints_Display.png b/docs/01_requirement/views/UI_LifePoints_Display.png similarity index 100% rename from docs/02_design/views/UI_LifePoints_Display.png rename to docs/01_requirement/views/UI_LifePoints_Display.png diff --git a/docs/02_design/views/UI_Login_Main.png b/docs/01_requirement/views/UI_Login_Main.png similarity index 100% rename from docs/02_design/views/UI_Login_Main.png rename to docs/01_requirement/views/UI_Login_Main.png diff --git a/docs/02_design/views/UI_Onboarding_Frequency.png b/docs/01_requirement/views/UI_Onboarding_Frequency.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_Frequency.png rename to docs/01_requirement/views/UI_Onboarding_Frequency.png diff --git a/docs/02_design/views/UI_Onboarding_Level.png b/docs/01_requirement/views/UI_Onboarding_Level.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_Level.png rename to docs/01_requirement/views/UI_Onboarding_Level.png diff --git a/docs/02_design/views/UI_Onboarding_Notice.png b/docs/01_requirement/views/UI_Onboarding_Notice.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_Notice.png rename to docs/01_requirement/views/UI_Onboarding_Notice.png diff --git a/docs/02_design/views/UI_Onboarding_Purpose.png b/docs/01_requirement/views/UI_Onboarding_Purpose.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_Purpose.png rename to docs/01_requirement/views/UI_Onboarding_Purpose.png diff --git a/docs/02_design/views/UI_Onboarding_Result.png b/docs/01_requirement/views/UI_Onboarding_Result.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_Result.png rename to docs/01_requirement/views/UI_Onboarding_Result.png diff --git a/docs/02_design/views/UI_Onboarding_TimeSlot.png b/docs/01_requirement/views/UI_Onboarding_TimeSlot.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_TimeSlot.png rename to docs/01_requirement/views/UI_Onboarding_TimeSlot.png diff --git a/docs/02_design/views/UI_Onboarding_Welcome.png b/docs/01_requirement/views/UI_Onboarding_Welcome.png similarity index 100% rename from docs/02_design/views/UI_Onboarding_Welcome.png rename to docs/01_requirement/views/UI_Onboarding_Welcome.png diff --git a/docs/02_design/views/UI_PasswordReset_Form.png b/docs/01_requirement/views/UI_PasswordReset_Form.png similarity index 100% rename from docs/02_design/views/UI_PasswordReset_Form.png rename to docs/01_requirement/views/UI_PasswordReset_Form.png diff --git a/docs/02_design/views/UI_PasswordReset_Popup.png b/docs/01_requirement/views/UI_PasswordReset_Popup.png similarity index 100% rename from docs/02_design/views/UI_PasswordReset_Popup.png rename to docs/01_requirement/views/UI_PasswordReset_Popup.png diff --git a/docs/02_design/views/UI_Profile_Dashboard.png b/docs/01_requirement/views/UI_Profile_Dashboard.png similarity index 100% rename from docs/02_design/views/UI_Profile_Dashboard.png rename to docs/01_requirement/views/UI_Profile_Dashboard.png diff --git a/docs/02_design/views/UI_Profile_Details.png b/docs/01_requirement/views/UI_Profile_Details.png similarity index 100% rename from docs/02_design/views/UI_Profile_Details.png rename to docs/01_requirement/views/UI_Profile_Details.png diff --git a/docs/02_design/views/UI_Profile_Locked.png b/docs/01_requirement/views/UI_Profile_Locked.png similarity index 100% rename from docs/02_design/views/UI_Profile_Locked.png rename to docs/01_requirement/views/UI_Profile_Locked.png diff --git a/docs/02_design/views/UI_Profile_Settings.png b/docs/01_requirement/views/UI_Profile_Settings.png similarity index 100% rename from docs/02_design/views/UI_Profile_Settings.png rename to docs/01_requirement/views/UI_Profile_Settings.png diff --git a/docs/02_design/views/UI_Reply_Assistance.png b/docs/01_requirement/views/UI_Reply_Assistance.png similarity index 100% rename from docs/02_design/views/UI_Reply_Assistance.png rename to docs/01_requirement/views/UI_Reply_Assistance.png diff --git a/docs/02_design/views/UI_Reply_Input.png b/docs/01_requirement/views/UI_Reply_Input.png similarity index 100% rename from docs/02_design/views/UI_Reply_Input.png rename to docs/01_requirement/views/UI_Reply_Input.png diff --git a/docs/02_design/views/UI_Result_Correction.png b/docs/01_requirement/views/UI_Result_Correction.png similarity index 100% rename from docs/02_design/views/UI_Result_Correction.png rename to docs/01_requirement/views/UI_Result_Correction.png diff --git a/docs/02_design/views/UI_Result_Dialogue_Analysis.png b/docs/01_requirement/views/UI_Result_Dialogue_Analysis.png similarity index 100% rename from docs/02_design/views/UI_Result_Dialogue_Analysis.png rename to docs/01_requirement/views/UI_Result_Dialogue_Analysis.png diff --git a/docs/02_design/views/UI_Result_Failure_A.png b/docs/01_requirement/views/UI_Result_Failure_A.png similarity index 100% rename from docs/02_design/views/UI_Result_Failure_A.png rename to docs/01_requirement/views/UI_Result_Failure_A.png diff --git a/docs/02_design/views/UI_Result_Failure_B.png b/docs/01_requirement/views/UI_Result_Failure_B.png similarity index 100% rename from docs/02_design/views/UI_Result_Failure_B.png rename to docs/01_requirement/views/UI_Result_Failure_B.png diff --git a/docs/02_design/views/UI_Result_Reward_Confirm.png b/docs/01_requirement/views/UI_Result_Reward_Confirm.png similarity index 100% rename from docs/02_design/views/UI_Result_Reward_Confirm.png rename to docs/01_requirement/views/UI_Result_Reward_Confirm.png diff --git a/docs/02_design/views/UI_Result_Score_Summary_A.png b/docs/01_requirement/views/UI_Result_Score_Summary_A.png similarity index 100% rename from docs/02_design/views/UI_Result_Score_Summary_A.png rename to docs/01_requirement/views/UI_Result_Score_Summary_A.png diff --git a/docs/02_design/views/UI_Result_Score_Summary_B.png b/docs/01_requirement/views/UI_Result_Score_Summary_B.png similarity index 100% rename from docs/02_design/views/UI_Result_Score_Summary_B.png rename to docs/01_requirement/views/UI_Result_Score_Summary_B.png diff --git a/docs/02_design/views/UI_Result_Small_Reward.png b/docs/01_requirement/views/UI_Result_Small_Reward.png similarity index 100% rename from docs/02_design/views/UI_Result_Small_Reward.png rename to docs/01_requirement/views/UI_Result_Small_Reward.png diff --git a/docs/02_design/views/UI_Result_Success_A.png b/docs/01_requirement/views/UI_Result_Success_A.png similarity index 100% rename from docs/02_design/views/UI_Result_Success_A.png rename to docs/01_requirement/views/UI_Result_Success_A.png diff --git a/docs/02_design/views/UI_Result_Success_B.png b/docs/01_requirement/views/UI_Result_Success_B.png similarity index 100% rename from docs/02_design/views/UI_Result_Success_B.png rename to docs/01_requirement/views/UI_Result_Success_B.png diff --git a/docs/02_design/views/UI_Shop_Categories.png b/docs/01_requirement/views/UI_Shop_Categories.png similarity index 100% rename from docs/02_design/views/UI_Shop_Categories.png rename to docs/01_requirement/views/UI_Shop_Categories.png diff --git a/docs/02_design/views/UI_Shop_Item_Confirm.png b/docs/01_requirement/views/UI_Shop_Item_Confirm.png similarity index 100% rename from docs/02_design/views/UI_Shop_Item_Confirm.png rename to docs/01_requirement/views/UI_Shop_Item_Confirm.png diff --git a/docs/02_design/views/UI_SignUp_Main.png b/docs/01_requirement/views/UI_SignUp_Main.png similarity index 100% rename from docs/02_design/views/UI_SignUp_Main.png rename to docs/01_requirement/views/UI_SignUp_Main.png diff --git a/docs/02_design/views/UI_Social_Friends.png b/docs/01_requirement/views/UI_Social_Friends.png similarity index 100% rename from docs/02_design/views/UI_Social_Friends.png rename to docs/01_requirement/views/UI_Social_Friends.png diff --git a/docs/02_design/views/UI_Social_GuestPrompt.png b/docs/01_requirement/views/UI_Social_GuestPrompt.png similarity index 100% rename from docs/02_design/views/UI_Social_GuestPrompt.png rename to docs/01_requirement/views/UI_Social_GuestPrompt.png diff --git a/docs/02_design/views/UI_Social_Main.png b/docs/01_requirement/views/UI_Social_Main.png similarity index 100% rename from docs/02_design/views/UI_Social_Main.png rename to docs/01_requirement/views/UI_Social_Main.png diff --git a/docs/02_design/views/UI_Social_Profile.png b/docs/01_requirement/views/UI_Social_Profile.png similarity index 100% rename from docs/02_design/views/UI_Social_Profile.png rename to docs/01_requirement/views/UI_Social_Profile.png diff --git a/docs/02_design/views/UI_Social_Ranking.png b/docs/01_requirement/views/UI_Social_Ranking.png similarity index 100% rename from docs/02_design/views/UI_Social_Ranking.png rename to docs/01_requirement/views/UI_Social_Ranking.png diff --git a/docs/02_design/views/UI_Social_Ranking_Guest.png b/docs/01_requirement/views/UI_Social_Ranking_Guest.png similarity index 100% rename from docs/02_design/views/UI_Social_Ranking_Guest.png rename to docs/01_requirement/views/UI_Social_Ranking_Guest.png diff --git a/docs/02_design/views/UI_Social_Search.png b/docs/01_requirement/views/UI_Social_Search.png similarity index 100% rename from docs/02_design/views/UI_Social_Search.png rename to docs/01_requirement/views/UI_Social_Search.png diff --git a/docs/02_design/views/UI_Subscription_Success.png b/docs/01_requirement/views/UI_Subscription_Success.png similarity index 100% rename from docs/02_design/views/UI_Subscription_Success.png rename to docs/01_requirement/views/UI_Subscription_Success.png diff --git a/docs/02_design/views/UI_Task_Display.png b/docs/01_requirement/views/UI_Task_Display.png similarity index 100% rename from docs/02_design/views/UI_Task_Display.png rename to docs/01_requirement/views/UI_Task_Display.png diff --git a/docs/02_design/views/UI_Tasks_Extra.png b/docs/01_requirement/views/UI_Tasks_Extra.png similarity index 100% rename from docs/02_design/views/UI_Tasks_Extra.png rename to docs/01_requirement/views/UI_Tasks_Extra.png diff --git a/docs/02_design/views/UI_TimeWarp_Cards.png b/docs/01_requirement/views/UI_TimeWarp_Cards.png similarity index 100% rename from docs/02_design/views/UI_TimeWarp_Cards.png rename to docs/01_requirement/views/UI_TimeWarp_Cards.png diff --git a/docs/02_design/views/UI_Vocab_Choice_Practice.png b/docs/01_requirement/views/UI_Vocab_Choice_Practice.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Choice_Practice.png rename to docs/01_requirement/views/UI_Vocab_Choice_Practice.png diff --git a/docs/02_design/views/UI_Vocab_Choice_Results.png b/docs/01_requirement/views/UI_Vocab_Choice_Results.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Choice_Results.png rename to docs/01_requirement/views/UI_Vocab_Choice_Results.png diff --git a/docs/02_design/views/UI_Vocab_Fluency_Matching.png b/docs/01_requirement/views/UI_Vocab_Fluency_Matching.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Fluency_Matching.png rename to docs/01_requirement/views/UI_Vocab_Fluency_Matching.png diff --git a/docs/02_design/views/UI_Vocab_Fluency_Reorganize.png b/docs/01_requirement/views/UI_Vocab_Fluency_Reorganize.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Fluency_Reorganize.png rename to docs/01_requirement/views/UI_Vocab_Fluency_Reorganize.png diff --git a/docs/02_design/views/UI_Vocab_Fluency_Results.png b/docs/01_requirement/views/UI_Vocab_Fluency_Results.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Fluency_Results.png rename to docs/01_requirement/views/UI_Vocab_Fluency_Results.png diff --git a/docs/02_design/views/UI_Vocab_Introduction.png b/docs/01_requirement/views/UI_Vocab_Introduction.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Introduction.png rename to docs/01_requirement/views/UI_Vocab_Introduction.png diff --git a/docs/02_design/views/UI_Vocab_Review_Main.png b/docs/01_requirement/views/UI_Vocab_Review_Main.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Review_Main.png rename to docs/01_requirement/views/UI_Vocab_Review_Main.png diff --git a/docs/02_design/views/UI_Vocab_Sentence_Results.png b/docs/01_requirement/views/UI_Vocab_Sentence_Results.png similarity index 100% rename from docs/02_design/views/UI_Vocab_Sentence_Results.png rename to docs/01_requirement/views/UI_Vocab_Sentence_Results.png diff --git a/docs/02_design/function-specs/common/business-rules.md b/docs/02_design/function-specs/common/business-rules.md index b866e34..8749fd4 100644 --- a/docs/02_design/function-specs/common/business-rules.md +++ b/docs/02_design/function-specs/common/business-rules.md @@ -18,19 +18,18 @@ - 訂閱用戶: 30個 - 進階用戶: 50個 - **恢復機制**: - - 免費用戶: 每5小時自動恢復1個命條 - 訂閱用戶: 每小時自動恢復3個命條 - 進階用戶: 每小時自動恢復5個命條 - **命條消耗**: 1、2、3關啟動時消耗命條(第2+關不消耗) ### 消耗場景 (四關闖關系統) -| 場景 | 命條消耗 | 說明 | -| -------------- | -------- | ---------------------------- | -| 第1關:詞彙學習 | 1個 | 啟動關卡時消耗,學習過程免費 | -| 第2關:詞彙熟悉 | 1個 | 啟動關卡時消耗,無論答對答錯 | +| 場景 | 命條消耗 | 說明 | +| ------------------------ | -------- | ----------------------------- | +| 第1關:詞彙學習 | 1個 | 啟動關卡時消耗,學習過程免費 | +| 第2關:詞彙熟悉 | 1個 | 啟動關卡時消耗,無論答對答錯 | | 第2+關:口說練習特別關卡 | 0個 | 付費關卡(5鑽石),不消耗命條 | -| 第3關:情境對話 | 1個 | 啟動關卡時消耗,無論成功失敗 | -| 對話有辱罵情形 | 3個 | 額外扣除懲罰 | +| 第3關:情境對話 | 1個 | 啟動關卡時消耗,無論成功失敗 | +| 對話有辱罵情形 | 3個 | 額外扣除懲罰 | ### 獲得命條方式 - **自動恢復**: 依用戶等級不同恢復速度(見上方基本規則) @@ -286,12 +285,12 @@ - **學習階層**: 第x階段 > 第x劇本 > 第x關卡 #### 關卡類型與規則 -| 關卡類型 | 收費模式 | 命條消耗 | 星級獲得 | 解鎖條件 | 通關條件 | -|---------|---------|----------|----------|----------|----------| -| 詞彙學習 | 免費 | 啟動扣1條 | 自動3星 | 無 | 全部答對 | -| 詞彙熟悉 | 免費 | 啟動扣1條 | 自動3星 | 完成第1關 | 全部答對 | -| 口說練習特別關卡 | 5鑽石 | 不扣命條 | 1-3星 | 完成第2關 | 平均70分+ | -| 情境對話 | 免費 | 啟動扣1條 | 1-3星 | 完成第2+關或跳過 | 雙重通關條件 | +| 關卡類型 | 收費模式 | 命條消耗 | 星級獲得 | 解鎖條件 | 通關條件 | +| ---------------- | -------- | --------- | -------- | ---------------- | ------------ | +| 詞彙學習 | 免費 | 啟動扣1條 | 自動3星 | 無 | 全部答對 | +| 詞彙熟悉 | 免費 | 啟動扣1條 | 自動3星 | 完成第1關 | 全部答對 | +| 口說練習特別關卡 | 5鑽石 | 不扣命條 | 1-3星 | 完成第2關 | 平均70分+ | +| 情境對話 | 免費 | 啟動扣1條 | 1-3星 | 完成第2+關或跳過 | 雙重通關條件 | ### 舊版關卡結構系統 #### BR-LEARN-01: 階段化學習架構 diff --git a/docs/02_design/function-specs/comprehensive-user-flows-with-ui.md b/docs/02_design/function-specs/common/comprehensive-user-flows-with-ui.md similarity index 100% rename from docs/02_design/function-specs/comprehensive-user-flows-with-ui.md rename to docs/02_design/function-specs/common/comprehensive-user-flows-with-ui.md diff --git a/docs/02_design/function-specs/platform-feature-mapping.md b/docs/02_design/function-specs/common/platform-feature-mapping.md similarity index 100% rename from docs/02_design/function-specs/platform-feature-mapping.md rename to docs/02_design/function-specs/common/platform-feature-mapping.md diff --git a/docs/02_design/function-specs/common/temp.md b/docs/02_design/function-specs/common/temp.md deleted file mode 100644 index 575e52e..0000000 --- a/docs/02_design/function-specs/common/temp.md +++ /dev/null @@ -1,16 +0,0 @@ - -詞彙 -- Vocab: optimal -- Level: B2 -- Definition: -The best or most effective possible in a particular situation. -- Original Sentence: -For the optimal coding experience, enable the recommended settings -- Example Sentence: -The optimal time to plant these seeds is in early spring. -- Example Image url: -- 例句音檔 -- 詞彙正常速度音檔 -- 詞彙慢速速度音檔 - -劇本 diff --git a/docs/02_design/function-specs/mobile/02_vocabulary-learning-mobile.md b/docs/02_design/function-specs/mobile/02_vocabulary-learning-mobile.md index 8de745f..b093d1b 100644 --- a/docs/02_design/function-specs/mobile/02_vocabulary-learning-mobile.md +++ b/docs/02_design/function-specs/mobile/02_vocabulary-learning-mobile.md @@ -6,7 +6,7 @@ **建立日期**: 2025-09-08 **最後更新**: 2025-09-12 **負責團隊**: 產品/設計/開發 -**原型參考**: `/prototypes/screens/phase2/05-vocabulary-learning-enhanced.html` +**原型參考**: `/docs/02_design/prototypes/screens/phase2/05-vocabulary-learning-enhanced.html` ### 主要功能 - **沉浸式詞彙展示**: 詞彙、音標、定義、多媒體整合展示 @@ -346,7 +346,7 @@ ## 📚 參考資源 -- **原型畫面**: `/prototypes/screens/phase2/05-vocabulary-learning-enhanced.html` +- **原型畫面**: `/docs/02_design/prototypes/screens/phase2/05-vocabulary-learning-enhanced.html` - **線性闖關系統**: `docs/02_design/function-specs/common/progressive-stage-system.md` - **UI/UX設計規範**: `docs/02_design/ui-ux/ui-ux-guidelines.md` - 按鈕文字標注原則 - **命條系統規則**: `docs/02_design/function-specs/common/business-rules.md` diff --git a/docs/02_design/ui-ux/ui-ux-guidelines.md b/docs/02_design/ui-ux/ui-ux-guidelines.md index 3e017df..4a71bbe 100644 --- a/docs/02_design/ui-ux/ui-ux-guidelines.md +++ b/docs/02_design/ui-ux/ui-ux-guidelines.md @@ -61,16 +61,22 @@ --error-red: #E74C3C; --warning-yellow: #F39C12; + /* 成功和確認 */ + --success-green: #4CAF50; + /* 資訊提示 */ --info-cyan: #3498DB; /* 暗色主題色調 */ --text-primary: #FFFFFF; --text-secondary: #B8BCC8; + --text-tertiary: #718096; --background-primary: #2C3E50; --background-secondary: #34495E; --background-dark: #1A252F; + --background-light: #F8F9FA; --divider: #4A5568; + --border-light: #E2E8F0; --card-background: #3A4A5C; } ``` @@ -313,6 +319,107 @@ .input-field::placeholder { color: var(--text-secondary); } + +/* 密碼輸入框 */ +.password-input-container { + position: relative; + width: 100%; +} + +.password-toggle-btn { + position: absolute; + right: 16px; + top: 50%; + transform: translateY(-50%); + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 4px; +} + +/* 輸入框標籤 */ +.input-label { + display: block; + margin-bottom: var(--space-2); + font-weight: 600; + color: var(--text-primary); + font-size: var(--text-sm); +} + +.input-label.required::after { + content: ' *'; + color: var(--error-red); +} +``` + +#### 表單驗證組件 +```css +.form-validation-message { + margin-top: var(--space-1); + font-size: var(--text-xs); + display: flex; + align-items: center; + gap: var(--space-1); +} + +.form-validation-message.error { + color: var(--error-red); +} + +.form-validation-message.success { + color: var(--success-green); +} + +.form-validation-message.warning { + color: var(--warning-yellow); +} + +.form-validation-message::before { + font-size: 1em; +} + +.form-validation-message.error::before { + content: '⚠️'; +} + +.form-validation-message.success::before { + content: '✅'; +} + +.form-validation-message.warning::before { + content: '⚡'; +} + +/* 即時驗證指示器 */ +.input-validation-indicator { + position: absolute; + right: 16px; + top: 50%; + transform: translateY(-50%); + width: 20px; + height: 20px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: var(--text-xs); +} + +.input-validation-indicator.checking { + background: var(--warning-yellow); + animation: pulse 1s infinite; +} + +.input-validation-indicator.valid { + background: var(--success-green); + color: white; +} + +.input-validation-indicator.invalid { + background: var(--error-red); + color: white; +} ``` #### 輸入框狀態 @@ -321,6 +428,372 @@ - [ ] **錯誤狀態**: 紅色邊框,搭配錯誤訊息 - [ ] **成功狀態**: 綠色邊框,表示輸入正確 - [ ] **禁用狀態**: 灰色背景,無法互動 +- [ ] **載入狀態**: 顯示驗證進度指示器 +- [ ] **必填狀態**: 標籤顯示紅色星號標記 + +#### 社交登入按鈕組件 *(新增用戶認證功能)* +```css +.social-login-container { + display: flex; + flex-direction: column; + gap: var(--space-3); + margin: var(--space-6) 0; +} + +.social-login-button { + display: flex; + align-items: center; + justify-content: center; + gap: var(--space-3); + width: 100%; + padding: 16px 24px; + border-radius: var(--radius-lg); + font-weight: 600; + font-size: var(--text-base); + border: 2px solid transparent; + cursor: pointer; + transition: all 0.3s ease; + position: relative; + overflow: hidden; +} + +.social-login-button::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: left 0.6s ease; +} + +.social-login-button:hover::before { + left: 100%; +} + +.social-login-button.google { + background: #ffffff; + color: #1f1f1f; + border-color: #dadce0; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.social-login-button.google:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + transform: translateY(-2px); +} + +.social-login-button.facebook { + background: #1877f2; + color: white; + border-color: #1877f2; +} + +.social-login-button.facebook:hover { + background: #166fe5; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(24, 119, 242, 0.3); +} + +.social-login-button.apple { + background: #000000; + color: white; + border-color: #000000; +} + +.social-login-button.apple:hover { + background: #1a1a1a; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); +} + +.social-login-icon { + width: 24px; + height: 24px; + flex-shrink: 0; +} + +/* 分隔線設計 */ +.login-divider { + display: flex; + align-items: center; + margin: var(--space-6) 0; + color: var(--text-secondary); + font-size: var(--text-sm); +} + +.login-divider::before, +.login-divider::after { + content: ''; + flex: 1; + height: 1px; + background: var(--divider); + margin: 0 var(--space-4); +} +``` + +### 模態視窗和彈窗組件 *(新增核心互動元素)* + +#### 基礎模態視窗設計 +```css +.modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.6); + backdrop-filter: blur(4px); + z-index: 2000; + display: flex; + align-items: center; + justify-content: center; + padding: var(--space-4); + animation: modalOverlayFadeIn 0.3s ease; +} + +@keyframes modalOverlayFadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +.modal-content { + background: var(--card-background); + border-radius: var(--radius-2xl); + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); + max-width: 90vw; + max-height: 90vh; + overflow-y: auto; + position: relative; + animation: modalContentSlideIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); +} + +@keyframes modalContentSlideIn { + from { + transform: scale(0.8) translateY(40px); + opacity: 0; + } + to { + transform: scale(1) translateY(0); + opacity: 1; + } +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--space-6) var(--space-6) var(--space-4) var(--space-6); + border-bottom: 1px solid var(--divider); +} + +.modal-title { + font-size: var(--text-xl); + font-weight: 700; + color: var(--text-primary); + margin: 0; +} + +.modal-close-btn { + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--background-secondary); + border: none; + color: var(--text-secondary); + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease; +} + +.modal-close-btn:hover { + background: var(--error-red); + color: white; + transform: scale(1.1); +} + +.modal-body { + padding: var(--space-6); +} + +.modal-footer { + display: flex; + justify-content: flex-end; + gap: var(--space-3); + padding: var(--space-4) var(--space-6) var(--space-6) var(--space-6); + border-top: 1px solid var(--divider); +} +``` + +#### 確認對話框設計 +```css +.confirmation-dialog { + text-align: center; + padding: var(--space-8); + max-width: 400px; +} + +.confirmation-icon { + width: 64px; + height: 64px; + margin: 0 auto var(--space-4) auto; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 2rem; +} + +.confirmation-icon.warning { + background: linear-gradient(135deg, #ff9800, #ff5722); + color: white; +} + +.confirmation-icon.danger { + background: linear-gradient(135deg, #f44336, #d32f2f); + color: white; +} + +.confirmation-icon.info { + background: linear-gradient(135deg, #2196f3, #1976d2); + color: white; +} + +.confirmation-title { + font-size: var(--text-xl); + font-weight: 700; + color: var(--text-primary); + margin-bottom: var(--space-3); +} + +.confirmation-message { + font-size: var(--text-base); + color: var(--text-secondary); + margin-bottom: var(--space-6); + line-height: 1.6; +} + +.confirmation-actions { + display: flex; + gap: var(--space-3); + justify-content: center; +} +``` + +#### 購買確認彈窗設計 *(基於商店功能規格)* +```css +.purchase-confirmation-modal { + max-width: 480px; + width: 100%; +} + +.purchase-item-preview { + display: flex; + align-items: center; + gap: var(--space-4); + padding: var(--space-4); + background: var(--background-secondary); + border-radius: var(--radius-lg); + margin-bottom: var(--space-4); +} + +.purchase-item-icon { + width: 64px; + height: 64px; + border-radius: var(--radius-lg); + background: linear-gradient(135deg, var(--primary-teal), var(--primary-teal-light)); + display: flex; + align-items: center; + justify-content: center; + font-size: 2rem; +} + +.purchase-item-details { + flex: 1; +} + +.purchase-item-name { + font-size: var(--text-lg); + font-weight: 700; + color: var(--text-primary); + margin-bottom: var(--space-1); +} + +.purchase-item-description { + font-size: var(--text-sm); + color: var(--text-secondary); + margin-bottom: var(--space-2); +} + +.purchase-price-info { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--space-4); + background: rgba(0, 229, 204, 0.1); + border-radius: var(--radius-lg); + margin-bottom: var(--space-4); +} + +.purchase-quantity-selector { + display: flex; + align-items: center; + gap: var(--space-2); +} + +.quantity-btn { + width: 32px; + height: 32px; + border-radius: 50%; + border: 2px solid var(--primary-teal); + background: transparent; + color: var(--primary-teal); + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: 700; + transition: all 0.3s ease; +} + +.quantity-btn:hover { + background: var(--primary-teal); + color: white; +} + +.quantity-display { + min-width: 40px; + text-align: center; + font-weight: 700; + color: var(--text-primary); +} + +.purchase-total { + font-size: var(--text-xl); + font-weight: 700; + color: var(--primary-teal); +} + +.purchase-balance-info { + display: flex; + justify-content: space-between; + font-size: var(--text-sm); + color: var(--text-secondary); + margin-bottom: var(--space-4); +} + +.balance-insufficient { + color: var(--error-red); + font-weight: 600; +} +``` ### 卡片組件 @@ -354,6 +827,354 @@ - [ ] **詞彙卡片**: 翻轉式設計、學習進度、收藏功能 - [ ] **成就徽章**: 圓形設計、發光效果、等級色彩區分 +#### 商店道具卡片設計 *(基於道具商店規格)* +```css +.shop-item-card { + background: var(--card-background); + border-radius: var(--radius-xl); + padding: var(--space-6); + border: 2px solid var(--divider); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + cursor: pointer; + position: relative; + overflow: hidden; +} + +.shop-item-card:hover { + transform: translateY(-8px); + border-color: var(--primary-teal); + box-shadow: 0 12px 40px rgba(0, 229, 204, 0.3); +} + +.shop-item-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(90deg, var(--primary-teal), var(--accent-violet)); + transform: translateX(-100%); + transition: transform 0.4s ease; +} + +.shop-item-card:hover::before { + transform: translateX(0); +} + +.shop-item-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--space-4); +} + +.shop-item-icon { + width: 56px; + height: 56px; + border-radius: var(--radius-lg); + background: linear-gradient(135deg, var(--primary-teal), var(--primary-teal-light)); + display: flex; + align-items: center; + justify-content: center; + font-size: 1.8rem; + box-shadow: 0 4px 12px rgba(0, 229, 204, 0.3); +} + +.shop-item-badge { + background: var(--accent-violet); + color: white; + padding: var(--space-1) var(--space-2); + border-radius: var(--radius-full); + font-size: var(--text-xs); + font-weight: 600; +} + +.shop-item-badge.hot { + background: linear-gradient(135deg, #ff6b35, #f7931e); + animation: hotBadgePulse 2s ease-in-out infinite; +} + +.shop-item-badge.new { + background: linear-gradient(135deg, #4caf50, #2e7d32); +} + +.shop-item-badge.limited { + background: linear-gradient(135deg, #e91e63, #ad1457); +} + +@keyframes hotBadgePulse { + 0%, 100% { transform: scale(1); } + 50% { transform: scale(1.1); } +} + +.shop-item-title { + font-size: var(--text-lg); + font-weight: 700; + color: var(--text-primary); + margin-bottom: var(--space-2); +} + +.shop-item-description { + font-size: var(--text-sm); + color: var(--text-secondary); + margin-bottom: var(--space-4); + line-height: 1.5; +} + +.shop-item-price-section { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--space-4); +} + +.shop-item-price { + display: flex; + align-items: center; + gap: var(--space-2); +} + +.shop-item-price-current { + font-size: var(--text-xl); + font-weight: 700; + color: var(--primary-teal); + display: flex; + align-items: center; + gap: var(--space-1); +} + +.shop-item-price-original { + font-size: var(--text-sm); + color: var(--text-secondary); + text-decoration: line-through; +} + +.shop-item-discount { + background: var(--error-red); + color: white; + padding: var(--space-1) var(--space-2); + border-radius: var(--radius-sm); + font-size: var(--text-xs); + font-weight: 600; +} + +.diamond-icon { + width: 20px; + height: 20px; + color: var(--primary-teal); +} + +.shop-item-bundle-info { + background: rgba(0, 229, 204, 0.1); + border: 1px solid rgba(0, 229, 204, 0.3); + border-radius: var(--radius-md); + padding: var(--space-2) var(--space-3); + font-size: var(--text-xs); + color: var(--primary-teal); + font-weight: 600; + margin-bottom: var(--space-4); +} + +.shop-item-actions { + display: flex; + gap: var(--space-2); +} + +.shop-item-btn-primary { + flex: 1; + background: var(--primary-teal); + color: var(--background-dark); + border: none; + padding: var(--space-3) var(--space-4); + border-radius: var(--radius-lg); + font-weight: 700; + cursor: pointer; + transition: all 0.3s ease; +} + +.shop-item-btn-primary:hover { + background: var(--primary-teal-light); + transform: translateY(-2px); +} + +.shop-item-btn-secondary { + background: transparent; + color: var(--text-secondary); + border: 1px solid var(--divider); + padding: var(--space-2); + border-radius: var(--radius-md); + cursor: pointer; + transition: all 0.3s ease; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; +} + +.shop-item-btn-secondary:hover { + color: var(--primary-teal); + border-color: var(--primary-teal); +} +``` + +#### 學習進度組件設計 *(基於學習系統規格)* +```css +.progress-card { + background: var(--card-background); + border-radius: var(--radius-xl); + padding: var(--space-6); + border: 1px solid var(--divider); + position: relative; + overflow: hidden; +} + +.progress-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--space-4); +} + +.progress-title { + font-size: var(--text-lg); + font-weight: 700; + color: var(--text-primary); +} + +.progress-percentage { + font-size: var(--text-2xl); + font-weight: 900; + color: var(--primary-teal); + position: relative; +} + +.progress-percentage::after { + content: '%'; + font-size: 0.6em; + margin-left: 2px; +} + +.progress-bar-container { + background: var(--background-secondary); + border-radius: var(--radius-full); + height: 12px; + overflow: hidden; + margin-bottom: var(--space-4); + position: relative; +} + +.progress-bar { + height: 100%; + background: linear-gradient(90deg, var(--primary-teal), var(--primary-teal-light)); + border-radius: var(--radius-full); + position: relative; + transition: width 1.5s cubic-bezier(0.4, 0, 0.2, 1); +} + +.progress-bar::after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); + animation: progressShimmer 2s ease-in-out infinite; +} + +@keyframes progressShimmer { + 0% { transform: translateX(-100%); } + 100% { transform: translateX(100%); } +} + +.progress-stats { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); + gap: var(--space-4); + margin-bottom: var(--space-4); +} + +.progress-stat { + text-align: center; +} + +.progress-stat-value { + font-size: var(--text-xl); + font-weight: 700; + color: var(--text-primary); + margin-bottom: var(--space-1); +} + +.progress-stat-label { + font-size: var(--text-xs); + color: var(--text-secondary); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.progress-milestones { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: var(--space-4); + padding-top: var(--space-4); + border-top: 1px solid var(--divider); +} + +.milestone { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--space-2); + opacity: 0.5; + transition: all 0.3s ease; +} + +.milestone.achieved { + opacity: 1; +} + +.milestone.current { + opacity: 1; + transform: scale(1.1); +} + +.milestone-icon { + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--divider); + display: flex; + align-items: center; + justify-content: center; + font-size: 1rem; + color: var(--text-secondary); + transition: all 0.3s ease; +} + +.milestone.achieved .milestone-icon { + background: var(--primary-teal); + color: white; +} + +.milestone.current .milestone-icon { + background: var(--accent-violet); + color: white; + box-shadow: 0 0 20px rgba(155, 89, 182, 0.5); +} + +.milestone-label { + font-size: var(--text-xs); + color: var(--text-secondary); + font-weight: 600; + text-align: center; + max-width: 60px; +} +``` + ### 導航組件 #### 底部導航列 @@ -397,6 +1218,385 @@ - [ ] **排行榜**: 獎盃圖示,社交競爭和好友 - [ ] **個人中心**: 用戶頭像,統計和設定 +### 通知和反饋組件 *(新增系統反饋機制)* + +#### Toast 通知設計 +```css +.toast-container { + position: fixed; + top: var(--space-4); + right: var(--space-4); + z-index: 3000; + display: flex; + flex-direction: column; + gap: var(--space-2); + pointer-events: none; +} + +.toast { + background: var(--card-background); + border-radius: var(--radius-lg); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); + padding: var(--space-4); + min-width: 300px; + max-width: 400px; + pointer-events: auto; + animation: toastSlideIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); + position: relative; + overflow: hidden; + border-left: 4px solid var(--info-cyan); +} + +.toast.success { + border-left-color: var(--success-green); +} + +.toast.warning { + border-left-color: var(--warning-yellow); +} + +.toast.error { + border-left-color: var(--error-red); +} + +@keyframes toastSlideIn { + from { + transform: translateX(100%); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } +} + +.toast-header { + display: flex; + align-items: center; + gap: var(--space-3); + margin-bottom: var(--space-2); +} + +.toast-icon { + width: 24px; + height: 24px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.9rem; + flex-shrink: 0; +} + +.toast.success .toast-icon { + background: var(--success-green); + color: white; +} + +.toast.warning .toast-icon { + background: var(--warning-yellow); + color: var(--background-dark); +} + +.toast.error .toast-icon { + background: var(--error-red); + color: white; +} + +.toast.info .toast-icon { + background: var(--info-cyan); + color: white; +} + +.toast-title { + font-size: var(--text-base); + font-weight: 700; + color: var(--text-primary); + flex: 1; +} + +.toast-close { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: var(--space-1); + border-radius: var(--radius-sm); + transition: all 0.3s ease; +} + +.toast-close:hover { + background: var(--background-secondary); + color: var(--text-primary); +} + +.toast-message { + font-size: var(--text-sm); + color: var(--text-secondary); + line-height: 1.5; +} + +.toast-progress { + position: absolute; + bottom: 0; + left: 0; + height: 3px; + background: var(--primary-teal); + border-radius: 0 0 var(--radius-lg) var(--radius-lg); + animation: toastProgress 5s linear forwards; +} + +@keyframes toastProgress { + from { + width: 100%; + } + to { + width: 0%; + } +} +``` + +#### 命條顯示組件 *(基於命條系統規格)* +```css +.life-points-display { + display: flex; + align-items: center; + gap: var(--space-2); + background: rgba(0, 0, 0, 0.6); + backdrop-filter: blur(8px); + border-radius: var(--radius-full); + padding: var(--space-2) var(--space-4); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); +} + +.life-points-icon { + width: 24px; + height: 24px; + color: var(--error-red); + animation: heartbeat 2s ease-in-out infinite; +} + +@keyframes heartbeat { + 0%, 100% { + transform: scale(1); + } + 50% { + transform: scale(1.1); + } +} + +.life-points-count { + display: flex; + gap: var(--space-1); +} + +.life-point { + width: 16px; + height: 16px; + border-radius: 50%; + transition: all 0.3s ease; + border: 2px solid var(--error-red); +} + +.life-point.active { + background: var(--error-red); + box-shadow: 0 0 8px rgba(231, 76, 60, 0.5); +} + +.life-point.lost { + background: transparent; + opacity: 0.3; +} + +.life-points-text { + font-size: var(--text-sm); + font-weight: 700; + color: white; + margin-left: var(--space-2); +} + +/* 命條不足警告 */ +.life-points-warning { + background: linear-gradient(135deg, var(--error-red), #c62828); + color: white; + padding: var(--space-3) var(--space-4); + border-radius: var(--radius-lg); + margin: var(--space-4) 0; + display: flex; + align-items: center; + gap: var(--space-3); + animation: warningPulse 2s ease-in-out infinite; +} + +@keyframes warningPulse { + 0%, 100% { + box-shadow: 0 0 0 0 rgba(231, 76, 60, 0.7); + } + 50% { + box-shadow: 0 0 20px 5px rgba(231, 76, 60, 0); + } +} + +.life-points-warning-icon { + font-size: 1.5rem; + animation: shake 0.8s ease-in-out infinite; +} + +@keyframes shake { + 0%, 100% { transform: translateX(0); } + 25% { transform: translateX(-5px); } + 75% { transform: translateX(5px); } +} + +.life-points-warning-text { + flex: 1; +} + +.life-points-warning-title { + font-weight: 700; + margin-bottom: var(--space-1); +} + +.life-points-warning-message { + font-size: var(--text-sm); + opacity: 0.9; +} +``` + +#### 資源不足提示組件 +```css +.resource-insufficient-card { + background: linear-gradient(135deg, #ff5722 0%, #d32f2f 100%); + color: white; + border-radius: var(--radius-2xl); + padding: var(--space-8); + text-align: center; + max-width: 400px; + margin: 0 auto; + position: relative; + overflow: hidden; +} + +.resource-insufficient-card::before { + content: ''; + position: absolute; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%); + animation: resourceWarningGlow 3s ease-in-out infinite; +} + +@keyframes resourceWarningGlow { + 0%, 100% { + opacity: 0.3; + transform: scale(1); + } + 50% { + opacity: 0.6; + transform: scale(1.1); + } +} + +.resource-insufficient-icon { + width: 80px; + height: 80px; + margin: 0 auto var(--space-4) auto; + border-radius: 50%; + background: rgba(255, 255, 255, 0.2); + display: flex; + align-items: center; + justify-content: center; + font-size: 2.5rem; + position: relative; + z-index: 1; +} + +.resource-insufficient-title { + font-size: var(--text-2xl); + font-weight: 700; + margin-bottom: var(--space-3); + position: relative; + z-index: 1; +} + +.resource-insufficient-message { + font-size: var(--text-base); + margin-bottom: var(--space-6); + opacity: 0.9; + line-height: 1.6; + position: relative; + z-index: 1; +} + +.resource-insufficient-stats { + display: flex; + justify-content: space-around; + background: rgba(255, 255, 255, 0.1); + border-radius: var(--radius-lg); + padding: var(--space-4); + margin-bottom: var(--space-6); + position: relative; + z-index: 1; +} + +.resource-stat { + text-align: center; +} + +.resource-stat-label { + font-size: var(--text-xs); + opacity: 0.8; + margin-bottom: var(--space-1); + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.resource-stat-value { + font-size: var(--text-xl); + font-weight: 700; +} + +.resource-solutions { + display: flex; + flex-direction: column; + gap: var(--space-3); + position: relative; + z-index: 1; +} + +.resource-solution-btn { + background: rgba(255, 255, 255, 0.2); + border: 2px solid rgba(255, 255, 255, 0.3); + color: white; + padding: var(--space-3) var(--space-4); + border-radius: var(--radius-lg); + font-weight: 600; + cursor: pointer; + transition: all 0.3s ease; + backdrop-filter: blur(10px); +} + +.resource-solution-btn:hover { + background: rgba(255, 255, 255, 0.3); + border-color: rgba(255, 255, 255, 0.5); + transform: translateY(-2px); +} + +.resource-solution-btn.primary { + background: rgba(255, 255, 255, 0.9); + color: var(--error-red); + border-color: white; +} + +.resource-solution-btn.primary:hover { + background: white; + transform: translateY(-4px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); +} +``` + ## 互動設計規範 ### 情境對話介面設計 *(新增核心功能)* @@ -1356,6 +2556,15 @@ --- -**最後更新**: 2024年9月5日 -**基於實際設計**: 05_views 目錄中的71個畫面設計 -**審查週期**: 每兩週檢討一次,與實際設計保持同步 \ No newline at end of file +**最後更新**: 2025年9月12日 +**基於實際設計**: 完整整合function-specs規格,包含用戶認證、商店系統、學習流程等95個UI視圖 +**新增組件系統**: +- 用戶認證組件(登入表單、社交登入、密碼驗證) +- 商店道具組件(商品卡片、購買確認、價格顯示) +- 學習進度組件(進度條、里程碑、統計儀表板) +- 模態視窗系統(基礎模態、確認對話框、購買彈窗) +- 系統通知組件(Toast通知、命條顯示、資源警告) +- 完整表單驗證系統(即時驗證、錯誤提示、成功反饋) + +**審查週期**: 每兩週檢討一次,與實際設計保持同步 +**整合狀態**: ✅ 已與所有function-specs規格完整整合 \ No newline at end of file diff --git a/prototypes/screens/phase1/01-login.html b/prototypes/screens/phase1/01-login.html deleted file mode 100644 index f3280c2..0000000 --- a/prototypes/screens/phase1/01-login.html +++ /dev/null @@ -1,279 +0,0 @@ - - -
- - -用英語演出你的故事
-開始你的英語學習之旅
-讓我們了解您的學習需求
-- Drama Ling 結合情境對話和AI智能分析,讓您在真實場景中練習英語,提升溝通能力。我們將根據您的學習目標和程度,為您量身打造個人化的學習路徑。 -
-- 根據您的英語程度和學習目標,我們為您推薦了以下學習路徑。每個路徑都經過精心設計,幫助您循序漸進地提升英語能力。 -
-- 從基礎問候開始,逐步掌握購物、用餐、問路等日常情境對話,建立英語溝通的信心基礎。 -
- -- 專為職場人士設計,涵蓋會議討論、簡報演示、商務談判等專業場景,提升職場競爭力。 -
- -- 為愛好旅遊的您量身打造,掌握機場、飯店、餐廳、景點等旅遊必備對話技能。 -
- -- 針對TOEIC、IELTS、TOEFL等英語檢定考試,重點強化口說測驗的應答技巧和流暢度。 -
- -請先選擇一個學習路徑
-掌握日常生活中最常用的基礎對話技巧
- - -- 本展示包含 Drama Ling 核心學習流程的完整用戶體驗,從用戶註冊到四關學習系統的主要界面。 - 每個畫面都基於完整的 UI/UX 設計系統,整合了 102 個 UI 元件,並實現了 Duolingo 風格的遊戲化學習體驗。 - 所有畫面均採用響應式設計,支援桌面和行動裝置。 -
-- 完整的用戶認證界面,支援電子郵件登入和 Google OAuth,包含表單驗證和載入狀態處理。 -
-- 詳細的註冊流程,包含個人資料填寫、年齡選擇、服務條款確認等完整用戶資料收集。 -
-- 三步驟引導流程,收集用戶學習目標和英語程度,為後續學習路徑推薦提供數據基礎。 -
-- 四種專業學習路徑選擇,包含日常對話、商務英語、旅遊英語、考試準備等不同學習方向。 -
-- Drama Ling 的核心學習界面,展示13個階段的線性闖關系統,每個劇本包含4個循序漸進的學習關卡。 -
-提升學習效率,解鎖更多可能
-- 提升學習效果,讓英語學習更輕鬆有趣。這些道具能在四關闖關過程中提供即時幫助。 -
- -- 在情境對話中獲得AI智能回覆建議,幫助您選擇最恰當的回應。每次使用提供3個優質回覆選項。 -
- -- 遇到不熟悉的詞彙或句子時,一鍵查看中文翻譯和詳細解釋。包含文化背景說明。 -
- -- AI語法檢查工具,即時分析您的句子結構,提供語法改善建議和正確用法示例。 -
- -- 額外的發音練習機會,包含音標指導和發音技巧提示。AI評分系統提供詳細改善建議。 -
- -- 快速恢復生命點數,持續您的學習進度。不同套餐適合不同學習強度的需求。 -
- -- 立即恢復1個生命點數,繼續您的學習之旅。適合偶爾使用的學習者。 -
- -- 將生命點數恢復至滿格狀態,適合密集學習時使用。比單次購買更划算。 -
- -- 24小時內失敗不消耗生命點數,安心挑戰困難關卡。適合想要突破瓶頸的學習者。 -
- -- 在限時挑戰和競技模式中獲得優勢,提升排行榜名次和獎勵獲得。 -
- -- 在300秒限時挑戰中暫停計時5秒,爭取更多思考時間。每次挑戰可使用1次。 -
- -- 為限時挑戰增加30秒額外時間,完成更多題目獲得更高分數。 -
- -- 接下來的3次學習獲得雙倍經驗值,快速提升等級和解鎖新內容。 -
- -- 選擇最適合您的鑽石套餐,享受更豐富的學習體驗。首次購買享有新手優惠。 -
- -選擇最適合您的套餐,立即開始豐富的學習體驗
-- 生命點數是您學習進度的守護者,合理管理生命點數讓學習更有節奏感 -
-請輸入您的帳戶資訊以重置密碼
+ +加入 Drama Ling,開始您的沉浸式英語學習之旅
+ ++ 掌握餐廳點餐情境的5個核心詞彙,包含發音、定義和實際使用情境 +
+完成四個關卡,掌握完整的對話技能
++ To suggest that someone or something would be good or suitable for a particular job or purpose, or to suggest that a particular action should be done. +
++ "What would you recommend for someone who's never been here before?" +
+