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

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

89 lines
3.6 KiB
Python

"""按共同基线组合独立修改;不推测冲突,不丢掉空白和样式。"""
import pytest
from muse.正式变更.接口 import 变更错误
from muse.正文写作.接口 import 三方合并, 文本节点, 正文草稿, 段落, 段落差异
def 稿(first="开头", last="结尾"):
return 正文草稿(
(
段落("p1", (文本节点(first, ("emphasis",)),)),
段落("p2", ()),
段落("p3", (文本节点(last),)),
)
)
@pytest.mark.case_id(
"NC-w23-233001",
environment="默认离线",
given="有确切共同基线的正文分支",
when="选择差异、修改两端或按同命令重放",
then=["部分选择只合并该项且目标独立修改保持"],
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
)
def test_部分选择只合并该项且目标独立修改保持__233001():
base = 稿()
source = 稿("支线开头", "未选择的支线结尾")
target = 稿(last="作者主线结尾")
choices = 段落差异(base, source)
result = 三方合并(base, source, target, (choices[0]["change_id"],))
assert result == 稿("支线开头", "作者主线结尾")
assert result.paragraphs[1] == base.paragraphs[1]
@pytest.mark.case_id(
"NC-w23-233002",
environment="默认离线",
given="有确切共同基线的正文分支",
when="选择差异、修改两端或按同命令重放",
then=["目标插入导致位移仍精确合并原段"],
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
)
def test_目标插入导致位移仍精确合并原段__233002():
base, source = 稿(), 稿(last="支线结尾")
extra = 段落("extra", (文本节点("作者加的前言🙂e\u0301"),))
target = 正文草稿((extra, *base.paragraphs))
result = 三方合并(base, source, target, (段落差异(base, source)[0]["change_id"],))
assert result == 正文草稿((extra, *source.paragraphs))
assert base == 稿()
@pytest.mark.case_id(
"NC-w23-233003",
environment="默认离线",
given="有确切共同基线的正文分支",
when="选择差异、修改两端或按同命令重放",
then=["重叠修改或同位插入冲突不替作者决策"],
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
)
@pytest.mark.parametrize("insert", [False, True])
def test_重叠修改或同位插入冲突不替作者决策__233003(insert):
base, source, target = 稿(), 稿("支线开头"), 稿("主线开头")
if insert:
source = 正文草稿(
(base.paragraphs[0], 段落("s", (文本节点("支线插入"),)), *base.paragraphs[1:])
)
target = 正文草稿(
(base.paragraphs[0], 段落("t", (文本节点("主线插入"),)), *base.paragraphs[1:])
)
with pytest.raises(变更错误, match="冲突"):
三方合并(base, source, target, (段落差异(base, source)[0]["change_id"],))
@pytest.mark.case_id(
"NC-w23-233004",
environment="默认离线",
given="有确切共同基线的正文分支",
when="选择差异、修改两端或按同命令重放",
then=["相同修改仅保留一次且未知差异拒绝"],
contract="docs/系统架构/新版设计/模块设计/B05-正文写作.md",
)
def test_相同修改仅保留一次且未知差异拒绝__233004():
base, edited = 稿(), 稿("两边相同")
assert 三方合并(base, edited, edited, (段落差异(base, edited)[0]["change_id"],)) == edited
with pytest.raises(变更错误):
三方合并(base, edited, base, ("not-a-change",))