docs(management): 批次B终评收尾——validate_config补源名唯一性+遗留观察项归档
批次B终评Approve后两处闭环: - validate_config补源指标名跨维度唯一校验(comparisons按源名建键的 静默覆盖防线)+测试 - 观察项归档:call_band样本基数(批次F)/源名唯一(已修)/性能与winsorize(批次F)
This commit is contained in:
@@ -108,6 +108,8 @@ def validate_config(config: dict) -> list[str]:
|
||||
- grade_bounds 须含 A/B/C/D 且严格降序
|
||||
- 指标 code 跨维度不得重复:metrics_detail 为扁平 dict,
|
||||
同名 code 会相互覆盖(后写胜出)
|
||||
- 源指标名跨维度不得重复:employees 行 comparisons 按源名建键
|
||||
(api_assembly._code_to_source),两个 code 指向同一源名会静默覆盖
|
||||
"""
|
||||
problems: list[str] = []
|
||||
dims = config.get("dimensions", {})
|
||||
@@ -125,6 +127,7 @@ def validate_config(config: dict) -> list[str]:
|
||||
f"(当前 A={gb['A']} B={gb['B']} C={gb['C']} D={gb['D']})"
|
||||
)
|
||||
seen_codes: dict[str, str] = {}
|
||||
seen_sources: dict[str, str] = {}
|
||||
for key, dim in dims.items():
|
||||
if dim.get("status") == "pending_data":
|
||||
continue
|
||||
@@ -133,6 +136,13 @@ def validate_config(config: dict) -> list[str]:
|
||||
problems.append(f"指标 code 重复定义于多维度: {code}")
|
||||
seen_codes[code] = key
|
||||
src = spec.get("metric", code)
|
||||
if src in seen_sources:
|
||||
problems.append(
|
||||
f"{key}.{code} 与 {seen_sources[src]} 指向同一源指标 {src}"
|
||||
f"(comparisons 键域将相互覆盖)"
|
||||
)
|
||||
else:
|
||||
seen_sources[src] = f"{key}.{code}"
|
||||
if src not in METRIC_DEFINITIONS:
|
||||
problems.append(f"{key}.{code} 引用未定义指标 {src}")
|
||||
mtype = spec.get("type")
|
||||
|
||||
Reference in New Issue
Block a user