5.0 KiB
5.0 KiB
K91 后台观看记录独立菜单、评论分集展示与全部状态筛选
目标
- FruitServer 新增跨用户观看记录分页接口,并给后台评论补充短剧名、集号与集标题。
- ReelShortWeb 新增「观看记录」独立页面,评论/举报状态筛选默认展示全部。
- 迁移脚本只提交文件,不执行数据库变更;不改 specs 仓库和 Flutter 客户端。
分支
- FruitServer:
feat/k91-watch-history,从origin/develop创建。 - ReelShortWeb:
feat/k91-watch-history-page,从origin/develop创建。
A. FruitServer
A1 观看记录分页
- 新增
WatchHistoryQueryReqVO,字段:pageIndex/pageSize/keyword/userId/dramaTitle/dramaId/episodeId/source/finished/startTime/endTime。 - 新增
AdminWatchHistoryVO,返回用户、短剧、分集、进度、完成、来源、设备与观看时间。 - 新增
WatchHistoryAdminService,直接注入:WatchHistoryMapperAppUserMapperDramaMapperDramaEpisodeMapper
- 查询流程:
keyword先批量命中app_user.uid/nickname的 id;无命中直接空页。dramaTitle先批量命中drama.title的 id;无命中直接空页。- 精确 id 条件与模糊命中集合取交集。
finished在 SQL 层表达,允许区间两侧都落在duration_ms = 0等边界。- 按
watched_at DESC, id DESC排序。 - 对结果页的用户、剧、集各做一次批量查询后装配,禁止逐行查询。
- 新增
WatchHistoryAdminController,权限点watch-history:list,保留旧用户详情观看流水接口。
A2 评论后台分集信息
CommentRespVO增加dramaTitle/episodeNo/episodeTitle。- 仅
CommentService.adminPage对当前页批量补剧、集信息。 toRespList的 C 端路径保持不增加查询。
A3 SQL 与契约
- 新增幂等迁移
sql/migrate-k91-watch-history-menu.sql:- 权限点
1105 watch-history:list - 菜单使用 id
34,挂 parent15 component=views/userManagement/WatchHistoryView- 超管角色权限与菜单关联
- 权限点
- 同步
sql/data-phase1.sql。 - 更新
docs/api-phase1.md§2.3、§2.5。
A4 测试
WatchHistoryAdminServiceTest覆盖:- 默认分页与排序
- keyword 用户命中
- dramaTitle 剧名命中
- finished 真/假 SQL 条件
- 时间范围
- 命中集合为空直接空页
- pageSize 上限收敛为 100
CommentServiceTest覆盖后台页批量补齐剧名、集号、集标题。- 门禁:
mvn test全模块通过。
B. ReelShortWeb
B1 类型/API
- 扩展
WatchHistoryItem:userId/uid/nickname/episodeTitle。 - 扩展
CommentItem:dramaTitle/episodeNo/episodeTitle。 appUser.ts新增pageWatchHistoryApi(params)。
B2 观看记录页面
- 新建
src/views/userManagement/WatchHistoryView.vue:- 用户、短剧名称、来源、完成状态、时间范围筛选。
- 观看时间、用户、短剧、分集、进度、完成、来源、设备列。
- 10/20/50 分页。
- 复用 App 用户页的
panel/console-toolbar/pagination/app-user-*视觉与格式化函数。
B3 评论/举报全部状态
- 评论与举报状态首项增加
{ value: '', label: '全部状态', tag: 'info' }。 - 两个筛选默认值改为空串,请求时空串转
undefined。 - 评论表以「短剧 / 分集」替换短剧 ID 单列:
- 显示剧名与集号/集标题。
- 缺少剧名时回退短剧 id。
- 缺少集号时回退分集 id;历史
episodeId=0显示未关联分集。 - 原始短剧 id / 分集 id 通过 tooltip 保留。
B4 门禁
pnpm ts:checkpnpm build:dev
风险与待确认
watch_history是月分区表,现有索引为(user_id, watched_at)与(drama_id, watched_at),没有跨用户的全局watched_at索引。本次按要求实现跨用户时间排序, 不擅自新增索引;数据量增长后由 PM 评估是否增加全局观看时间索引。- 用户/剧名模糊检索先取 id 集合,符合“命中为空不退化成全表”的要求; 超大关键词命中集合的批大小由后续实际数据量评估,本次不擅自加截断以免漏结果。
- 历史评论的
episode_id=0不回填;后台显示“未关联分集”,原始 id 仍保留在 tooltip。 - 迁移脚本只写文件,不执行数据库;菜单落库由 PM 按发布流程执行。
- 任务书建议菜单 id
26,但当前data-phase1.sql已将26用作“创作者中心”目录,27-30为其子菜单。为避免覆盖线上已有菜单树,本次使用下一个空闲 id34; 父级、路由、组件与权限点均不变。
提交与合并
- FruitServer 提交:
feat(admin): 新增观看记录分页与评论分集信息 - ReelShortWeb 提交:
feat(admin): 观看记录独立菜单与治理状态全部筛选 - 两仓库均
--no-ff合回develop并 push。 - 作者与提交者:
Zhou Weidong <502333560@qq.com>。 - 禁止
git add -A,所有文件逐项暂存。