Files
FruitServer/docs/plans/2026-10-21-K88-drama-type-feed.md

2.9 KiB
Raw Permalink Blame History

K88 内容类型、互动数据编辑与分类 Feed 实施计划

目标

  • 后台短剧管理支持内容类型和互动数据编辑:收藏、点赞、热度可编辑,评论数实时统计只读。
  • 新增 drama.drama_type,取值为 ANIME / LIVE,默认 LIVE。
  • App 新增 GET /app/feed,支持 ANIME,LIVE 多选类型,不传类型时返回推荐全部。

FruitServer A

  1. 数据库

    • 新增 sql/migrate-k88-drama-type.sql,只提交迁移文件,不执行数据库变更。
    • sql/schema.sql 的 drama 建表语句补 drama_type,默认 LIVE。
  2. 后台管理

    • Drama、DramaSaveReqVO、DramaRespVO 增加 dramaType。
    • DramaSaveReqVO 增加可空 favoriteCount、likeCount、heat;服务层校验非负,heat 映射 view_count。
    • create 默认内容类型 LIVE、互动数 0;update 仅覆盖请求非 null 的互动字段。
    • 后台分页增加 dramaTypes 多选过滤,并保持 CommentService 批量回填评论数。
  3. App Feed

    • AppDramaCardVO 增加 dramaType,现有 home/discover/detail 仅新增字段。
    • GET /app/feed 支持 types、cursor、size;size 默认 20、最大 50。
    • 排序为 recommend_weight DESC NULLS LAST, view_count DESC, id DESC。
    • cursor 使用最后一条 drama id,服务端反查其 recommendWeight/viewCount/id,再按三元组做 keyset 查询,避免 offset 翻页重漏。
    • 卡片复用现有 toCards,确保 preview、互动数、评论数与首页一致。
    • 更新 docs/api-phase1.md 的 dramaType 与 /app/feed 契约。
  4. 测试

    • /app/feed:全部、ANIME、ANIME+LIVE、游标翻页不重不漏。
    • 后台 update:部分字段更新、heat 写 viewCount、负数与非法 dramaType 报错。

ReelShortWeb B

  1. 类型定义补齐 dramaType、favoriteCount、likeCount、commentCount、heat。
  2. 短剧列表增加内容类型筛选和标签列,播放量列改为热度,增加收藏/点赞/评论列。
  3. 编辑弹窗增加必填内容类型、互动数据区块;评论数只读。
  4. 不改审核、发布、删除逻辑。

风险与处理

  • 推荐排序包含可空 recommend_weight,SQL 与 Java 条件必须显式处理 NULLS LAST。
  • 三字段排序不能只按 id 做 cursor,需以 cursor id 反查上一页最后一条的排序值。
  • 存量数据不主动修改,迁移默认 LIVE;数据库脚本由 PM 执行。
  • 全部改动只使用显式文件暂存,不执行 git add -A,不改 specs 与 Flutter 客户端。

门禁与 Git

  • FruitServer:mvn test 全过;提交 feat(content): 新增内容类型与首页分类 feed;--no-ff 合回 develop 并 push。
  • ReelShortWeb:pnpm ts:check、pnpm build:dev 通过;提交 feat(admin): 短剧列表展示并编辑互动数据;--no-ff 合回 develop 并 push。
  • 作者统一 Zhou Weidong <502333560@qq.com>;各自 PROGRESS 追加 K88 留痕。