forked from wangziqi/gongxue-base
feat: add automatic badge awards
This commit is contained in:
@@ -647,7 +647,17 @@ GET /api/tenant-admin/badge-grants?userId=...&badgeId=...
|
||||
POST /api/tenant-admin/badge-grants
|
||||
```
|
||||
|
||||
`PUT /api/tenant-admin/badges` 支持同租户内 `legacyId` 幂等更新;如果 `id` 与 `legacyId` 指向不同记录会返回 `BADGE_ID_CONFLICT`。`POST /api/tenant-admin/badge-grants` 对同一用户同一勋章幂等,不会重复生成多条发放记录。当前后端支持手动发放,自动发放规则后续由 worker/事件流补齐。
|
||||
`PUT /api/tenant-admin/badges` 支持同租户内 `legacyId` 幂等更新;如果 `id` 与 `legacyId` 指向不同记录会返回 `BADGE_ID_CONFLICT`。`POST /api/tenant-admin/badge-grants` 对同一用户同一勋章幂等,不会重复生成多条发放记录。
|
||||
|
||||
当前后端已支持第一批自动发放规则:
|
||||
|
||||
| unlockType | 推荐 conditionField | 触发时机 |
|
||||
| --- | --- | --- |
|
||||
| `check_in` | `checkInStreak` | `POST /api/profile/check-in` 真实签到成功后 |
|
||||
| `score` | `score` | 签到加分或反馈奖励积分成功后 |
|
||||
| `feedback_resolved` | `feedbackResolvedCount` | 租户后台把反馈处理为 `resolved` 后 |
|
||||
|
||||
规则使用 `conditionOperator` 的合法值 `gte`、`gt`、`lte`、`lt`、`eq`;`conditionValue` 为数字。触发成功的接口会返回 `autoBadges`,前端可据此弹出“获得勋章”提示;如果是重复签到、重复处理反馈或已获得过同一勋章,后端不会重复返回同一发放记录。
|
||||
|
||||
### 模考交卷与报告
|
||||
|
||||
@@ -1117,7 +1127,17 @@ POST /api/profile/check-in
|
||||
"pointsAdded": 10,
|
||||
"streak": 1,
|
||||
"score": 10,
|
||||
"lastCheckInDate": "2026-06-29"
|
||||
"lastCheckInDate": "2026-06-29",
|
||||
"autoBadges": [
|
||||
{
|
||||
"badgeId": "...",
|
||||
"badge": {
|
||||
"name": "连续签到",
|
||||
"category": "activity",
|
||||
"iconUrl": "https://..."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -1127,6 +1147,7 @@ POST /api/profile/check-in
|
||||
- `alreadyCheckedIn=true` 时展示今日已签到,不要本地再加分。
|
||||
- 积分明细调用 `GET /api/profile/score-events`。
|
||||
- 积分最终余额以后端 `score` 和流水为准,前端只做展示。
|
||||
- 如响应包含 `autoBadges`,可展示获得勋章弹层;不要在前端根据连续天数或积分自行判断勋章是否解锁。
|
||||
|
||||
题目页、资料页或视频页可提交反馈:
|
||||
|
||||
@@ -1145,7 +1166,7 @@ POST /api/profile/check-in
|
||||
|
||||
- `questionId` 如存在,后端会校验题目必须属于当前租户。
|
||||
- 反馈状态由租户后台处理,学生可用 `GET /api/profile/feedbacks` 查看自己的反馈历史。
|
||||
- 租户后台处理反馈时,奖励积分由后端 `idempotency_key` 保证不会重复发放,前端不要重复叠加。
|
||||
- 租户后台处理反馈时,奖励积分由后端 `idempotency_key` 保证不会重复发放,前端不要重复叠加;状态处理响应可能返回 `autoBadges`,后台或学生消息中心后续可据此做获得勋章提醒。
|
||||
|
||||
## 题库新模型接入方式
|
||||
|
||||
|
||||
Reference in New Issue
Block a user