47 lines
2.4 KiB
Markdown
47 lines
2.4 KiB
Markdown
# 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 仓库,不执行真机安装;完成后等待用户验收。
|