test(business): 业务数据管理模块集成用例(70 例)与两处缺陷修复
- 覆盖:编号格式与序号递增/状态机终态拦截/三处汇总冗余一致性/跨业务批次 400/已核算禁改禁删/毛利润金标准与防除零/asOf 回溯/评级重叠/审计双记录 - 缺陷修复①:change_status 留痕 old_status 取到赋值后属性(时间线失真 3→3) - 缺陷修复②:freight_amount 漏金额校验(负数/三位小数可落库污染运费合计) - conftest 扩展业务六表清理(编号前缀 + FK 逆序收口)与评级种子基线恢复 - 全量回归 603 passed(单元 381 / 集成 222) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
1 parent
77e578085a
commit
ca4cc72eea
8 files changed
+2017
-5
No files matched your search
@@ -95,6 +95,12 @@ class ShipmentCreateIn(BaseModel):
|
||||
items: list[ShipmentItemIn] = Field(min_length=1, description="发货明细行,至少 1 行")
|
||||
remark: str | None = Field(default=None, max_length=255)
|
||||
|
||||
@field_validator("freight_amount")
|
||||
@classmethod
|
||||
def _check_freight(cls, value: str | None) -> str | None:
|
||||
"""运费同样是金额源数据:复用 _check_amount 拒负数/多小数位/超容量。"""
|
||||
return _check_amount(value, "运费金额", AMOUNT_MAX)
|
||||
|
||||
|
||||
class ShipmentUpdateIn(BaseModel):
|
||||
"""编辑发货单(明细全量替换)。
|
||||
@@ -112,6 +118,12 @@ class ShipmentUpdateIn(BaseModel):
|
||||
)
|
||||
remark: str | None = Field(default=None, max_length=255)
|
||||
|
||||
@field_validator("freight_amount")
|
||||
@classmethod
|
||||
def _check_freight(cls, value: str | None) -> str | None:
|
||||
"""运费同样是金额源数据:复用 _check_amount 拒负数/多小数位/超容量。"""
|
||||
return _check_amount(value, "运费金额", AMOUNT_MAX)
|
||||
|
||||
|
||||
class ShipmentQuery(PageQuery):
|
||||
"""发货单列表查询条件(字段名蛇形直出,与前端 api 封装同名对应)。
|
||||
|
||||
@@ -511,12 +511,15 @@ def change_status(
|
||||
if business.status == payload.status:
|
||||
raise BadRequestError("状态未变化")
|
||||
|
||||
# 变更前状态须在赋值前固化:ORM 属性赋值后 old_status 就取不到旧值
|
||||
# (留痕会记成 old==new 失真,时间线无法回溯)
|
||||
old_status = business.status
|
||||
business.status = payload.status
|
||||
business_repository.add_status_log(
|
||||
session,
|
||||
BusinessStatusLog(
|
||||
business_id=business_id,
|
||||
old_status=business.status,
|
||||
old_status=old_status,
|
||||
new_status=payload.status,
|
||||
change_reason=payload.reason,
|
||||
operator_id=operator.id,
|
||||
@@ -528,7 +531,7 @@ def change_status(
|
||||
logger.info(
|
||||
"业务状态变更 | business_id=%s | %s -> %s",
|
||||
business_id,
|
||||
business.status,
|
||||
old_status,
|
||||
payload.status,
|
||||
)
|
||||
return out
|
||||
|
||||
Reference in new issue
Block a user