Files
FruitServer/docs/plans/2026-10-21-K85-interaction-count.md
T

2.4 KiB
Raw Blame History

K85 收藏数 / 评论数实时更新实施计划

目标

修复收藏数、评论数在列表、播放页和详情页不实时更新的问题,并让服务端收藏计数与关系数据保持一致。

前置结论

根因已由任务书确认,不再重复排查:

  • 收藏关系写入/删除时没有同步维护 drama.favorite_count。
  • 客户端首页收藏未复用现有计数增量逻辑。
  • 评论面板关闭后没有重新查询评论总数。
  • 详情页收藏切换后没有本地收藏数增量。

A. FruitServer

  1. DramaService 新增原子收藏计数调整方法,参考现有点赞计数实现。
  2. FavoriteService 在收藏、取消收藏、批量取消时按实际删除/插入结果同步增减,避免重复操作导致漂移。
  3. 新增一次性 sql/backfill_favorite_count.sql,从 user_favorite 回填现有收藏数,不在应用启动时自动执行。
  4. AppCommentController 新增匿名评论总数接口,复用 CommentService.countByDrama。
  5. 补收藏同步维护、批量取消、评论计数接口测试。
  6. 门禁:JDK 21 下完整 mvn test。

B. ReelShort

  1. CommentApi / CommentRepository 新增评论总数查询,兼容数字和字符串两种 Long 返回。
  2. 播放器统一维护按剧评论数缓存;评论面板关闭后刷新,失败保留旧值。
  3. 首页 feed 收藏复用 _toggleSave,与全屏播放页共用收藏增量更新。
  4. 详情页收藏成功后本地显示收藏数增量,失败回滚,不修改 Drama 模型。
  5. 补评论计数解析、收藏增量、首页 rail 刷新测试。
  6. 门禁:dart analyze lib test 零告警、flutter test 全过。

风险与处理

  • 并发收藏切换可能造成计数竞争:服务端使用 SQL 原子自增/自减,减法不低于 0。
  • 历史收藏数全为 0:提供一次性回填脚本,由验收环境显式执行。
  • 评论面板取消打开时仍刷新一次计数,用于获取匿名新增评论带来的总数变化;查询失败静默保留旧值。
  • 详情页只在收藏状态确实变化时调整本地增量,避免重复点击造成累计误差。

合并与验收

  • FruitServer:fix/favorite-comment-count,--no-ff 合回 develop 并推送。
  • ReelShort:fix/interaction-count-refresh,--no-ff 合回 develop 并推送。
  • 作者统一 Zhou Weidong <502333560@qq.com>。
  • 不修改 specs 仓库,不执行真机安装;完成后等待用户验收。