lili 854f18c06a fix(ai): 收口 ADR-020 漏网 binding 表——槽位绑定授权快照 BIGINT→VARCHAR(V31)
muse_agent_slot_binding.authorization_snapshot_id 是采纳断层(ADR-020 方案 A,V30/a16c596)唯一漏网的 binding 表:列 BIGINT、DO Long,bind 时 parseLong(precheck.authorizationSnapshotId) 对真 runtime envelope rpe-local-<uuid> 返 null→授权快照静默丢失、绑定溯源链断。knowledge binding 已 V14、ai_suggestion/content_block_source_attribution 已 V30,此表是同型漏网(三路盘点发现,模块记忆从未记此类型错配)。

- V31:authorization_snapshot_id + source_snapshot_id 两列 BIGINT→VARCHAR(128) USING ::text(仿 V30/V14,source 一并收口避免后续写入被静默截断)。
- MuseAgentSlotBindingDO:两字段 Long→String。
- MuseAgentSlotServiceImpl:bind 两处(insert/updateById persistBinding)直透传 precheck.authorizationSnapshotId(String envelope),删 parseLong 包裹;sameAuthorizationSnapshot 的 parseLong 保留(对字符串 envelope 走 fallback 字符串比较,正确)。
- MuseAgentSlotServiceTest:数值串种子改字符串 envelope + 断言落库幸存(反假绿:旧 parseLong 把 0501/501 归一成 501L 无法区分 precheck 与 request)。

活体真验(muse_slice_live):真 envelope rpe-local-6e29...(issuePermissionEnvelope 签发、过 runtime 授权门)经 precheck→bind,binding authz 列存非空 rpe-local 字符串(insert id=51 + updateById id=50 两路径);列类型 character varying(128);flyway V31 success。修前该列恒 null。单测 26 绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:31:21 -07:00
..

Muse SQL Seed Scope

当前 Muse 工程清理只维护 mysql/ruoyi-vue-pro.sqlmysql/quartz.sql

其它数据库方言目录保留为上游参考,但没有同步执行 Muse 清理覆盖层,当前不作为可直接初始化 Muse 环境的脚本使用。需要启用其它数据库时,先把 MySQL 清理覆盖层等价迁移到对应方言脚本,并重新跑 fresh DB 初始化验证。