feat: auto grant badges for learning milestones

This commit is contained in:
Codex
2026-06-30 14:24:07 +08:00
parent 9299552451
commit 7d2b8fd610
11 changed files with 343 additions and 19 deletions

View File

@@ -659,8 +659,17 @@ POST /api/tenant-admin/badge-grants
| `score` | `score` | 签到加分、反馈奖励或积分活动奖励成功后 |
| `feedback_resolved` | `feedbackResolvedCount` | 租户后台把反馈处理为 `resolved` 后 |
| `activity_reward` | `activityRewardCount``score` | 学生领取积分活动任务且后端证据校验通过后 |
| `practice_count` | `practiceCount``practiceReportCount` | `POST /api/learning/practice-sessions/submit` 生成练习报告后 |
| `vocabulary_mastered` | `vocabularyMasteredCount``masteredWordsCount` | `POST /api/learning/vocabulary/progress``POST /api/learning/vocabulary/review` 使单词状态达到 `mastered` 后 |
| `mock_exam_score` | `mockExamScore``mockExamAccuracy``mockExamBestScore` | `POST /api/learning/practice-sessions/submit` 提交 `mock_exam` 报告后 |
规则使用 `conditionOperator` 的合法值 `gte``gt``lte``lt``eq``conditionValue` 为数字。触发成功的接口会返回 `autoBadges`,前端可据此弹出“获得勋章”提示;如果是重复签到、重复处理反馈或已获得过同一勋章,后端不会重复返回同一发放记录。
规则使用 `conditionOperator` 的合法值 `gte``gt``lte``lt``eq``conditionValue` 为数字。触发成功的接口会返回 `autoBadges`,前端可据此弹出“获得勋章”提示;如果是重复签到、重复处理反馈、重复交卷、重复单词复习或已获得过同一勋章,后端不会重复返回同一发放记录。
前端接入注意:
- 刷题/模考交卷、单词进度更新、签到、反馈处理、积分任务领取都可能返回 `autoBadges`;统一交给一个成就提示组件处理。
- 勋章是否已解锁仍以 `GET /api/profile/badges` 为准,`autoBadges` 只用于即时提示和刷新个人中心。
- 租户后台配置自动勋章时,只展示上表中的 `unlockType` 和推荐字段,避免运营输入任意字段导致规则永远无法命中。
### 模考交卷与报告