fix(cma): entity isolation batch5 (budget writes, kpi objectives scope, quality logs join, growth-quality db source, expenses scope)
ci/woodpecker/push/main Pipeline failed

This commit is contained in:
Hermes CI Fix
2026-09-21 10:36:02 +08:00
parent a0762b367f
commit 42ff836309
9 changed files with 906 additions and 115 deletions
+19 -9
View File
@@ -252,16 +252,27 @@ class TestGrowthQuality:
assert "overall" in data or "level" in data or "score" in data
def test_growth_quality_entity2(self, client: TestClient, db: Session):
"""博海增长质量(需绑定 entity2 的会话 token,鉴权收口后不再靠 body entity_id)"""
"""博海增长质量:企业名取库内 Entity.name,且不采信请求体指标(账套隔离 2026-09-21)
契约变更:原断言硬编码 ENTITY_DATA 的 "陕西博海网络科技"(该硬编码兜底已按
batch5 派单要求移除)→ 改为断言库内来源;无 kpi_values 时如实返回未采集。
"""
token2 = _token_for_entity(client, db, 2)
resp = client.post(f"{BASE}/growth-quality", json={"entity_id": 2},
resp = client.post(f"{BASE}/growth-quality", json={"entity_id": 2, "rebateRate": 99},
headers=auth_header(token2))
assert resp.status_code == 200
data = resp.json()
assert data["entity_name"] == "陕西博海网络科技"
assert data["entity_id"] == 2
assert data["entity_name"] == "企业2", "企业名应取库内 Entity.name,而非硬编码"
assert data["collected"] is False
assert data["overall"] is None, "库内无数据不得编造评分"
def test_growth_quality_custom(self, client: TestClient, db: Session):
"""自定义企业数据(低分场景)"""
"""自定义企业数据(低分场景)→ 契约变更:请求体指标不再被采信
原用例靠请求体 rebateRate/mgmtRatio 等打分得 danger;该回退已按 batch5 派单
要求移除 → 改为断言请求体指标被忽略、无库内数据即未采集(不编造评分)。
"""
token99 = _token_for_entity(client, db, 99)
resp = client.post(f"{BASE}/growth-quality", json={
"entity_id": 99,
@@ -271,8 +282,7 @@ class TestGrowthQuality:
}, headers=auth_header(token99))
assert resp.status_code == 200
data = resp.json()
assert data["entity_name"] == "测试企业"
assert data["overall"] < 2
assert data["level_type"] == "danger"
# 低分诊断
assert "越增长越重" in data["diagnosis"]
assert data["entity_name"] == "企业99", "企业名取库内,不取请求体 name"
assert data["collected"] is False
assert data["overall"] is None and data["level_type"] is None
assert data["dimensions"] == {} and data["diagnosis"] is None