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:
liuwenxinandClaude Code committed 2026-10-13 11:22:34 +08:00
1 parent 15de81dd2c
commit ca88ee7a0b
12 files changed
+1090 -29

No files matched your search

+9 -6
View File
@@ -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("产品不存在")