Files
X-Financial/document/development/2026-07-16/dev-logs/bugs/agent-run-tenant-isolation.md
caoxiaozhu 787bc3a481 feat(platform): close AI expense value loop
Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
2026-07-17 14:14:08 +08:00

2.8 KiB
Raw Permalink Blame History

修复记录

  • 22:10记录 bug 修复Agent Run 普通日志跨租户读取与统计泄露。
    • Git 提交检查22:10 执行 git fetch --all --pruneHEAD..origin/main 无新提交,本地比 origin/main ahead 17 个提交,范围为 661990b2 feat(expenses): add transactional expense case events242d68c3 feat(approval): add task workflow and waiver decisions,本次未合并或改写这些既有提交。
    • 修改:agent_run.py repository 将 route_json.tenant_idontology_json.tenant_id 的双重一致性条件下推到 SQL在排序和 limit 前完成租户过滤;任一标记缺失、空作用域或两处标记冲突的记录均 fail-closed详情也在数据库查询阶段按租户收窄。
    • 修改:agent_runs.py service 新增显式的租户级列表、统计和详情入口,保留带注释的受信任内部跨作用域入口;agent_run_access_policy.py 增加返回前二次租户校验,并把财务快照的角色与 data_scope 门禁同步下推,防止不可见快照挤占列表和统计窗口。
    • 修改Agent Run API 的列表、统计和详情统一使用当前认证租户;普通 run 的跨租户详情、无作用域旧记录和冲突标记记录均返回 404跨租户管理员也没有旁路工具 request_json/response_json、语义 raw_query 与错误统计不会跨租户暴露。
    • 修改:create_run 支持显式 tenant_id 并同时写入 route/ontology后续整体更新或 route 合并会保留已验证的双重标记发现调用方已有冲突标记时拒绝写入Orchestrator、Ontology、知识同步和财务快照的认证/租户感知创建路径已传入可信 tenant知识同步的活动任务复用也改为租户内查询。
    • 操作:新增 test_agent_run_tenant_security.py,构造 tenant-a、tenant-b、无作用域、冲突作用域和同租户财务快照覆盖 limit 前过滤、列表、统计、详情、跨租户 admin 及敏感载荷反向断言;全部命令均在 local-x-financial-linux 容器内以 60 秒超时执行。
    • 验证Agent Run、财务快照、Ontology 端点、Orchestrator 认证和知识服务定向回归 31 个测试通过;核心变更文件 Ruff、git diff --check、PostgreSQL 方言 SQL 编译与代码行数检查通过,最大核心文件 agent_runs.py 为 760 行,低于 800 行硬上限。额外 Ontology 全文件回归共 82 个通过、4 个既有业务信号识别用例失败,失败堆栈位于未由本次改动触碰的 _has_supported_business_signal 判定。
    • 影响Agent Run 日志现在以认证租户为强边界,其他租户、历史无归属记录及损坏作用域记录不再进入列表、统计或详情响应,同时保留内部后台任务按明确可信入口读取的兼容性。