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