feat: improve student practice experience

This commit is contained in:
Codex
2026-06-29 15:12:35 +08:00
parent 134f7830dd
commit b96897b2be
12 changed files with 443 additions and 63 deletions

View File

@@ -232,6 +232,69 @@ tenant:<tenantId>:theme
- `PRACTICE_SESSION_QUESTION_FORBIDDEN`:说明提交答案的题目不在本次 session 快照内,应清理本地异常进度并重新开始。
- 提交答案必须传 `practiceSessionId`;后端会拒绝不属于本人有效 session 的题目。
## 提交答案契约
客观题、主观题都统一调用:
```text
POST /api/learning/answers
```
单选/判断题示例:
```json
{
"practiceSessionId": "...",
"questionId": "...",
"selectedOptions": ["1"]
}
```
多选题示例:
```json
{
"practiceSessionId": "...",
"questionId": "...",
"selectedOptions": ["0", "2"]
}
```
填空、简答、翻译、案例分析等无客观选项的主观题,前端可以先展示参考答案,再让学生自评:
```json
{
"practiceSessionId": "...",
"questionId": "...",
"answerText": "学生自己的作答或备注",
"selfJudgedCorrect": true
}
```
响应关键字段:
```json
{
"item": {
"id": "...",
"questionId": "...",
"selectedOptions": [],
"answerText": "学生自己的作答或备注",
"isCorrect": true,
"answeredAt": "2026-06-29T00:00:00.000Z",
"selfJudged": true
}
}
```
前端处理规则:
- 客观题不要传 `selfJudgedCorrect`。后端会用题库标准答案判分,传了会返回 `SELF_JUDGMENT_NOT_ALLOWED`
- 主观题自评也由后端落库为 `answer_records.is_correct`,错题本、练习统计、模考报告都以后端返回为准。
- 前端可以在本地缓存当前 session 的答题卡和当前题号,用于刷新恢复体验;但交卷报告只以后端 `answer_records` 和 session 快照计算。
- `answerText` 只保存学生作答或备注,不要为了让后端判对而把参考答案塞进去。
- 重复答题时,报告会取同一题最新一条 `answer_records`,页面应以最近一次提交结果展示。
## 学生端支付与售后契约
学生端 `pages/student/checkout/index``pages/student/order-detail/index` 已接第一版。前端只传递套餐、地区、优惠券和支付 provider最终金额、优惠抵扣、订单状态、支付记录、权益发放都以后端返回为准。