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

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

81 lines
3.0 KiB
Python

"""章后登记合同:同批事实去重与按需发布的故障区分。"""
from __future__ import annotations
import pytest
from muse.任务运行.接口 import 任务服务
from muse.共享.错误 import Muse错误
class _资源缺失错误(Muse错误):
错误码 = "RESOURCE_MISSING"
class _假数据库:
"""只承载身份字段;可按需发布不连接数据库。"""
用途 = "production"
class _假处理器:
def 获取(self, 处理器ID, 版本):
raise AssertionError("按需发布不应装配处理器")
def _服务(提供者):
服务 = 任务服务(_假数据库(), _假处理器())
if 提供者 is not None:
服务.设置计划提供者(提供者)
return 服务
@pytest.mark.case_id(
"NC-r2-c08a01",
environment="离线单元",
given="同一批抽取结果里同一对象与类型出现两条不同引文的事实",
when="过滤待提案事实",
then=["只保留首条", "重复项按 REPEAT_OBJECT_TYPE 记入跳过,不让命令身份相撞"],
contract="docs/系统架构/新版设计/模块设计/S02-任务运行.md",
)
def test_同批同对象同类型事实只保留首条并记录跳过__c08a01() -> None:
from muse.编排.章后处理 import 事实批内去重
记录列表 = [
{"项": {"object_id": "o1", "type": "角色", "quote": "甲"}, "结构选择": "s1", "引文": "甲"},
{"项": {"object_id": "o1", "type": "角色", "quote": "乙"}, "结构选择": "s1", "引文": "乙"},
{"项": {"object_id": "o1", "type": "关系", "quote": "甲"}, "结构选择": "s2", "引文": "甲"},
{"项": {"object_id": "o2", "type": "角色", "quote": "丙"}, "结构选择": "s1", "引文": "丙"},
]
保留, 跳过 = 事实批内去重(记录列表)
assert [记录["项"]["quote"] for 记录 in 保留] == ["甲", "甲", "丙"]
assert 跳过 == [{"object_id": "o1", "原因": "REPEAT_OBJECT_TYPE"}]
@pytest.mark.case_id(
"NC-r2-c08a02",
environment="离线单元",
given="未设置提供者、流程未登记、流程可发布、资源缺失四种装配状态",
when="询问章后流程能否按需发布",
then=["只有流程未登记返回假", "资源缺失等部署故障照常抛出,不伪装成未发布"],
contract="docs/系统架构/新版设计/模块设计/S02-任务运行.md",
)
def test_按需发布只对未登记流程返回假且不掩盖资源故障__c08a02() -> None:
assert _服务(None).可按需发布("章后处理", "1") is False
def 未登记(流程ID: str, 版本: str):
return None
assert _服务(未登记).可按需发布("章后处理", "1") is False
def 已登记(流程ID: str, 版本: str):
return object()
assert _服务(已登记).可按需发布("章后处理", "1") is True
def 资源缺失(流程ID: str, 版本: str):
raise _资源缺失错误("作者流程版本未在当前安装包登记")
with pytest.raises(_资源缺失错误):
_服务(资源缺失).可按需发布("章后处理", "1")