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