实现侧: - 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。 - 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。 - 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。 - 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。 - 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。 - 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。 - 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。 - 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。 用例侧: - 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存; - 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
77 lines
4.0 KiB
Python
77 lines
4.0 KiB
Python
"""隔离 PG 验证索引触发守卫与跨 owner 同事务回滚;本批未获外部执行授权。"""
|
|
|
|
import psycopg
|
|
import pytest
|
|
import test_上下文快照与索引写入 as 方法测试
|
|
|
|
from muse.上下文 import 索引维护
|
|
from muse.共享.调用身份 import 用途
|
|
|
|
pytestmark = pytest.mark.数据库
|
|
方法环境 = 方法测试.方法环境
|
|
|
|
|
|
@pytest.mark.case_id("NC-O07-INDEX-PG-001")
|
|
def test_索引所有写语句推进代次且失败事务整体回滚(方法环境):
|
|
_, 作者, 服务, 来源, _, 库 = 方法环境
|
|
回执 = 服务.提出方法(作者, "guard-proposal", 方法测试._提案(source_id=str(来源.source_id)))
|
|
方法测试._确认(服务, 作者, 回执["target_ref"])
|
|
with 库[用途.维护].连接(只读=True) as 连:
|
|
初始 = 连.execute("SELECT generation FROM muse_method_index_guard").fetchone()[0]
|
|
with pytest.raises(RuntimeError, match="回滚整个变更"):
|
|
with 库[用途.维护].连接() as 连, 连.transaction():
|
|
语句们 = (
|
|
"INSERT INTO muse_method_index SELECT * FROM muse_method_index WHERE false",
|
|
"UPDATE muse_method_index SET 检索文本=检索文本 || ' changed'",
|
|
"DELETE FROM muse_method_index WHERE false",
|
|
"TRUNCATE muse_method_index",
|
|
"INSERT INTO muse_method_index_version "
|
|
"(索引身份,embedder,method_count,active) "
|
|
"SELECT 索引身份,embedder,method_count,false "
|
|
"FROM muse_method_index_version WHERE false",
|
|
"UPDATE muse_method_index_version SET 索引身份=索引身份 || ' changed'",
|
|
"DELETE FROM muse_method_index_version WHERE false",
|
|
"TRUNCATE muse_method_index_version",
|
|
)
|
|
for 次数, 语句 in enumerate(语句们, 1):
|
|
连.execute(语句)
|
|
当前 = 连.execute("SELECT generation FROM muse_method_index_guard").fetchone()[0]
|
|
assert 当前 == 初始 + 次数
|
|
raise RuntimeError("回滚整个变更")
|
|
with 库[用途.维护].连接(只读=True) as 连:
|
|
assert 连.execute("SELECT generation FROM muse_method_index_guard").fetchone()[0] == 初始
|
|
assert 服务.核对索引(作者)["新鲜"]
|
|
|
|
|
|
@pytest.mark.case_id("NC-O07-INDEX-PG-002")
|
|
def test_派生索引完成后失败使正式版本条目头和代次一起回滚(方法环境, monkeypatch):
|
|
_, 作者, 服务, 来源, _, 库 = 方法环境
|
|
请求 = 方法测试._提案(source_id=str(来源.source_id))
|
|
回执 = 服务.提出方法(作者, "rollback-index", 请求)
|
|
with 库[用途.维护].连接(只读=True) as 连:
|
|
初始 = 连.execute("SELECT generation FROM muse_method_index_guard").fetchone()[0]
|
|
原提交 = 索引维护.方法索引参与者.提交
|
|
|
|
def 完成后失败(self, 连, 操作):
|
|
原提交(self, 连, 操作)
|
|
raise RuntimeError("派生保存后的故障")
|
|
|
|
monkeypatch.setattr(索引维护.方法索引参与者, "提交", 完成后失败)
|
|
with pytest.raises(RuntimeError, match="派生保存后的故障"):
|
|
方法测试._确认(服务, 作者, 回执["target_ref"])
|
|
详情 = 服务.读取方法详情(作者, 请求.method_id)
|
|
assert 详情["state"] == "proposed" and 详情["current_version"] == 0
|
|
assert 详情["versions"] == []
|
|
with 库[用途.维护].连接(只读=True) as 连:
|
|
assert 连.execute("SELECT generation FROM muse_method_index_guard").fetchone()[0] == 初始
|
|
assert 连.execute("SELECT count(*) FROM muse_method_index").fetchone()[0] == 0
|
|
assert 连.execute("SELECT count(*) FROM muse_method_index_version").fetchone()[0] == 0
|
|
|
|
|
|
@pytest.mark.case_id("NC-O07-INDEX-PG-003")
|
|
def test_应用角色不能直接复位索引代次(方法环境):
|
|
_, _, _, _, _, 库 = 方法环境
|
|
with pytest.raises(psycopg.errors.InsufficientPrivilege):
|
|
with 库[用途.生产].连接() as 连:
|
|
连.execute("UPDATE muse_method_index_guard SET generation=0")
|