dramaling-app/docs/04_technical/api/language-levels.md

269 lines
6.5 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.

# 語言程度晉階系統 API
## 概述
語言程度晉階系統API負責管理用戶語言水平的評估和晉升包括程度追蹤、滿星對話要求和晉階儀式。
## API 端點
### 獲取語言程度狀態
```http
GET /api/v1/language-level/status
Authorization: Bearer <access_token>
Response 200 OK
{
"success": true,
"data": {
"current_level": {
"level_id": "LEVEL_A2_2",
"level_number": 3,
"cefr_level": "A2",
"level_name": "A2中級",
"description": "能夠理解和使用日常用語和基本短語",
"learning_focus": [
"基礎日常對話",
"簡單描述個人背景",
"表達基本需求"
]
},
"advancement_progress": {
"current_level_requirements": {
"required_perfect_dialogues": 10,
"completed_perfect_dialogues": 7,
"completion_percentage": 70,
"remaining_dialogues": 3
},
"total_progress": {
"total_required": 25,
"total_completed": 22,
"overall_percentage": 88
}
},
"next_level": {
"level_id": "LEVEL_B1_1",
"level_number": 4,
"cefr_level": "B1",
"level_name": "B1初級",
"benefits": [
"解鎖更豐富的對話場景",
"更複雜的語言結構練習",
"進階語法訓練"
]
}
}
}
```
### 滿星對話完成檢查
```http
POST /api/v1/language-level/perfect-dialogue-completed
Authorization: Bearer <access_token>
{
"dialogue_result": {
"dialogue_id": "DLG_20240905_001",
"scenario_id": "SC_Restaurant_01",
"final_score": 95,
"stars_earned": 3,
"is_perfect_score": true,
"evaluation_scores": {
"grammar_score": 95,
"semantic_score": 96,
"fluency_score": 94,
"vocabulary_score": 97
}
}
}
Response 200 OK
{
"success": true,
"data": {
"level_progress_updated": true,
"new_progress": {
"current_level_dialogues": 8,
"total_completed": 23
},
"advancement_check": {
"ready_for_advancement": false,
"remaining_requirements": {
"perfect_dialogues_needed": 2
}
},
"level_up_triggered": false
}
}
```
### 執行語言程度晉階
```http
POST /api/v1/language-level/advance
Authorization: Bearer <access_token>
Response 200 OK
{
"success": true,
"data": {
"advancement_completed": true,
"previous_level": {
"level_id": "LEVEL_A2_2",
"cefr_level": "A2"
},
"new_level": {
"level_id": "LEVEL_B1_1",
"cefr_level": "B1",
"level_name": "B1初級",
"description": "能夠處理日常生活中大部分語言需求"
},
"rewards_granted": {
"experience_gained": 500,
"achievements_unlocked": ["language_advancement_b1"],
"content_unlocked": {
"scenarios": [
{
"scenario_id": "SC_Business_Meeting_01",
"title": "商務會議",
"difficulty": "B1"
}
]
}
},
"advancement_date": "2024-09-05T17:00:00Z"
}
}
```
### 獲取語言程度歷史
```http
GET /api/v1/language-level/history
Authorization: Bearer <access_token>
Response 200 OK
{
"success": true,
"data": {
"advancement_history": [
{
"level_id": "LEVEL_A1_1",
"level_name": "A1初級",
"cefr_level": "A1",
"started_at": "2024-01-15T10:00:00Z",
"completed_at": "2024-02-28T16:30:00Z",
"duration_days": 44,
"perfect_dialogues_completed": 10,
"total_scenarios_completed": 25
},
{
"level_id": "LEVEL_A2_1",
"level_name": "A2初級",
"cefr_level": "A2",
"started_at": "2024-02-28T16:30:00Z",
"completed_at": "2024-06-15T14:20:00Z",
"duration_days": 107,
"perfect_dialogues_completed": 25,
"total_scenarios_completed": 45
}
],
"performance_analysis": {
"average_advancement_days": 75.5,
"total_perfect_dialogues": 67,
"strongest_areas": ["vocabulary_usage", "fluency"],
"improvement_areas": ["grammar_complexity", "cultural_awareness"],
"learning_velocity": "steady"
}
}
}
```
### 獲取各程度評估標準
```http
GET /api/v1/language-level/criteria
Authorization: Bearer <access_token>
Response 200 OK
{
"success": true,
"data": {
"evaluation_criteria": {
"semantic_appropriateness": {
"description": "語意合適度",
"weight": 25,
"factors": [
"上下文理解準確性",
"回應內容相關性",
"情境適當性"
]
},
"grammar_accuracy": {
"description": "語法錯誤率",
"weight": 25,
"factors": [
"句法結構正確性",
"動詞時態使用",
"語序和搭配"
]
},
"fluency": {
"description": "表達流暢度",
"weight": 25,
"factors": [
"語言自然度",
"停頓和節奏",
"表達連貫性"
]
},
"vocabulary_score": {
"description": "詞彙分數",
"weight": 25,
"factors": [
"詞彙多樣性",
"詞彙準確性",
"適當詞彙選擇"
]
}
},
"level_standards": {
"A1": {
"minimum_score": 60,
"focus_areas": ["基礎詞彙", "簡單句型", "基本溝通"]
},
"A2": {
"minimum_score": 70,
"focus_areas": ["日常對話", "基本語法", "情境理解"]
},
"B1": {
"minimum_score": 75,
"focus_areas": ["工作學習", "意見表達", "經驗描述"]
},
"B2": {
"minimum_score": 80,
"focus_areas": ["複雜主題", "抽象概念", "論述技巧"]
},
"C1": {
"minimum_score": 85,
"focus_areas": ["專業溝通", "文化理解", "精確表達"]
},
"C2": {
"minimum_score": 90,
"focus_areas": ["母語水準", "微妙差異", "專精表達"]
}
}
}
}
```
## 錯誤處理
### 語言程度晉階相關錯誤
- `LANGUAGE_LEVEL_NOT_FOUND`: 語言程度不存在
- `ADVANCEMENT_REQUIREMENTS_NOT_MET`: 不滿足晉階條件
- `ADVANCEMENT_ALREADY_COMPLETED`: 晉階已經完成
- `INVALID_PERFECT_DIALOGUE_DATA`: 無效的滿星對話數據
- `LEVEL_CALCULATION_ERROR`: 程度計算錯誤
- `ADVANCEMENT_CEREMONY_FAILED`: 晉階儀式顯示失敗
- `LEVEL_PROGRESS_SYNC_FAILED`: 程度進度同步失敗
---
**建立日期**: 2025-09-08
**API版本**: v1
**負責模組**: 語言程度晉階系統