feat: 数据治理4条规则 — 入库必检+元数据+编码规范+战略分级
This commit is contained in:
@@ -9,6 +9,7 @@ from datetime import datetime
|
||||
from app.database import get_db
|
||||
from app.auth_middleware import require_role
|
||||
from app.models import KPITemplate, KPIDefinition, OperationLog
|
||||
from app.api.kpi_governance import validate_kpi_payload, kpi_issues_message
|
||||
|
||||
router = APIRouter(prefix="/api/cma/templates", tags=["KPI模板库"],
|
||||
dependencies=[Depends(require_role("ceo", "finance", "business", "it"))],
|
||||
@@ -120,6 +121,20 @@ def instantiate_template(template_id: int, data: dict, db: Session = Depends(get
|
||||
if existing:
|
||||
raise HTTPException(400, f"KPI编码 {kpi_code} 已存在,请修改")
|
||||
|
||||
# 数据治理:入库必检(规则1) + 编码规范(规则3)
|
||||
merged = {
|
||||
"kpi_code": kpi_code,
|
||||
"kpi_name": kpi_name,
|
||||
"dimension": data.get("dimension", t.dimension),
|
||||
"category": data.get("category", t.category),
|
||||
"formula": data.get("formula", t.formula),
|
||||
"unit": data.get("unit", t.unit or "%"),
|
||||
"target_value": data.get("target_value", t.target_value),
|
||||
}
|
||||
gov_issues = [i for i in validate_kpi_payload(merged, db=db) if i["rule"] in (1, 3)]
|
||||
if gov_issues:
|
||||
raise HTTPException(422, detail={"message": "数据校验不通过", "errors": kpi_issues_message(gov_issues)})
|
||||
|
||||
kpi = KPIDefinition(
|
||||
template_id=t.id,
|
||||
is_system=0, # 从模板实例化的KPI不是系统预置
|
||||
|
||||
Reference in New Issue
Block a user