feat(sense): T-G7 审计+前端(live 分流接线 + tier 指标卡 + Settings 灰度区块)
- proxy/routes:sense.mode=live 时转发前调 Grader 分流,档位 -> 池条目 (tier_pool_hint 映射),响应头 X-Campus-Tier 透出(可解释性); T1 决策按 review.sample_rate 抽样入 ReviewQueue(sense_t1 标签, 人工核"判 T1 实为更高档");分级故障不影响代理可用性(D-G4) - /api/metrics:sense 段(enabled/mode/观察数/已标签/档位分布/shadow 一致率) - 前端:MetricsView「语义分级」卡片(观察/标签进度/一致率/晋升门提示); SettingsView「Sense 灰度控制」区块(总开关 + collect/shadow/live 切换 + 标签进度),npm run build 产物更新 - 全量 410 passed
This commit is contained in:
@@ -1177,6 +1177,30 @@ try:
|
||||
"pending": get_review().count(status="pending"),
|
||||
"total": get_review().count(),
|
||||
}
|
||||
# 语义分析器(T-G7):灰度状态 + 观察统计 + 档位分布 + shadow 一致率
|
||||
try:
|
||||
from gateway.sense.config import build_sense_config
|
||||
from gateway.sense.store import SenseStore
|
||||
scfg = build_sense_config(settings_store().to_dict())
|
||||
srows = SenseStore.init_db(scfg.db_path).all_observations(limit=100000)
|
||||
by_decided: Dict[str, int] = {}
|
||||
consistent = 0
|
||||
labeled = 0
|
||||
for r in srows:
|
||||
by_decided[r["decided_tier"]] = by_decided.get(r["decided_tier"], 0) + 1
|
||||
if r["executed_tier"] and r["decided_tier"] == r["executed_tier"]:
|
||||
consistent += 1
|
||||
if r["true_tier"]:
|
||||
labeled += 1
|
||||
out["sense"] = {
|
||||
"enabled": scfg.enabled, "mode": scfg.mode,
|
||||
"observations": len(srows), "labeled": labeled,
|
||||
"by_decided_tier": by_decided,
|
||||
"agreement": round(consistent / len(srows), 4) if srows else 0.0,
|
||||
"min_labels": scfg.min_labels,
|
||||
}
|
||||
except Exception:
|
||||
pass
|
||||
return out
|
||||
|
||||
except ImportError:
|
||||
|
||||
Reference in New Issue
Block a user