PayrollManagementSystem/backend/tests/integration
liuwenxin cb4f38dfd9 fix(m3): code-review P0 六项——算错钱与不可用
- 经理聚合分成放大 100 倍:参数按百分数存储(12.5=12.5%),parse_fraction
  后调用方又 ×100、函数内部再 ÷100,净效应「绩效×12.5」;去掉调用方
  ×100,rate_text 改用实际参数原文(原硬编码 12.5%+5% 参数调整后失真)
- 审批联动只认终审:财务节点通过(1→2)不再提前 mark_locked/调整单生效,
  否则领导驳回后 locked_at/locked_by 残留、两级审批形同虚设;驳回在任何
  节点即时联动;mark_rejected 补清锁定字段
- 调整单新建不可用:ENABLE_CODE_BY_TYPE 未登记 type=3 → is_enabled 恒 400;
  补登记 approval.adjustment.enabled。另修复叠加缺陷——开关关闭分支手工
  ApprovalStep(order_id=调整单id),而该外键指向 approval_orders,必然
  errno 1452;统一改走 submit_order(自动通过留痕由它负责)
- 重算双重计提:业务级一次性计提的「进度登记」回款无生效台账行,重算会
  凭空落新行;无旧行一律 400
- 前端重算传错 id:台账行主键当 receipt_id 传给重算接口,会作废无关回款
  的台账;改传 row.receipt_id(聚合行防御)
- quantize 显式 ROUND_HALF_UP:9 处金额 quantize 缺省银行家舍入,
  x.xx5 与四舍五入口径差 1 分(docstring 却声称 HALF_UP)

测试:显式控制审批开关(V8 起种子默认开启,用例不再依赖默认值);
新增回归 4 例(经理聚合比例/调整单即生效/进度登记重算 400/财务节点不提前
锁定),test_calc+test_settlements 22 passed

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-19 11:25:21 +08:00
..
__init__.py chore: 初始化项目结构与登录鉴权模块 2026-10-09 18:46:36 +08:00
conftest.py feat(migration): V8 业务答复口径落实——审批开关默认开启、撤试用期统一参数、经理基数开关、台账分摊唯一键 2026-10-19 11:09:05 +08:00
factories.py refactor(test): 集成工厂上提共用,submit_change 拆校验段,审计重试断言对齐全局兜底 2026-10-15 10:58:44 +08:00
test_approval_flow.py fix(m3): code-review 15 项修复(13 项落地,2 项依赖分摊语义记待办) 2026-10-16 14:23:53 +08:00
test_audit_retry.py refactor(test): 集成工厂上提共用,submit_change 拆校验段,审计重试断言对齐全局兜底 2026-10-15 10:58:44 +08:00
test_auth_flow.py chore: 初始化项目结构与登录鉴权模块 2026-10-09 18:46:36 +08:00
test_business_roles.py test(system): 补交岗位角色与参数管理集成用例(M1 遗漏入库) 2026-10-13 09:26:08 +08:00
test_businesses.py fix(business): 行金额乘积显式两位固化,计提比例对负天数钳制 2026-10-14 18:58:30 +08:00
test_calc.py fix(m3): code-review P0 六项——算错钱与不可用 2026-10-19 11:25:21 +08:00
test_customers.py style(backend): ruff format 统一此前批次的排版残留 2026-10-14 18:46:43 +08:00
test_health.py chore: 初始化项目结构与登录鉴权模块 2026-10-09 18:46:36 +08:00
test_log_query.py feat(system): 完成后端系统管理(审计/角色/操作日志/日志查询) 2026-10-10 16:28:04 +08:00
test_no_generator.py fix(no_generator): 编号 MAX 检索改长度优先排序,破解位宽进位后字典序失效 2026-10-14 14:09:30 +08:00
test_param_management.py feat(api): 计提参数查看放开登录用户、修改仅管理员(#17/#6 答复) 2026-10-19 11:19:16 +08:00
test_personnel.py style(backend): ruff format 统一此前批次的排版残留 2026-10-14 18:46:43 +08:00
test_products.py fix(product): 删除引用保护/单价小数位校验,IntegrityError 全局兜底转 400 2026-10-14 18:48:32 +08:00
test_ratings.py fix(rating): 区间重叠判定改用锁定读取,防并发重叠双提交 2026-10-14 19:01:11 +08:00
test_receipts.py refactor(test): 集成工厂上提共用,submit_change 拆校验段,审计重试断言对齐全局兜底 2026-10-15 10:58:44 +08:00
test_role_management.py feat(system): 完成后端系统管理(审计/角色/操作日志/日志查询) 2026-10-10 16:28:04 +08:00
test_schema_sync.py feat(migration): V8 业务答复口径落实——审批开关默认开启、撤试用期统一参数、经理基数开关、台账分摊唯一键 2026-10-19 11:09:05 +08:00
test_secondary_allocation.py fix(m3): code-review 15 项修复(13 项落地,2 项依赖分摊语义记待办) 2026-10-16 14:23:53 +08:00
test_settings.py feat(settings): 公司信息配置与 logo 管理(public 端点供登录页) 2026-10-15 18:22:12 +08:00
test_settlements.py fix(m3): code-review P0 六项——算错钱与不可用 2026-10-19 11:25:21 +08:00
test_shipments.py refactor(test): 集成工厂上提共用,submit_change 拆校验段,审计重试断言对齐全局兜底 2026-10-15 10:58:44 +08:00
test_user_management.py feat(system): 完成后端系统管理(审计/角色/操作日志/日志查询) 2026-10-10 16:28:04 +08:00