forked from wangziqi/gongxue-base
feat: add tenant dashboard analytics
This commit is contained in:
@@ -126,7 +126,7 @@
|
||||
| 班级/学生/教师管理 | 可联调 | `/api/tenant-admin/classes`、`classes/members`、`students`、`teachers`,支持班级范围权限和审计 |
|
||||
| 学生批量运营 | 可联调 | `/api/tenant-admin/students/bulk-upsert`、`students/status`、`classes/members/bulk-assign`、`students/notes`、`students/followups`;支持逐行结果、限量、防跨租户和教师范围校验 |
|
||||
| 平台租户/套餐/订阅/账单/用量 | 可联调 | `/api/platform-admin/*` |
|
||||
| 数据看板聚合接口 | 待补齐 | 表基础已有,缺完整 dashboard API |
|
||||
| 数据看板聚合接口 | 可联调 | `GET /api/tenant-admin/dashboard`;支持 `7d/30d/90d`、地区筛选、学生/学习/内容/订单/激活码/反馈卡片、趋势、24h 活跃、题型分布、科目排行、地区统计、套餐销量和运营动态 |
|
||||
| 平台公共题库授权 | 可联调 | `/api/platform-admin/question-banks`、`question-bank-grants`;支持按 SaaS 套餐、指定租户或全部活跃租户披露平台公共题库 |
|
||||
| 租户采纳公共题库 | 可联调 | `/api/tenant-content/public-question-banks`、`public-question-banks/adopt`;租户只能看到自己订阅/授权范围内题库,采纳后生成租户自己的题库、入口、集合和题目快照,可直接进入练习 |
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
| 用户管理 | 已覆盖 | 租户成员、学生列表、学生资料、批量学生 upsert、禁用/恢复、批量分班、学生备注、跟进任务已实现;批量 CRM 推送、补绑、学习督导自动化待补 |
|
||||
| 销售/代理管理 | 部分覆盖 | referral/team/stats 有;缺分佣比例、结算单、审核、导出 |
|
||||
| 班级/教师管理 | 已覆盖 | 班级、班级成员、教师/班主任/助教/学生范围权限已有;可视化 UI 和更细数据范围组合待补 |
|
||||
| 数据看板 | 部分覆盖 | 表基础有;缺收益、注册、答题、活跃、套餐销量等聚合 API |
|
||||
| 数据看板 | 部分覆盖 | 租户 dashboard 聚合 API 已覆盖收益、注册、答题、活跃、题型、科目、题量、套餐销量、运营动态、24h 活跃和激活码使用;后续补预聚合 worker、销售转化和分佣结算看板 |
|
||||
| 地区管理 | 部分覆盖 | 地区和内容入口已有;平台公共题库已可按 SaaS 套餐/租户授权并由租户采纳;还缺更完整的全国/单地区套餐 UI 和版本同步策略 |
|
||||
| 品牌配置 | 已覆盖 | 需要前端做预览和主题发布体验 |
|
||||
| 自定义域名 | 已覆盖 | 生产需补 DNS 校验、证书状态、回源校验 |
|
||||
@@ -117,7 +117,7 @@
|
||||
1. 微信/支付宝支付和 webhook 幂等。
|
||||
2. 对象存储 PDF 预览、视频深度防盗链、动态水印。
|
||||
3. Excel/CSV、分数线、视频批量导入。
|
||||
4. 数据看板和销售/代理分佣结算。
|
||||
4. 数据看板预聚合 worker、销售/代理转化看板和分佣结算。
|
||||
5. 公共题库版本同步、租户采纳后的更新策略和同步 worker。
|
||||
|
||||
### P2:增强体验
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
- 旧题库运营缺口已补一批:考试日期/倒计时、题目反馈/纠错处理、每日签到积分和积分流水、学习排行榜已完成接口和集成测试。
|
||||
- 旧商城体验已补齐主链路:订单详情、订单状态轮询、激活码预检查、自用激活码拒绝、优惠券前台领取、下单抵扣、零元订单自动支付开通权益,且手工支付确认已限制为租户后台 `tenant:payment:write` 权限。
|
||||
- 公共题库商业化基础闭环已完成:平台公共题库可由平台管理员按 SaaS 套餐/指定租户/全部活跃租户授权;租户内容管理员只能看到自己被授权的公共题库,并可采纳为本租户题库、内容入口、题目集合和题目快照,采纳后可直接进入练习 session。
|
||||
- 租户后台数据看板已完成首版聚合 API:`GET /api/tenant-admin/dashboard`,支持租户/地区维度的收益、注册、学习、内容、激活码、反馈、趋势、24h 活跃、套餐销量和运营动态,前端可直接联调。
|
||||
- 本地验证:`npm run check:refactor` 已通过。
|
||||
|
||||
当前更适合进入前端联调前阅读的总览文档:
|
||||
@@ -98,9 +99,9 @@
|
||||
- 继续补积分兑换、活动任务、连续签到奖励配置、处理通知和反馈聚合统计。
|
||||
|
||||
9. 数据看板
|
||||
- 收益、注册趋势、答题次数、收入趋势、题型分布、科目数量、题目总量。
|
||||
- 套餐销量、运营动态、24h 活跃度、激活码使用情况。
|
||||
- 销售/代理转化、分佣结算、客资跟进效果。
|
||||
- 已完成首版实时聚合接口,覆盖收益、注册趋势、答题次数、收入趋势、题型分布、科目数量、题目总量、套餐销量、运营动态、24h 活跃度和激活码使用情况。
|
||||
- 继续补日/周/月预聚合 worker、缓存策略、慢 SQL 监控和大租户性能压测。
|
||||
- 继续补销售/代理转化、分佣结算、客资跟进效果看板。
|
||||
|
||||
10. 学生运营管理
|
||||
- 已完成学生列表、学生资料维护、班级分组、教师范围可见、学生批量导入、禁用/恢复、批量分班、学生备注和跟进任务。
|
||||
|
||||
@@ -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