"""长期观察按确切改进版本分组,未知值与因果未定不被掩盖。""" from dataclasses import replace from uuid import uuid4 import pytest import test_作者偏好与反馈 as 偏好测试 import test_具体改进与回执 as 改进测试 import test_方法启用凭据 as 启用测试 from muse.作者经验.接口 import 改进定位, 观察请求 from muse.共享.错误 import Muse错误 pytestmark = pytest.mark.数据库 环境 = 偏好测试.环境 候选环境 = 偏好测试.候选环境 方法环境 = 启用测试.方法环境 @pytest.mark.case_id( "NC-w26-26d001", environment="隔离PG、实际B10/S01/B04与合成HTTP;不认证外部文学效果", given="确切方法版本、真实反馈和同作者用途配置", when="登记具体改进、实际验证和owner启停并恢复已提交结果;记录分版本观察", then=["观察未知指标不填零且自报不认证因果"], contract="docs/系统架构/新版设计/模块设计/B07-作者经验.md", ) def test_观察未知指标不填零且自报不认证因果__26d001(环境): service, author, _, feedback = 环境 fid = str(service.记录反馈(author, "feedback", feedback)["feedback_id"]) unknown = 观察请求((fid,), "尚未记录耗时和费用。") saved = service.记录观察(author, "unknown", unknown) assert service.记录观察(author, "unknown", unknown) == saved summary = service.读取观察(author)["groups"][0] assert all(m == {"known": 0, "unknown": 1, "total": None} for m in summary["metrics"].values()) service.记录观察( author, "known", 观察请求( (fid,), "这次没有返工,费用为零。", review_seconds=30, rework_count=0, cost_usd="0" ), ) report = service.读取观察(author) assert report["groups"][0]["metrics"]["cost_usd"] == {"known": 1, "unknown": 1, "total": "0"} assert report["groups"][0]["metrics"]["false_positives"]["total"] is None assert report["groups"][0]["causality"] == "not_established" assert all( r["payload"]["measurement_source"] == "author_report" for r in report["observations"] ) assert service.列出偏好(author) == [] @pytest.mark.case_id( "NC-w26-26d002", environment="隔离PG、实际B10/S01/B04与合成HTTP;不认证外部文学效果", given="确切方法版本、真实反馈和同作者用途配置", when="登记具体改进、实际验证和owner启停并恢复已提交结果;记录分版本观察", then=["不同改进版本的长期观察不混算也不启用目标"], contract="docs/系统架构/新版设计/模块设计/B07-作者经验.md", ) def test_不同改进版本的长期观察不混算也不启用目标__26d002(方法环境): env = 启用测试._确认方法({"actor": 方法环境[1]}, 方法环境) service, request, point = 改进测试._提案(env) service.记录观察( env["owner"], "first", 观察请求( request.feedback_ids, "第一版耗时一分钟。", point, review_seconds=60, cost_usd="0.75" ), ) revised = service.提出改进( env["owner"], replace(request, expected_revision=1, rationale="第二版明确限制适用范围。") ) other = 改进定位(request.improvement_id, revised["revision"], revised["content_hash"]) service.记录观察( env["owner"], "second", 观察请求( request.feedback_ids, "第二版仍需复查。", other, review_seconds=120, false_positives=2 ), ) groups = service.读取观察(env["owner"], request.improvement_id)["groups"] assert [g["revision"] for g in groups] == [1, 2] assert [g["metrics"]["review_seconds"]["total"] for g in groups] == [60, 120] assert groups[1]["metrics"]["cost_usd"]["total"] is None assert service.读取改进(env["owner"], request.improvement_id)["target_state"] == "confirmed" @pytest.mark.case_id( "NC-w26-26d003", environment="隔离PG、实际B10/S01/B04与合成HTTP;不认证外部文学效果", given="确切方法版本、真实反馈和同作者用途配置", when="登记具体改进、实际验证和owner启停并恢复已提交结果;记录分版本观察", then=["观察拒绝假来源跨作者及无效指标"], contract="docs/系统架构/新版设计/模块设计/B07-作者经验.md", ) def test_观察拒绝假来源跨作者及无效指标__26d003(环境): service, author, _, feedback = 环境 fid = str(service.记录反馈(author, "feedback", feedback)["feedback_id"]) for args in [ {"cost_usd": "NaN"}, {"cost_usd": "-1"}, {"review_seconds": -1}, {"rework_count": True}, ]: with pytest.raises(Muse错误): 观察请求((fid,), "观测原话", **args) for who, source in [(author, str(uuid4())), (replace(author, 作者="stranger"), fid)]: with pytest.raises(Muse错误): service.记录观察(who, "invalid", 观察请求((source,), "需要真实来源。")) assert service.读取观察(author)["observations"] == []