M9 补丁:启动冒烟修复——镜树列表 str 属性访问、内置能力平台作用域与种子提交缺失

真实进程冒烟(灵台+神识起进程 → 登录 → 能力目录 → 授契 → 调用)抓到三处缺陷,全量测试因分支未覆盖而漏网:
① mirror_tree.list_trees:select(Character.id).scalars() 已返回 id 字符串,c.id 属性访问在有 character 的 owner 上必炸(M2a 引入,测试只走了无 character 分支)——改为直接收集
② 内置能力种子写死 owner_scope=local-user,真实用户(UUID owner)查不到能力目录——引入 PLATFORM_SCOPE:builtin 能力挂平台域全局可见可授契,自定义能力仍按 owner 隔离
③ ensure_governance_seed 缺 session.commit——种子数据未提交即随启动 session 回滚(直调误读为成功因同 session 可见未提交数据)
冒烟证据:未授契调用 403 HJ-1303 留痕 → 授行契 → 调用 ok 返回观察标证;能力目录 4 项(builtin.datetime/echo/qiankun.shell/web.fetch);全量回归 349 passed 不变
另:本地 .env 补入神识段(SHENSHI_BASE_URL=127.0.0.1:8080 接真神识)
This commit is contained in:
chenxin committed 2026-08-28 10:06:35 +08:00
1 parent 2483a25f63
commit 3c050b923c
3 files changed
+36 -14

No files matched your search

+3 -1
View File
@@ -4,6 +4,7 @@ from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.domains.baigong.models import Capability
from app.domains.baigong.service import PLATFORM_SCOPE
_BUILTIN_CAPABILITIES = [
# name, 描述, 执行类型, 执行器, 四维风险, 数据范围, 目的地, consent
@@ -71,7 +72,7 @@ async def _seed_capabilities(session: AsyncSession) -> None:
session.add(
Capability(
name=name,
owner_scope="local-user",
owner_scope=PLATFORM_SCOPE,
description=desc,
executor_type=executor_type,
executor_ref=ref,
@@ -89,3 +90,4 @@ async def _seed_capabilities(session: AsyncSession) -> None:
async def ensure_governance_seed(session: AsyncSession) -> None:
"""启动幂等登记内置能力。"""
await _seed_capabilities(session)
await session.commit()