Files
X-Financial/document/development/2026-07-17/dev-logs/bugs/agent-asset-tenant-isolation-and-onlyoffice-security.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

3.3 KiB
Raw Permalink Blame History

修复记录

  • 13:08修复 AgentAsset 全局读写、跨租户子记录注入、风险样本串租户、审核身份伪造和 ONLYOFFICE 匿名/可重放回调问题。
    • Git 提交检查:已执行 git fetch --all --prunegit status -sbgit log HEAD..@{u}git log @{u}..HEADorigin/main 无新提交,本地 main ahead 17工作区包含多智能体并行未提交变更且未被清理或覆盖。
    • 本地 ahead 摘要:242d68c3 审批任务与豁免、28b834ed 审批动作幂等回放、4940ebc4 风险处置流程、ee88a36b 租户安全分层学习、6bdf65bc 权威预审、ae3f02c3 零录入票据关联、54754b55 个人报销记忆、211f85d9 已验证申请工作流、5b246307 申请预览决策、a662cfe6 AI 反馈账本、5ed34c2b 历史申请回填、11275e4b 迁移 ownership 安全、1347366b 时间线与草稿事件安全、22669a90 统一费用时间线、a616b30c AI 申请事务、653eda05 不透明会话、661990b2 费用案例事务事件。
    • 修改:为 AgentAsset、Version、Review、TestRun 和 RuleFeedback 增加结构化 tenant_id + scope所有资产、发布、监控、召回、遥测、调度、foundation 和风险运行时查询接入企业/平台作用域;同编码按企业优先、平台回退解析,跨企业资源统一不可见,平台资产仅平台管理员可写。
    • 修改:真实风险场景强制显式目标企业并先按 ExpenseClaim.tenant_id 过滤;测试证据归目标企业;版本、审核和规则表变更主体改为登录会话中的稳定 employee/username 标识,客户端 actor/reviewer 不能覆盖审计事实。
    • 修改:新增 DB-backed ONLYOFFICE content/callback 会话和 active → processing → consumed|failed 原子状态机token 绑定租户、资源、资产、document key/version/fingerprint、权限、actor、audience、时间和 JTI平台只读、跨资产、旧版本、错 key、过期和重放回调均拒绝。
    • 修改:回调复用安全下载器,限制配置 origin校验 DNS 全部地址并固定已验证公网 IP拒绝重定向、超限、错误 MIME、危险 ZIP 和异常 OOXML新增 20260717_0026 迁移并对无法归属的旧数据和有企业事实的 downgrade fail-closed。
    • 操作:拆出 AgentAsset access/serialization/ONLYOFFICE security 与风险规则字段推断模块;将核心文件控制在 800 行以内;补齐功能 CONCEPT/TODO 和迁移、权限、安全回归测试。
    • 验证:容器内发布/监控/召回/运行时/调度/遥测/租户安全/ONLYOFFICE 汇总 58 项通过AgentAsset service/foundation 28 项通过;风险生成/修订/golden 49 项通过;相关文件 Ruff、py_compile、ORM mapper84 张表)和 git diff --check 均通过。
    • 验证:一次性 PostgreSQL 探针完成旧平台数据升级、同编码多企业、scope/check、跨租户复合外键和有事实 downgrade 保护;新库 base → head(0028)head → 0025 → head 均成功AgentAsset 与 Knowledge ONLYOFFICE 会话表正常创建。
    • 影响:企业只能读取本企业和平台只读资产,无法观察或修改其他企业的资产、版本、审核和测试证据;规则测试不会抽取其他企业费用;审计身份不可由请求伪造;文档回写失败时保持原文件不变,也不会向任意或内部地址发起下载。