fix/remaining-issues-2026-09-26
fix/dialogs-f03-f04
堆叠于 #2(交互修复),对应问题清单 F05/F06/F07,含 ruff 格式统一与交付记录:
测试:test_formula_definitions_concurrency.py、test_formula_workbook_docs.py、test_formula_reconcile_tolerances.py 新增;全量后端 87 passed、覆盖率 88.50%、迁移一致、ruff/tsc/build 全通过(详见 docs/fix-record-2026-09-26.md)
- FormulaDefinition 增加 revision 字段(迁移 0005) - 保存接口在单事务内锁定用户所属行序列化并发:配额(50/数据集)检查与写入原子化, 不再可能产生第 51 条;唯一约束竞争返回 409 - 同名更新必须携带匹配的 revision,两个窗口不再相互静默覆盖; GET 列表返回当前 revision;保存增加 30/小时限流 - 审计与定义变更(保存/删除)同一事务提交,审计失败一并回滚 - 前端保存同名定义时携带已知 revision,并明示“同名覆盖”行为 - 测试:revision 边界(缺失/过期/正确/再次过期)、配额拒绝与释放、 审计失败回滚;PostgreSQL 并发配额用例独立门禁(本机 SQLite 跳过)
- “产品毛利率”参数行不再标记可编辑:说明页写明它是导出时的只读快照, 各行毛利率已写入计算明细 MarginRate 列,调整需在计算明细页按行修改 - 参数页新增完整维度键-显示名对照行(此前说明页提到“本页分组维度”但无字典) - 使用说明新增输入字典:Revenue/Cost/GrossInput/MarginRate/ListAmount 逐项列出 单位、来源字段、修改位置与缺失含义;新增固定结构边界行(哪些列/页不可改、 改结构需重新导出) - 测试:参数页全部“否”、每个可修改输入出现在计算明细表头并被汇总公式引用、 维度对照完整;LibreOffice 用例验证修改 MarginRate 后 lookup 毛利重算(本机跳过)
- 对账检查页新增容差列:人数严格相等(容差 0)、金额 0.01、比率 0.0001, 状态公式改为 ABS(差异)<=容差,不再统一使用 0.01 - 自定义列不再标注“需业务验收/无服务器参考”:新增 to_decimal 白名单表达式 解释器(仅遍历 metric/number/四则节点,不执行代码)在服务器端用 Decimal 计算参考值,缺失指标或除零返回 None(对应 #N/A → 无参考) - 参数页写明对账规则与“容差调整需财务负责人批准” - 测试:求值器黄金样例(大数/抵消/极小值/除零/缺失/多层表达式)、 分指标容差列、自定义列 Decimal 参考与缺失场景、全指标覆盖检查; LibreOffice 用例验证全部对账行重算后为“通过/无参考”(本机跳过)
- 逐项记录修复内容、提交号与对应验收测试 - 记录全量测试结果(后端 87 passed/覆盖率 88.50%、E2E 3 passed、 lint/构建/迁移一致性/pip-audit 通过)与环境限制项(LibreOffice、 npm audit 网络、PostgreSQL 并发门禁) - 明确仍开放的功能缺口与外部门禁不变
PG 上 worker 持咨询锁会立即重认领 processing 任务,第二次 --once 被导入任务 抢占导致导出断言失败(该测试此前从未在 PG 上真正运行过)。第一次调用后把导入 任务置为 ready 模拟完成,两种后端行为一致
No dependencies set.
The note is not visible to the blocked user.
堆叠于 #2(交互修复),对应问题清单 F05/F06/F07,含 ruff 格式统一与交付记录:
测试:test_formula_definitions_concurrency.py、test_formula_workbook_docs.py、test_formula_reconcile_tolerances.py 新增;全量后端 87 passed、覆盖率 88.50%、迁移一致、ruff/tsc/build 全通过(详见 docs/fix-record-2026-09-26.md)
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.