实现侧: - 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。 - 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。 - 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。 - 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。 - 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。 - 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。 - 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。 - 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。 用例侧: - 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存; - 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
80 lines
3.0 KiB
Python
80 lines
3.0 KiB
Python
"""运行观察的公开请求不接受伪造成功标签或不完整的来源定位。"""
|
|
|
|
from dataclasses import asdict
|
|
from uuid import uuid4
|
|
|
|
import pytest
|
|
from pydantic import TypeAdapter, ValidationError
|
|
|
|
from muse.作者经验.接口 import 运行观察来源, 运行观察请求
|
|
from muse.共享.错误 import Muse错误
|
|
|
|
|
|
def _请求():
|
|
return 运行观察请求(
|
|
(运行观察来源(str(uuid4()), str(uuid4()), 1, "a" * 64),),
|
|
"检查步骤结束",
|
|
"仍需人工判断。",
|
|
"这次运行只记录技术状态。",
|
|
)
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-w26-265201",
|
|
environment="离线",
|
|
given="固定请求、来源与作者;按用例环境准备独立测试输入",
|
|
when="通过实际公开入口执行并核对拒绝、状态及持久结果",
|
|
then=["外部请求不能注入效果状态或自报实际费用"],
|
|
contract="docs/系统架构/新版设计/模块设计/B07-作者经验.md#有来源的运行观察",
|
|
)
|
|
@pytest.mark.parametrize(
|
|
"field,value", [("kind", "win"), ("state", "promoted"), ("effective", True), ("cost_usd", "0")]
|
|
)
|
|
def test_外部请求不能注入效果状态或自报实际费用__265201(field, value):
|
|
payload = {**asdict(_请求()), field: value}
|
|
with pytest.raises(ValidationError):
|
|
TypeAdapter(运行观察请求).validate_python(payload)
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-w26-265202",
|
|
environment="离线",
|
|
given="固定请求、来源与作者;按用例环境准备独立测试输入",
|
|
when="通过实际公开入口执行并核对拒绝、状态及持久结果",
|
|
then=["来源必须是完整具名版本"],
|
|
contract="docs/系统架构/新版设计/模块设计/B07-作者经验.md#有来源的运行观察",
|
|
)
|
|
@pytest.mark.parametrize(
|
|
"field,value",
|
|
[
|
|
("revision", True),
|
|
("revision", 0),
|
|
("task_id", "arbitrary-run"),
|
|
("attempt_id", ""),
|
|
("content_hash", "x" * 64),
|
|
("business_kind", "skill"),
|
|
("business_ref", "unbound-source"),
|
|
],
|
|
)
|
|
def test_来源必须是完整具名版本__265202(field, value):
|
|
payload = asdict(_请求())
|
|
payload["sources"][0][field] = value
|
|
with pytest.raises((Muse错误, ValidationError)):
|
|
TypeAdapter(运行观察请求).validate_python(payload)
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-w26-265203",
|
|
environment="离线",
|
|
given="固定请求、来源与作者;按用例环境准备独立测试输入",
|
|
when="通过实际公开入口执行并核对拒绝、状态及持久结果",
|
|
then=["请求序列化仍保留来源原话与未知业务来源"],
|
|
contract="docs/系统架构/新版设计/模块设计/B07-作者经验.md#有来源的运行观察",
|
|
)
|
|
def test_请求序列化仍保留来源原话与未知业务来源__265203():
|
|
request = _请求()
|
|
adapter = TypeAdapter(运行观察请求)
|
|
restored = adapter.validate_json(adapter.dump_json(request))
|
|
assert restored == request and restored.sources[0].business_kind == ""
|
|
assert restored.quote == "仍需人工判断。"
|