muse-agent-example/tests/集成/test_作者长期观察.py
zizi d909d1bd1b 后端实现与用例身份:19 包集成落地并修复收尾缺陷
实现侧:
- 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。
- 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。
- 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。
- 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。
- 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。
- 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。
- 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。
- 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。

用例侧:
- 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存;
- 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
2026-09-18 01:15:00 +08:00

112 lines
5.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""长期观察按确切改进版本分组,未知值与因果未定不被掩盖。"""
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"] == []