前置检查
问题描述
在自建 BeeCount Cloud 的共享账本中,分类预算的本地/远端同步计数正常增加,但 Android 预算页面为空;App 还允许对已存在预算的同一分类再次创建预算。Web 控制台只显示其中一条,造成“App 新增成功且同步计数增加,但 Web 看不到另一条”的现象。
复现步骤
- 在 Web 控制台为共享账本创建若干分类预算,但不创建总预算。
- Android App 执行云同步;“我的”页面显示预算本地/远端条数一致。
- 打开 App 的预算页面,页面仍为空。
- 在 App 中选择 Web 已设置预算的同一分类,再次创建分类预算。
- App 提示保存成功且同步条数增加,但预算页仍为空;Web 控制台仍只显示同分类的一条预算。
期望行为
- 分类预算不依赖总预算即可正常显示。
- 已设置分类预算的分类不应再次出现在新增分类选择器中。
- 保存前应再次检查,避免同步竞态造成重复分类预算。
- 历史重复预算在 App 与 Cloud 端应采用一致的展示去重规则。
实际行为
BudgetPage 在 overview.totalBudget == null 时直接显示空状态,即使 categoryBudgets 非空。
BudgetEditPage 的分类选择器未排除已有预算的分类,保存前也未检查重复。
- Cloud 读取预算时按
(type, category_sync_id) 去重并保留 sync_id 字典序较大的一条,因此重复记录会增加同步计数,但 Web 只展示一条。
环境
- 平台:Android
- App 版本:3.7.2
- Android 版本:16
- 设备型号:小米 15 Pro
- 同步模式:BeeCount Cloud(自建)
- BeeCount Cloud:v1.6.3
根因与拟议修复
已准备修复分支,包含:
- 分类预算存在时,即使没有总预算也渲染分类预算卡片。
- 新增分类预算时过滤已使用分类,并在保存前二次检查。
- 本地读取历史重复分类预算时采用与 Cloud 相同的 keeper 规则。
- 补充页面显示、重复创建和历史去重的回归测试。
截图与已打码视频将在下方评论中补充。
前置检查
main(3.7.2 代码路径)核对并定位问题描述
在自建 BeeCount Cloud 的共享账本中,分类预算的本地/远端同步计数正常增加,但 Android 预算页面为空;App 还允许对已存在预算的同一分类再次创建预算。Web 控制台只显示其中一条,造成“App 新增成功且同步计数增加,但 Web 看不到另一条”的现象。
复现步骤
期望行为
实际行为
BudgetPage在overview.totalBudget == null时直接显示空状态,即使categoryBudgets非空。BudgetEditPage的分类选择器未排除已有预算的分类,保存前也未检查重复。(type, category_sync_id)去重并保留sync_id字典序较大的一条,因此重复记录会增加同步计数,但 Web 只展示一条。环境
根因与拟议修复
已准备修复分支,包含:
截图与已打码视频将在下方评论中补充。