forked from wangziqi/gongxue-base
feat: add media access analytics
This commit is contained in:
@@ -269,6 +269,7 @@ tenant:<tenantId>:theme
|
||||
| 租户勋章 | `GET/PUT /api/tenant-admin/badges`、`GET/POST /api/tenant-admin/badge-grants` |
|
||||
| 公共题库采纳/同步 | `GET /api/tenant-content/public-question-banks`、`POST /api/tenant-content/public-question-banks/adopt`、`POST /api/tenant-content/public-question-banks/sync`、`GET /api/tenant-content/public-question-banks/conflicts?adoptionId=...`、`POST /api/tenant-content/public-question-banks/conflicts/resolve`、`POST /api/tenant-content/public-question-banks/conflicts/resolve-batch` |
|
||||
| 题库导出 | `POST /api/tenant-content/exports/questions`、`GET /api/tenant-content/exports/jobs` |
|
||||
| 资料/视频运营审计 | `GET /api/tenant-content/media-analytics/summary`、`asset-events`、`video-events` |
|
||||
|
||||
## 资料、PDF 和视频资源契约
|
||||
|
||||
@@ -329,6 +330,25 @@ GET /api/tenant-content/assets/access-events?assetId=<assetId>&limit=100
|
||||
|
||||
访问事件 `metadata.watermark.traceId` 可用于后台按截图上的追踪码回查访问记录。视频播放不走 `content_asset_access_events`,但 `POST /api/videos/play` 返回同样的 `watermark` 对象,后端会把 traceId 写入 `video_play_events.metadata.watermark.traceId`。
|
||||
|
||||
租户后台运营报表:
|
||||
|
||||
```text
|
||||
GET /api/tenant-content/media-analytics/summary?timeRange=30d&limit=10
|
||||
GET /api/tenant-content/media-analytics/asset-events?traceId=7D2A9C3E1B0F&limit=100
|
||||
GET /api/tenant-content/media-analytics/video-events?videoId=<videoId>&limit=100
|
||||
```
|
||||
|
||||
这些接口用于租户后台资料/视频运营面板,权限为 `content:analytics:read`,租户 owner/admin/operator 默认可访问。普通教师默认不可见,除非绑定了带该权限的角色模板。
|
||||
|
||||
前端展示建议:
|
||||
|
||||
- `summary.assetAccess` 展示下载、预览、拒绝访问、水印事件数。
|
||||
- `summary.videoPlay` 展示视频播放、SVIP 播放、次数播放、消耗次数。
|
||||
- `assetTop` / `videoTop` 做热门资料和热门视频排行。
|
||||
- `daily` 做资料访问和视频播放趋势。
|
||||
- 搜索框支持输入截图上的 `traceId`,同时请求 `asset-events` 和 `video-events` 回查用户、时间、IP、UA、资源或视频。
|
||||
- 这些接口不会返回签名 URL、播放 token、云厂商密钥或支付密钥;前端不要把它们当成下载/播放接口。
|
||||
|
||||
## 练习访问控制契约
|
||||
|
||||
前端不要先拉完整题目列表再自行判断免费额度。用户点击顺序刷题、随机刷题、全真模拟时,统一调用 `POST /api/learning/practice-sessions`,后端会根据 `content_entries.accessRules`、`content_nodes.accessRules`、`question_collections.accessRules`、`practice_blueprints.accessRules` 和当前用户权益决定最终题目快照。
|
||||
|
||||
Reference in New Issue
Block a user