实现侧: - 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。 - 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。 - 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。 - 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。 - 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。 - 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。 - 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。 - 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。 用例侧: - 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存; - 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
154 lines
5.6 KiB
Python
154 lines
5.6 KiB
Python
"""审校修订公开合同:基础检查、连续性发现与报告判定的确定性口径;不连数据库。"""
|
||
|
||
import pytest
|
||
|
||
from muse.审校修订.基础检查 import 判定必需通过, 运行基础检查
|
||
from muse.审校修订.接口 import 组装审校报告, 补齐报告身份
|
||
from muse.审校修订.模型 import 审校报告, 审校错误
|
||
from muse.审校修订.连续性审校 import 运行连续性审校
|
||
from muse.正文写作.模型 import 文本节点, 正文草稿, 段落
|
||
|
||
|
||
def 草稿(*文本: str) -> 正文草稿:
|
||
return 正文草稿(tuple(段落(f"p-{序}", (文本节点(段),)) for 序, 段 in enumerate(文本, start=1)))
|
||
|
||
|
||
细纲 = {
|
||
"targetChapter": 3,
|
||
"chapterGoal": "邮差在旧码头确认收信人。",
|
||
"hardConstraints": ["上一章结尾雨还没停。"],
|
||
"mustAppearEntities": ["lin-shen"],
|
||
"chapterEndHook": "仓库的门后有人应声。",
|
||
}
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-w15-basic-invalid",
|
||
environment="离线组件纯函数",
|
||
given="全空白正文",
|
||
when="运行基础检查",
|
||
then=["空内容失败", "结构失败"],
|
||
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
|
||
)
|
||
def test_空内容与空段结构失败且证据明确__a19b42():
|
||
报告 = 运行基础检查(草稿(" "))
|
||
项 = {c.名称: c for c in 报告.检查}
|
||
assert 报告.判定 == "failed"
|
||
assert 项["空内容"].判定 == "failed"
|
||
assert 项["结构"].判定 == "failed"
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-w15-basic-truncation",
|
||
environment="离线组件纯函数",
|
||
given="末段无收束标点或有收束",
|
||
when="运行基础检查",
|
||
then=["无收束判截断", "有收束通过"],
|
||
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
|
||
)
|
||
def test_末段无收束判截断合法收束不误报__b28c53():
|
||
截断 = 运行基础检查(草稿("林深走到跳板尽头,忽然停住"))
|
||
assert {c.名称: c for c in 截断.检查}["截断"].判定 == "failed"
|
||
收束 = 运行基础检查(草稿("林深把信递了过去。"))
|
||
assert {c.名称: c for c in 收束.检查}["截断"].判定 == "passed"
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-w15-basic-output",
|
||
environment="离线组件纯函数",
|
||
given="原始交付非合法 JSON",
|
||
when="运行基础检查",
|
||
then=["输出有效性失败"],
|
||
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
|
||
)
|
||
def test_原始交付损坏判输出有效性失败__c39d64():
|
||
好 = 运行基础检查(草稿("他收好信。"), 原始交付='{"paragraphs":[]}')
|
||
坏 = 运行基础检查(草稿("他收好信。"), 原始交付="{not-json")
|
||
assert {c.名称: c for c in 好.检查}["输出有效性"].判定 == "passed"
|
||
assert {c.名称: c for c in 坏.检查}["输出有效性"].判定 == "failed"
|
||
assert not 判定必需通过(坏)
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-w15-continuity-conflict",
|
||
environment="离线组件纯函数",
|
||
given="必出场缺失且复读硬约束短句",
|
||
when="运行连续性审校",
|
||
then=["conflict 级发现含泄漏短语"],
|
||
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
|
||
)
|
||
def test_必出场缺失与复读细纲措辞均为冲突级发现__d4ae75():
|
||
发现 = 运行连续性审校(
|
||
"林深把信压在掌心。上一章结尾雨还没停,他没有回头。",
|
||
细纲,
|
||
{"lin-shen": "林深"},
|
||
依据快照="snap-1",
|
||
).findings
|
||
类别 = [(f.类别, f.判定) for f in 发现]
|
||
assert ("引文", "conflict") in 类别
|
||
泄漏 = [f for f in 发现 if "复读" in f.说明]
|
||
assert 泄漏 and 泄漏[0].证据["leaked_phrase"]
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-w15-continuity-clean",
|
||
environment="离线组件纯函数",
|
||
given="出场齐全且不复读",
|
||
when="运行连续性审校",
|
||
then=["无发现", "覆盖记录含快照与规则版本"],
|
||
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
|
||
)
|
||
def test_出场齐全且不复读时无发现并记录覆盖__e5bf86():
|
||
报告 = 运行连续性审校(
|
||
"雨点敲着铁皮屋顶,林深把退回的信压在掌心,沿跳板走向仓库。",
|
||
细纲,
|
||
{"lin-shen": "林深"},
|
||
依据快照="snap-1",
|
||
)
|
||
assert 报告.findings == ()
|
||
assert 报告.coverage["依据快照"] == "snap-1"
|
||
assert 报告.coverage["规则版本"].startswith("w15")
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-w15-report-verdict",
|
||
environment="离线组件纯函数",
|
||
given="通过与失败两组输入",
|
||
when="组装审校报告",
|
||
then=["判定一致", "篡改总判定被拒"],
|
||
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
|
||
)
|
||
def test_报告总判定与基础及冲突发现一致且绑定版本__f6c097():
|
||
好报告 = 组装审校报告(
|
||
草稿("林深沿跳板走向仓库,把信递了过去。"),
|
||
细纲,
|
||
{"lin-shen": "林深"},
|
||
candidate_id="c-1",
|
||
candidate_revision=1,
|
||
snapshot_id="snap-1",
|
||
)
|
||
assert 好报告.verdict == "passed"
|
||
带身份 = 补齐报告身份(好报告)
|
||
assert 带身份.report_id
|
||
|
||
坏报告 = 组装审校报告(
|
||
草稿("上一章结尾雨还没停,他停住"),
|
||
细纲,
|
||
{"lin-shen": "林深"},
|
||
candidate_id="c-2",
|
||
candidate_revision=1,
|
||
snapshot_id="snap-1",
|
||
)
|
||
assert 坏报告.verdict == "failed"
|
||
|
||
with pytest.raises(审校错误):
|
||
审校报告(
|
||
"r-x",
|
||
"c-3",
|
||
1,
|
||
"snap-1",
|
||
好报告.basic,
|
||
坏报告.continuity,
|
||
"passed",
|
||
)
|