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