feat: use preset avatars and disable leaderboard by default

This commit is contained in:
Codex
2026-06-30 14:07:48 +08:00
parent 8e3252081f
commit 9299552451
18 changed files with 228 additions and 52 deletions

View File

@@ -253,7 +253,7 @@ tenant:<tenantId>:theme
| 错题复习 | `GET /api/learning/wrong-questions/review-plan``POST /api/learning/practice-sessions` with `mode=wrong_review` |
| 收藏夹 | `GET/POST /api/learning/favorites/questions` |
| 练习历史/统计 | `GET /api/learning/practice-sessions/history``GET /api/learning/stats``GET /api/learning/trend` |
| 学习排行榜 | `GET /api/learning/leaderboard?metric=questions&period=all` |
| 学习排行榜 | `GET /api/learning/leaderboard?metric=questions&period=all`,仅当租户 `features.enableLeaderboard=true` 时启用 |
| 题目视频 | `GET /api/questions/{questionId}/videos``POST /api/questions/videos/batch``POST /api/videos/play` |
| 题目反馈 | `POST /api/profile/feedbacks``GET /api/profile/feedbacks` |
| 分佣结算 | `GET /api/commission/settings``PUT /api/commission/settings``PUT /api/commission/member-rate``GET /api/commission/summary``GET /api/commission/orders``GET /api/commission/settlements``POST /api/commission/settlements/generate``POST /api/commission/settlements/status` |
@@ -745,7 +745,7 @@ POST /api/tenant-admin/badge-grants
| 学习概览卡片 | `GET /api/learning/stats?days=30` | 返回总答题、正确率、报告数、错题数、收藏数、题型分布 |
| 正确率趋势图 | `GET /api/learning/trend?days=14` | 返回每日答题数、正确数、错题数、session 数、报告数 |
| 错题复习入口 | `GET /api/learning/wrong-questions/review-plan?limit=20` | 返回建议复习题和后端组卷 nextAction |
| 排行榜 | `GET /api/learning/leaderboard?metric=questions&period=7d&regionId=...&classId=...` | 返回排名、用户展示信息、当前用户排名和范围信息 |
| 排行榜 | `GET /api/learning/leaderboard?metric=questions&period=7d&regionId=...&classId=...` | 仅租户 `features.enableLeaderboard=true` 时请求;返回排名、用户展示信息、当前用户排名和范围信息 |
错题复习创建 session
@@ -765,7 +765,7 @@ POST /api/tenant-admin/badge-grants
### 排行榜
排行榜由后端统一聚合,前端不要读取答题记录、单词进度或模考报告后自行排名,避免越权、口径漂移和跨租户数据泄露。
排行榜由后端统一聚合,但当前产品默认关闭,租户 `feature_flags.enableLeaderboard` 未开启时接口返回 `LEADERBOARD_DISABLED`。前端默认不要在个人中心请求或展示排行榜;只有租户明确开启并完成压测后,再进入独立排行榜页或活动页。前端不要读取答题记录、单词进度或模考报告后自行排名,避免越权、口径漂移和跨租户数据泄露。
可选参数:
@@ -1114,6 +1114,41 @@ GET /api/tenant-content/assets/security-scan-events?assetId=<assetId>&limit=100
首页可用 `GET /api/catalog/exam-dates?regionId=<regionId>` 展示地区公开考试日期;个人中心优先用 `GET /api/profile/exam-countdowns`,后端会按学生当前 `regionId/selectedSchoolId` 返回匹配倒计时。
## 个人中心预设头像
学生端不支持用户上传头像。系统只提供男女两种默认头像预设,避免头像上传带来的存储、内容安全、隐私和审核复杂度。前端不要展示文件选择器,不要调用对象存储上传链路,也不要把微信/QQ 返回的头像 URL 写入学生资料。
当前 Taro service 使用:
```text
apps/taro/src/services/profile.ts
loadProfile
updateProfile({ avatarPreset: 'male' | 'female' })
```
`GET /api/profile/me` 会返回:
```json
{
"item": {
"avatarPreset": "male",
"avatar": {
"preset": "male",
"displayUrl": "/assets/avatars/default-male.svg"
}
}
}
```
前端展示规则:
- 直接使用 `item.avatar.displayUrl` 展示头像。
- 允许用户在 UI 中二选一切换 `male` / `female`,调用 `PATCH /api/profile/me``avatarPreset` 字段保存。
- `PATCH /api/profile/me``avatarUrl` 会返回 `PROFILE_AVATAR_URL_DIRECT_UPDATE_REJECTED`,前端不应提供该输入。
- `avatarPreset` 只能是 `male``female`;其它值会返回 `INVALID_AVATAR_PRESET`
- 默认头像资源由前端静态资产或 CDN 提供,路径保持 `/assets/avatars/default-male.svg``/assets/avatars/default-female.svg`
签到入口调用:
```http