test(base): 基础数据管理模块集成用例(48 例)与审计盲区修复
- 覆盖:401/引用校验/删除保护/子表全量替换/类别与组合唯一/归属变更留痕/审计双记录 - 缺陷修复:personnel/product/customer 三 service 的前置校验移入审计上下文, 校验失败(400)同样留痕(成功与失败都记的既定原则) - conftest 兜底清理扩展到 M2 五表(留痕无外键,按 operator_name + 前缀双轨清理) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
1 parent
15de81dd2c
commit
ca88ee7a0b
12 files changed
+1090
-29
No files matched your search
@@ -146,7 +146,6 @@ def create_product(
|
||||
|
||||
:raises BadRequestError: 产品类别不合法 / 已存在同名称同规格的产品
|
||||
"""
|
||||
_ensure_category(payload.product_category)
|
||||
with audit_service.audit(
|
||||
session,
|
||||
operator=operator,
|
||||
@@ -158,8 +157,13 @@ def create_product(
|
||||
),
|
||||
meta=meta,
|
||||
):
|
||||
# 值域校验在审计上下文内:类别非法的 400 也要留痕(成功与失败都记)
|
||||
_ensure_category(payload.product_category)
|
||||
spec_model = payload.spec_model or "" # 归一空串:组合唯一键对 NULL 不去重
|
||||
if product_repository.get_by_name_spec(session, payload.product_name, spec_model) is not None:
|
||||
if (
|
||||
product_repository.get_by_name_spec(session, payload.product_name, spec_model)
|
||||
is not None
|
||||
):
|
||||
raise BadRequestError("已存在同名称同规格的产品")
|
||||
|
||||
product = Product(
|
||||
@@ -182,9 +186,7 @@ def create_product(
|
||||
session.rollback()
|
||||
_raise_if_duplicate(exc)
|
||||
|
||||
logger.info(
|
||||
"新增产品 | product_id=%s | category=%s", product.id, payload.product_category
|
||||
)
|
||||
logger.info("新增产品 | product_id=%s | category=%s", product.id, payload.product_category)
|
||||
return out
|
||||
|
||||
|
||||
@@ -202,7 +204,6 @@ def update_product(
|
||||
:raises BadRequestError: 产品类别不合法 / 已存在同名称同规格的产品
|
||||
"""
|
||||
product = product_repository.get_by_id(session, product_id)
|
||||
_ensure_category(payload.product_category)
|
||||
with audit_service.audit(
|
||||
session,
|
||||
operator=operator,
|
||||
@@ -214,6 +215,8 @@ def update_product(
|
||||
),
|
||||
meta=meta,
|
||||
):
|
||||
# 值域校验在审计上下文内:类别非法的 400 也要留痕(同 create 口径)
|
||||
_ensure_category(payload.product_category)
|
||||
if product is None:
|
||||
raise NotFoundError("产品不存在")
|
||||
|
||||
|
||||
Reference in new issue
Block a user