forked from wangziqi/gongxue-base
feat: add tenant dashboard analytics
This commit is contained in:
@@ -51,7 +51,7 @@ F:\project\参考\旧题库项目\src
|
||||
- 题库练习、答题、错题、收藏。
|
||||
- 订单、支付、激活码、优惠券、权益。
|
||||
- 私有 PDF、资料、视频、对象存储签名。
|
||||
- 租户后台、平台后台、内容导入、CRM、销售/代理。
|
||||
- 租户后台、平台后台、内容导入、CRM、销售/代理、数据看板。
|
||||
|
||||
前端应封装一个统一 API client,所有页面禁止直接散写 `Taro.request`。
|
||||
|
||||
@@ -173,6 +173,7 @@ tenant:<tenantId>:theme
|
||||
| 激活码 | `POST /api/commerce/activation-codes/check`、`POST /api/commerce/activation-codes/redeem` |
|
||||
| 个人中心 | `GET/PATCH /api/profile/me`、`POST /api/profile/check-in`、`GET /api/profile/score-events`、`GET /api/profile/exam-countdowns` |
|
||||
| 销售分享 | `/api/referral/resolve`、`track-event`、`bind` |
|
||||
| 租户数据看板 | `GET /api/tenant-admin/dashboard?timeRange=30d®ionId=...` |
|
||||
| 租户班级 | `GET/PUT /api/tenant-admin/classes`、`POST /api/tenant-admin/classes/disable` |
|
||||
| 班级成员 | `GET/PUT /api/tenant-admin/classes/members`、`POST /api/tenant-admin/classes/members/remove`、`POST /api/tenant-admin/classes/members/bulk-assign` |
|
||||
| 租户学生 | `GET/PUT /api/tenant-admin/students`、`POST /api/tenant-admin/students/bulk-upsert`、`POST /api/tenant-admin/students/status` |
|
||||
@@ -338,6 +339,62 @@ tenant:<tenantId>:theme
|
||||
|
||||
响应会包含 `items` 和 `currentUser`。即使当前用户未进入前 N 名,也应优先展示 `currentUser` 作为“我的排名”。后台后续会补日/周榜预聚合和防刷策略,前端只消费接口返回口径。
|
||||
|
||||
### 租户数据看板
|
||||
|
||||
租户后台数据看板由后端统一聚合,前端不要直接读取订单、答题记录、学生列表后自行统计,避免权限越权、敏感信息外泄和各页面口径不一致。
|
||||
|
||||
请求:
|
||||
|
||||
```http
|
||||
GET /api/tenant-admin/dashboard?timeRange=30d®ionId=<可选地区ID>&limit=10
|
||||
```
|
||||
|
||||
可选参数:
|
||||
|
||||
| 参数 | 可选值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `timeRange` | `7d`、`30d`、`90d` | 统计区间,默认 `30d` |
|
||||
| `regionId` | UUID | 可选地区筛选,后端会校验地区属于当前租户 |
|
||||
| `limit` | 1-50 | 题型、科目、地区、套餐和运营动态的返回条数 |
|
||||
|
||||
响应主要结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"item": {
|
||||
"scope": {
|
||||
"tenantId": "...",
|
||||
"regionId": "...",
|
||||
"timeRange": "30d",
|
||||
"timezone": "Asia/Shanghai"
|
||||
},
|
||||
"cards": {
|
||||
"students": {},
|
||||
"learning": {},
|
||||
"content": {},
|
||||
"activationCodes": {},
|
||||
"feedback": {}
|
||||
},
|
||||
"paymentStats": {},
|
||||
"trends": [],
|
||||
"activeHours": [],
|
||||
"questionDistribution": [],
|
||||
"subjectTop": [],
|
||||
"regionStats": [],
|
||||
"planSales": [],
|
||||
"recentActivities": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
前端处理规则:
|
||||
|
||||
- 管理台菜单显示可按 `/api/tenant-admin/permissions` 的 `dashboard:read` 判断,但真正权限以后端返回为准。
|
||||
- `trends` 已补齐自然日桶,`activeHours` 固定 24 项,前端不需要补点。
|
||||
- `revenueCents`、`amountCents` 都是分,前端统一格式化成人民币展示,不要自行重算订单金额。
|
||||
- `recentActivities.details` 只包含可展示的低敏汇总信息,不包含手机号、支付密钥、对象存储 key 等敏感字段。
|
||||
- 大租户正式上线后会补预聚合 worker,前端不应依赖任何临时 SQL 口径或自己维护缓存口径。
|
||||
|
||||
### 背单词计划与复习上报
|
||||
|
||||
背单词页面分三类数据:单元列表、每日计划、单词进度。前端不需要计算下次复习日期,只提交“认识/不认识”,由后端统一更新 `nextReviewDate`、连续正确、掌握状态和每日复习计划。
|
||||
@@ -829,6 +886,7 @@ ACTIVATION_CODE_REGION_MISMATCH
|
||||
租户后台可以先做 H5 管理台,也可以后续使用 Taro H5 复用部分组件。优先页面:
|
||||
|
||||
- 概览:`/api/tenant-admin/overview`
|
||||
- 数据看板:`/api/tenant-admin/dashboard`,展示收益、注册、学习、内容、激活码、反馈、趋势、24h 活跃、套餐销量和运营动态
|
||||
- 品牌/主题/域名/公开设置
|
||||
- 支付账户/登录 provider/密钥引用
|
||||
- 用户与成员权限
|
||||
|
||||
Reference in New Issue
Block a user