code-to10 v6 A12: scorecard example renamed to 2026-10-31 snapshot with timeliness fields
(cherry picked from commit 633cdbc94e7a7b0c5d3b0b135189faf3de6673f4) Reconcile-port: handler_admin.py hunks redirected into cloud/server.py _audit_scorecard (target keeps 6-mixin split; scorecard module itself applied cleanly).
This commit is contained in:
1 parent
bbc7103dec
commit
c25854fff7
4 files changed
+39
-19
No files matched your search
@@ -467,13 +467,16 @@ def build_scorecard(evidence, thresholds=None):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def example_scorecard_current_state():
|
def example_scorecard_as_of_2026_10_31():
|
||||||
"""用当前真实状态证据跑出来的系统评分卡(不是上一轮判断分)。
|
"""2026-10-31 快照示例卡(历史示例,不是当前系统得分)。
|
||||||
|
|
||||||
证据口径:生产仍跑 v0.2、main 仍 aebc623、CI 账单模式、
|
证据是本函数 2026-10-31 落笔时记录的快照值(生产 v0.2、
|
||||||
#238/#240/#244/#241/#247/#249/#253/#255/#256/#258/#259/#260/#261
|
main aebc623、覆盖率 0.7787 等),此后未重新实测;调用方
|
||||||
全部只到 PR OPEN。凡是只到 PR、未合并部署、未真实验证的,
|
绝不能把它读成当前系统得分。要当前分数,须显式把新证据
|
||||||
在这里都记为未知或已知未强制,不估算、不写成判断分。
|
传给 build_scorecard()。凡是只到 PR、未合并部署、未真实
|
||||||
|
验证的,在这里都记为未知或已知未强制,不估算、不写成
|
||||||
|
判断分。阈值仍为测试默认值
|
||||||
|
(source="test_default_unapproved"),未拍板。
|
||||||
总体结论必然是不达标。
|
总体结论必然是不达标。
|
||||||
"""
|
"""
|
||||||
evidence = {
|
evidence = {
|
||||||
@@ -513,4 +516,8 @@ def example_scorecard_current_state():
|
|||||||
"parallel_scale_proven": 18,
|
"parallel_scale_proven": 18,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return build_scorecard(evidence)
|
report = build_scorecard(evidence)
|
||||||
|
report["evidence_as_of"] = "2026-10-31"
|
||||||
|
report["evidence_kind"] = "historical_example_snapshot"
|
||||||
|
report["not_current_system_score"] = True
|
||||||
|
return report
|
||||||
+13
-7
@@ -9035,17 +9035,20 @@ pid 须为整数、address 须为字符串,否则 400(注册表里的
|
|||||||
|
|
||||||
权限:与 /metrics 同款,任意项目成员即可读(不要求 owner),
|
权限:与 /metrics 同款,任意项目成员即可读(不要求 owner),
|
||||||
但本端点不统计任何项目数据、不写库、不写账本、不改链头、
|
但本端点不统计任何项目数据、不写库、不写账本、不改链头、
|
||||||
不触发推回或重审——它只是把评分卡模块的当前状态报出来。
|
不触发推回或重审——它只返回评分卡模块的一张历史示例卡。
|
||||||
主基底(main)上没有存放结构化评分证据的表(metrics-report、
|
该示例卡的证据是 2026-10-31 的快照(见
|
||||||
台账、账本、门禁模块都在未合并的 PR 分支上),所以本端点
|
``example_scorecard_as_of_2026_10_31``),此后未重新
|
||||||
在主基底上返回的只能是“全部未知/已知未强制”的诚实状态,
|
实测,响应里以 ``evidence_as_of`` /
|
||||||
总体必然是不达标;调用方要拿到真实分数,必须显式把结构化
|
``not_current_system_score`` 明示;调用方绝不能把它读
|
||||||
|
成当前系统得分。调用方要拿到真实分数,必须显式把结构化
|
||||||
证据传给 cloud/audit_scorecard.py 的 build_scorecard(),
|
证据传给 cloud/audit_scorecard.py 的 build_scorecard(),
|
||||||
端点本身绝不从测试文件、摘要文档、PR 描述里拼凑分数。
|
端点本身绝不从测试文件、摘要文档、PR 描述里拼凑分数。
|
||||||
|
阈值仍为测试默认值(``test_default_unapproved``),未拍板。
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
from cloud.audit_scorecard import example_scorecard_current_state
|
from cloud.audit_scorecard import (
|
||||||
report = example_scorecard_current_state()
|
example_scorecard_as_of_2026_10_31)
|
||||||
|
report = example_scorecard_as_of_2026_10_31()
|
||||||
except ImportError: # pragma: no cover - 导入失败时仍要诚实返回
|
except ImportError: # pragma: no cover - 导入失败时仍要诚实返回
|
||||||
report = {
|
report = {
|
||||||
"dimensions": [], "average_score": None,
|
"dimensions": [], "average_score": None,
|
||||||
@@ -9054,6 +9057,9 @@ pid 须为整数、address 须为字符串,否则 400(注册表里的
|
|||||||
"missing_items": ["audit_scorecard_module_unavailable"],
|
"missing_items": ["audit_scorecard_module_unavailable"],
|
||||||
"untested_items": [],
|
"untested_items": [],
|
||||||
"thresholds_source": "test_default_unapproved",
|
"thresholds_source": "test_default_unapproved",
|
||||||
|
"evidence_as_of": "2026-10-31",
|
||||||
|
"evidence_kind": "historical_example_snapshot",
|
||||||
|
"not_current_system_score": True,
|
||||||
}
|
}
|
||||||
self._send_json(200, report)
|
self._send_json(200, report)
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ from pathlib import Path
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from cloud.audit_scorecard import (
|
from cloud.audit_scorecard import (
|
||||||
DEFAULT_THRESHOLDS, build_scorecard, example_scorecard_current_state)
|
DEFAULT_THRESHOLDS, build_scorecard, example_scorecard_as_of_2026_10_31)
|
||||||
from cloud.auth import AuthStore
|
from cloud.auth import AuthStore
|
||||||
from cloud.server import create_server
|
from cloud.server import create_server
|
||||||
except ImportError:
|
except ImportError:
|
||||||
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))
|
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))
|
||||||
from cloud.audit_scorecard import (
|
from cloud.audit_scorecard import (
|
||||||
DEFAULT_THRESHOLDS, build_scorecard, example_scorecard_current_state)
|
DEFAULT_THRESHOLDS, build_scorecard, example_scorecard_as_of_2026_10_31)
|
||||||
from cloud.auth import AuthStore
|
from cloud.auth import AuthStore
|
||||||
from cloud.server import create_server
|
from cloud.server import create_server
|
||||||
|
|
||||||
@@ -161,9 +161,16 @@ class ScorecardTestCase(unittest.TestCase):
|
|||||||
|
|
||||||
def test_example_current_state_is_not_pass_and_not_estimated(self):
|
def test_example_current_state_is_not_pass_and_not_estimated(self):
|
||||||
# 示例是系统用当前真实状态证据算出来的,不是上一轮判断分。
|
# 示例是系统用当前真实状态证据算出来的,不是上一轮判断分。
|
||||||
report = example_scorecard_current_state()
|
report = example_scorecard_as_of_2026_10_31()
|
||||||
self.assertEqual(report["overall"], "not_pass")
|
self.assertEqual(report["overall"], "not_pass")
|
||||||
self.assertFalse(report["overall_pass"])
|
self.assertFalse(report["overall_pass"])
|
||||||
|
# 时效标注:示例卡是 2026-10-31 快照,不是当前系统得分。
|
||||||
|
self.assertEqual(report["evidence_as_of"], "2026-10-31")
|
||||||
|
self.assertEqual(report["evidence_kind"],
|
||||||
|
"historical_example_snapshot")
|
||||||
|
self.assertTrue(report["not_current_system_score"])
|
||||||
|
self.assertEqual(report["thresholds_source"],
|
||||||
|
"test_default_unapproved")
|
||||||
# 至少有一维是未知(None),且总体不达标不靠平均分。
|
# 至少有一维是未知(None),且总体不达标不靠平均分。
|
||||||
self.assertTrue(any(d["score"] is None
|
self.assertTrue(any(d["score"] is None
|
||||||
for d in report["dimensions"]))
|
for d in report["dimensions"]))
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import unittest
|
|||||||
from cloud.audit_scorecard import (
|
from cloud.audit_scorecard import (
|
||||||
DEFAULT_THRESHOLDS,
|
DEFAULT_THRESHOLDS,
|
||||||
build_scorecard,
|
build_scorecard,
|
||||||
example_scorecard_current_state,
|
example_scorecard_as_of_2026_10_31,
|
||||||
_result,
|
_result,
|
||||||
_round1,
|
_round1,
|
||||||
_score_higher,
|
_score_higher,
|
||||||
@@ -398,7 +398,7 @@ class OverallTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(card["thresholds_source"], "user_approved")
|
self.assertEqual(card["thresholds_source"], "user_approved")
|
||||||
|
|
||||||
def test_example_current_state_is_not_pass(self):
|
def test_example_current_state_is_not_pass(self):
|
||||||
card = example_scorecard_current_state()
|
card = example_scorecard_as_of_2026_10_31()
|
||||||
self.assertEqual(card["overall"], "not_pass")
|
self.assertEqual(card["overall"], "not_pass")
|
||||||
self.assertTrue(card["missing_items"] or card["untested_items"])
|
self.assertTrue(card["missing_items"] or card["untested_items"])
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user