from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_governance_metrics_dashboard_exposes_traceable_read_only_contract(): page = ( ROOT / "frontend/src/views/dataGovernance/development/governanceMetrics.vue" ).read_text(encoding="utf-8") model = ( ROOT / "frontend/src/views/dataGovernance/development/" "governanceMetricsModel.js" ).read_text(encoding="utf-8") api = (ROOT / "frontend/src/api/dataDevelopment.js").read_text( encoding="utf-8" ) routes = (ROOT / "frontend/src/router/routes.js").read_text( encoding="utf-8" ) center = ( ROOT / "frontend/src/views/dataGovernance/development/index.vue" ).read_text(encoding="utf-8") for text in ( "治理运营指标", "台账完整率", "责任覆盖率", "实体映射率", "问题闭环率", "问题复发率", "实时计算,非手工填报", "按服务端业务域授权过滤", "分子", "分母", "查看明细", "暂无数据", ): assert text in page or text in model for formula_fragment in ( "名称、位置、组织、责任人", "已明确责任人", "有效且未回滚实体合并", "已关闭质量问题", "发生次数大于一次", ): assert formula_fragment in page or formula_fragment in model for forbidden in ( "item.attributes", "item.evidence", "item.message", "item.config", "item.permission_scope", ): assert forbidden not in page assert "this.$snackbar.error" in page assert "this.$message" not in page assert "getGovernanceMetricSummary" in api assert "getGovernanceMetricDetails" in api assert "/data-governance/development/governance-metrics" in routes assert "governanceMetrics" in routes assert "治理运营指标" in center