2.4 KiB
2.4 KiB
K85 收藏数 / 评论数实时更新实施计划
目标
修复收藏数、评论数在列表、播放页和详情页不实时更新的问题,并让服务端收藏计数与关系数据保持一致。
前置结论
根因已由任务书确认,不再重复排查:
- 收藏关系写入/删除时没有同步维护
drama.favorite_count。 - 客户端首页收藏未复用现有计数增量逻辑。
- 评论面板关闭后没有重新查询评论总数。
- 详情页收藏切换后没有本地收藏数增量。
A. FruitServer
DramaService新增原子收藏计数调整方法,参考现有点赞计数实现。FavoriteService在收藏、取消收藏、批量取消时按实际删除/插入结果同步增减,避免重复操作导致漂移。- 新增一次性
sql/backfill_favorite_count.sql,从user_favorite回填现有收藏数,不在应用启动时自动执行。 AppCommentController新增匿名评论总数接口,复用CommentService.countByDrama。- 补收藏同步维护、批量取消、评论计数接口测试。
- 门禁:JDK 21 下完整
mvn test。
B. ReelShort
CommentApi/CommentRepository新增评论总数查询,兼容数字和字符串两种 Long 返回。- 播放器统一维护按剧评论数缓存;评论面板关闭后刷新,失败保留旧值。
- 首页 feed 收藏复用
_toggleSave,与全屏播放页共用收藏增量更新。 - 详情页收藏成功后本地显示收藏数增量,失败回滚,不修改
Drama模型。 - 补评论计数解析、收藏增量、首页 rail 刷新测试。
- 门禁:
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 仓库,不执行真机安装;完成后等待用户验收。