# 用戶認證功能規格文檔

## 📋 功能概述

**功能名稱**: 用戶認證與帳戶管理系統  
**建立日期**: 2025-09-08  
**最後更新**: 2025-09-08  
**負責團隊**: 產品/設計/開發  

### 主要功能
- 多元化註冊登入：支援電子郵件、社交媒體、手機號碼等方式
- 安全密碼管理：密碼重置、變更和安全性驗證機制
- 帳戶資料管理：個人資料編輯、隱私設定和偏好配置
- 多帳戶支援：帳戶切換、合併和管理功能
- 安全性保護：雙重驗證、登入歷史和異常檢測

### 適用場景
- 新用戶首次使用應用程式的註冊流程
- 既有用戶的日常登入和帳戶存取
- 忘記密碼或帳戶資訊的找回流程
- 多平台帳戶的統一管理和同步
- 帳戶安全性的維護和提升

### 與其他功能的關聯
- **學習進度系統**: 帳戶綁定學習記錄和成就數據
- **社交功能**: 好友關係和社群互動的身份基礎
- **訂閱系統**: 付費狀態和VIP權限的帳戶關聯
- **道具商店**: 購買記錄和虛擬資產的帳戶歸屬
- **個人化系統**: 學習偏好和介面設定的用戶配置

## 📱 涉及的UI畫面

### 主要畫面
1. **UI_Login_Main** - 主要登入頁面
2. **UI_SignUp_Main** - 用戶註冊頁面
3. **UI_PasswordReset_Form** - 密碼重置表單
4. **UI_PasswordReset_Popup** - 密碼重置確認彈窗
5. **UI_Account_List** - 帳戶列表管理頁面
6. **UI_Account_Option** - 帳戶選項設定頁面

### 輔助畫面  
1. **UI_Profile_Settings** - 個人資料設定頁面
2. **UI_Onboarding_Welcome** - 新用戶歡迎引導
3. **雙重驗證設定頁面** - 安全性強化功能
4. **隱私設定頁面** - 個人資料隱私控制

## 🎯 詳細畫面規格

### UI_Login_Main - 主要登入頁面

#### 功能說明
- **畫面目的**: 提供既有用戶安全快捷的登入體驗，支援多種認證方式
- **進入條件**: 應用程式啟動時檢測到未登入狀態，或用戶主動登出後
- **退出條件**: 成功完成身份驗證進入主應用，或切換到註冊流程

#### 畫面欄位細節

| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|---------|---------|------|--------|----------|----------|
| 電子郵件/用戶名 | String | 是 | - | 電子郵件格式或3-20字用戶名 | 始終顯示 |
| 密碼 | String | 是 | - | 8-50字，包含字母和數字 | 始終顯示 |
| 記住我選項 | Boolean | 否 | false | true/false | 始終顯示 |
| 自動登入選項 | Boolean | 否 | false | true/false | 記住我勾選後顯示 |
| 驗證碼 | String | 否 | - | 4-6位數字或字母 | 異常登入時顯示 |
| 錯誤提示訊息 | String | 否 | - | 錯誤訊息文字 | 登入失敗時顯示 |
| 登入歷史提示 | String | 否 | - | 上次登入資訊 | 成功登入用戶顯示 |

#### 互動元素

| 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 |
|---------|---------|----------|----------|------|
| 登入按鈕 | 按鈕 | 提交登入表單進行驗證 | 正常->載入中 | 主要行動按鈕 |
| Google登入按鈕 | 按鈕 | 跳轉Google OAuth流程 | - | 第三方登入選項 |
| Facebook登入按鈕 | 按鈕 | 跳轉Facebook OAuth流程 | - | 第三方登入選項 |
| Apple登入按鈕 | 按鈕 | 跳轉Apple Sign In流程 | - | iOS平台優先顯示 |
| 忘記密碼連結 | 連結 | 跳轉密碼重置流程 | - | 幫助用戶找回密碼 |
| 註冊帳號連結 | 連結 | 跳轉註冊頁面 | - | 新用戶註冊入口 |
| 顯示/隱藏密碼 | 按鈕 | 切換密碼顯示狀態 | 隱藏<->顯示 | 提升輸入體驗 |
| 遊客模式按鈕 | 按鈕 | 以遊客身份進入應用 | - | 功能限制的體驗模式 |

#### 使用者操作流程
1. **表單填寫**: 輸入帳號密碼 → 選擇記住選項 → 確認輸入無誤
2. **身份驗證**: 提交登入 → 系統驗證 → 安全性檢查 → 成功登入
3. **第三方登入**: 選擇第三方平台 → OAuth授權 → 帳戶綁定 → 完成登入
4. **異常處理**: 登入失敗 → 查看錯誤提示 → 修正資訊 → 重新嘗試

#### 異常狀況處理
- **密碼錯誤**: 顯示錯誤次數 → 3次後要求驗證碼 → 5次後暫時鎖定
- **帳號不存在**: 提示帳號不存在 → 引導到註冊頁面 → 或檢查輸入錯誤
- **網路問題**: 顯示連線錯誤 → 提供重試選項 → 或啟用離線模式
- **安全異常**: 檢測到異常登入 → 要求額外驗證 → 發送安全通知

### UI_SignUp_Main - 用戶註冊頁面

#### 功能說明
- **畫面目的**: 引導新用戶完成帳戶創建，收集必要資訊並建立學習檔案
- **進入條件**: 從登入頁面點擊註冊，或首次使用應用程式
- **退出條件**: 成功建立帳戶進入歡迎流程，或返回登入頁面

#### 畫面欄位細節

| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|---------|---------|------|--------|----------|----------|
| 電子郵件 | String | 是 | - | 有效電子郵件格式 | 始終顯示 |
| 用戶名 | String | 是 | - | 3-20字，僅字母數字底線 | 始終顯示 |
| 密碼 | String | 是 | - | 8-50字，包含大小寫字母、數字 | 始終顯示 |
| 確認密碼 | String | 是 | - | 必須與密碼欄位相同 | 始終顯示 |
| 真實姓名 | String | 否 | - | 2-50字 | 始終顯示 |
| 出生年月 | Date | 否 | - | 合理年齡範圍 | 始終顯示 |
| 學習目標 | Select | 否 | - | 預設選項清單 | 始終顯示 |
| 英語程度 | Select | 是 | "初學者" | 初學者/中級/高級 | 始終顯示 |
| 服務條款同意 | Boolean | 是 | false | 必須為true | 始終顯示 |
| 隱私政策同意 | Boolean | 是 | false | 必須為true | 始終顯示 |
| 行銷資訊同意 | Boolean | 否 | false | true/false | 始終顯示 |

#### 互動元素

| 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 |
|---------|---------|----------|----------|------|
| 註冊按鈕 | 按鈕 | 提交註冊表單 | 正常->載入中 | 驗證通過後啟用 |
| 用戶名檢查按鈕 | 按鈕 | 檢查用戶名可用性 | 正常->檢查中 | 即時驗證功能 |
| 密碼強度指示器 | 進度條 | 顯示密碼強度 | 弱->中->強 | 即時回饋 |
| 服務條款連結 | 連結 | 開啟服務條款頁面 | - | 在新視窗開啟 |
| 隱私政策連結 | 連結 | 開啟隱私政策頁面 | - | 在新視窗開啟 |
| 返回登入連結 | 連結 | 返回登入頁面 | - | 既有用戶快速通道 |
| Google快速註冊 | 按鈕 | Google帳戶快速建立 | - | 簡化註冊流程 |

### UI_PasswordReset_Form - 密碼重置表單

#### 功能說明
- **畫面目的**: 幫助忘記密碼的用戶安全地重設新密碼
- **進入條件**: 從登入頁面點擊"忘記密碼"連結
- **退出條件**: 成功重置密碼返回登入頁面，或取消返回登入

#### 畫面欄位細節

| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|---------|---------|------|--------|----------|----------|
| 電子郵件/用戶名 | String | 是 | - | 有效格式 | 第一步顯示 |
| 驗證碼 | String | 是 | - | 6位數字 | 第二步顯示 |
| 新密碼 | String | 是 | - | 8-50字，強度要求 | 第三步顯示 |
| 確認新密碼 | String | 是 | - | 必須與新密碼相同 | 第三步顯示 |
| 步驟指示器 | Number | 是 | 1 | 1-3 | 始終顯示 |

#### 互動元素

| 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 |
|---------|---------|----------|----------|------|
| 發送驗證碼按鈕 | 按鈕 | 發送郵件驗證碼 | 正常->發送中 | 60秒冷卻時間 |
| 驗證並繼續按鈕 | 按鈕 | 驗證碼確認進入下一步 | 正常->驗證中 | 驗證成功後進入重置 |
| 完成重置按鈕 | 按鈕 | 提交新密碼完成重置 | 正常->處理中 | 最終確認按鈕 |
| 重新發送按鈕 | 按鈕 | 重新發送驗證碼 | 禁用->啟用 | 冷卻時間後可用 |
| 返回登入按鈕 | 按鈕 | 取消重置返回登入 | - | 任何步驟都可返回 |

### UI_Account_List - 帳戶列表管理頁面

#### 功能說明
- **畫面目的**: 管理用戶的多個帳戶，支援帳戶切換和統一管理
- **進入條件**: 從個人設定進入帳戶管理，或多帳戶切換需求
- **退出條件**: 選擇目標帳戶完成切換，或完成帳戶管理操作

#### 畫面欄位細節

| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|---------|---------|------|--------|----------|----------|
| 當前活躍帳戶 | Object | 是 | - | 帳戶物件 | 始終顯示 |
| 關聯帳戶列表 | Array | 是 | [] | 帳戶陣列 | 有多帳戶時顯示 |
| 帳戶類型標記 | String | 是 | - | 本地/Google/Facebook/Apple | 每個帳戶顯示 |
| 最後登入時間 | DateTime | 是 | - | 日期時間格式 | 每個帳戶顯示 |
| 同步狀態 | String | 是 | "已同步" | 已同步/同步中/同步失敗 | 每個帳戶顯示 |

#### 互動元素

| 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 |
|---------|---------|----------|----------|------|
| 切換帳戶按鈕 | 按鈕 | 切換到選中帳戶 | 當前->目標 | 需要重新驗證 |
| 添加帳戶按鈕 | 按鈕 | 綁定新的登入方式 | - | 支援多平台綁定 |
| 帳戶設定按鈕 | 按鈕 | 進入特定帳戶設定 | - | 跳轉到帳戶選項 |
| 解除綁定按鈕 | 按鈕 | 解除帳戶關聯 | 綁定->解綁 | 需要確認操作 |
| 同步資料按鈕 | 按鈕 | 手動同步學習資料 | 正常->同步中 | 確保資料一致性 |
| 合併帳戶按鈕 | 按鈕 | 合併重複帳戶資料 | - | 高級帳戶管理功能 |

## 🔄 完整使用者流程

### 新用戶註冊流程
```
[首次開啟應用] → [選擇註冊方式]
    ↓
[UI_SignUp_Main 填寫註冊資訊] → [驗證並建立帳戶]
    ↓
[UI_Onboarding_Welcome 歡迎引導] → [進入主應用功能]
```

### 用戶登入流程
```
[開啟應用] → [UI_Login_Main 登入頁面]
    ↓
[選擇登入方式] → [身份驗證] → [安全檢查]
    ↓
[成功登入] → [載入用戶資料] → [進入主功能]
```

### 密碼重置流程
```
[忘記密碼] → [UI_PasswordReset_Form 重置表單]
    ↓
[輸入帳號] → [發送驗證碼] → [驗證身份]
    ↓
[設定新密碼] → [UI_PasswordReset_Popup 成功確認] → [返回登入]
```

### 帳戶管理流程
```
[個人設定] → [UI_Account_List 帳戶列表]
    ↓
[選擇管理操作] → [UI_Account_Option 帳戶選項]
    ↓
[完成設定變更] → [同步更新] → [確認生效]
```

## 📊 商業邏輯規則

### 帳戶安全策略
- **密碼要求**: 最少8位，包含大小寫字母、數字和特殊字符
- **登入限制**: 5次錯誤後鎖定1小時，異常IP需要額外驗證
- **會話管理**: 7天免登入期限，跨設備最多3個活躍會話
- **資料加密**: 敏感資訊AES-256加密，傳輸TLS 1.3保護

### 用戶體驗優化
- **記住登入**: 本地設備保存登入狀態，提升使用便利性
- **快速註冊**: 第三方OAuth整合，降低註冊門檻
- **帳戶合併**: 智能檢測重複帳戶，提供合併建議
- **資料同步**: 跨設備即時同步學習進度和個人設定

### 隱私保護機制
- **最小化收集**: 僅收集功能必需的個人資訊
- **用戶控制**: 提供完整的資料查看、修改、刪除權限
- **透明化處理**: 清楚說明資料用途和處理方式
- **合規要求**: 遵循GDPR、CCPA等國際隱私法規

## 🧪 測試要點

### 功能測試
- [ ] 各種登入方式都能正常運作
- [ ] 註冊流程完整且資料正確保存
- [ ] 密碼重置郵件發送和驗證有效
- [ ] 帳戶切換功能正常且資料同步
- [ ] 安全驗證機制有效防護
- [ ] 第三方OAuth整合穩定可靠

### 安全性測試
- [ ] 密碼加密存儲和傳輸安全
- [ ] SQL注入和XSS攻擊防護
- [ ] 暴力破解和撞庫攻擊防禦
- [ ] 會話劫持和CSRF攻擊保護
- [ ] 敏感資料洩露風險評估

### 用戶體驗測試
- [ ] 表單填寫體驗流暢直觀
- [ ] 錯誤提示資訊清楚有幫助
- [ ] 載入時間和響應速度acceptable
- [ ] 跨設備登入同步快速準確
- [ ] 輔助功能和無障礙設計完善

## 📝 開發注意事項

### 前端開發
- 敏感資訊輸入需要即時驗證和安全處理
- 第三方OAuth需要正確處理回調和錯誤狀態
- 表單驗證需要前後端雙重檢查
- 會話狀態需要安全存儲和定期檢查

### 後端開發
- 用戶密碼需要使用bcrypt等安全雜湊算法
- JWT令牌需要適當的過期時間和刷新機制
- 用戶資料需要嚴格的訪問控制和權限檢查
- 登入日誌需要完整記錄用於安全分析

### 整合注意事項
- 第三方服務需要處理服務中斷和API變更
- 資料庫操作需要事務處理和併發控制
- 郵件服務需要可靠的發送和重試機制
- 監控系統需要實時檢測異常登入行為

## 📚 參考資源

- **UI截圖**: 
  - `docs/02_design/views/UI_Login_Main.png`
  - `docs/02_design/views/UI_SignUp_Main.png`
  - `docs/02_design/views/UI_PasswordReset_Form.png`
  - `docs/02_design/views/UI_Account_List.png`
- **API文檔**: `docs/04_technical/api/authentication.md`
- **設計規範**: `docs/02_design/ui-ux-guidelines.md`
- **安全規範**: `docs/04_technical/security-guidelines.md`

## 📅 版本歷史

| 版本 | 日期 | 修改內容 | 修改者 |
|-----|------|----------|--------|
| v1.0 | 2025-09-08 | 初始版本建立，完整用戶認證流程設計 | Claude AI |

---

**文檔狀態**: 🟢 已完成  
**最後檢查**: 2025-09-08  
**下次檢查**: 2025-09-15