forked from wangziqi/gongxue-base
feat: improve student practice experience
This commit is contained in:
@@ -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;最终金额、优惠抵扣、订单状态、支付记录、权益发放都以后端返回为准。
|
||||
|
||||
Reference in New Issue
Block a user