临时-03 · Market Install KB 下游物化执行 Plan

执行版 v1 · 2026-06-26 · 后端/架构/PR reviewer · 承临时-02 拍板(B' installed_ref + KB 先行)· 待人类拍 D1 后执行
拍板已定——做 B'(installed_ref 最小留痕)+ KB 先行。本 plan 把它拆成 U0…U4 五个可独立验证单元,物化落点在知识库绑定路径(非 install)。但一手代码核验坐实一个比评审版更硬的事实:按当前代码,多租户"共享发布者同一 RAGFlow dataset"必然越权。所以 U0 不是"验证隔得住吗",而是"共享落地前先把 chunk 级隔离补上"的真前置硬门。

执行前四条硬事实(一手代码核验,非推断)

1kb_id 当前被污染
绑定存的 kb_id 是 market assetIdsourceId: assetId),不是真实 muse_knowledge_base.id。物化要把 kb_id 去污染改写成新建 installed_ref 主键,并改对所有读回端口。
2跨 BC 反查链断
assetId→发布者 kbId→dataset 数据通、跨 BC 断(market.api 只有 HandoffToken、无按 assetId 查源接口)。需新增 MarketAssetSourceApi 本地读端口。
3共享必越权 安全红线
RAGFlow 检索 body 不含 tenant、document_ids=null 时 dataset 全量返回parseChunks 对返回 chunk 无租户二次过滤。两租户 binding 指同一 dataset → A 读到 B 全部 chunk。U0 转为"共享前先补 chunk 级隔离"硬门。
4回滚表不存在
muse_source_propagation_target 全仓零命中。U4 回滚必须基于真实机制(muse_knowledge_source_event + projection),不得引用它。

U0 决策门:dataset 隔离硬前置(D1)

⚠ U0 spike:共享发布者同一 RAGFlow dataset 能否做到租户隔离?
(已知当前必越权 → 真问题是"补隔离手段能否落地")
分支 S · 补隔离后共享
metadata_filter / document_ids 把 chunk 限到本安装授权子集,验证生效 → 共享发布者 dataset(存储不放大)。需先投入隔离工程
分支 C · 每安装者复制
独立复制 dataset,隔离天然干净。但文档复制+重解析是异步重活,另起子任务。U0 红时兜底。
分支 H · 暂缓
只做诚实标注"市场资产暂未开放直接用",消除静默 no_dataset 骗用户。成本最低。

实现单元 U0 → U4

U0
spike:chunk 级隔离硬前置门
单测层证伪租户过滤 + 活体层证 RAGFlow 整库返回 + 验证补隔离手段(metadata_filter/document_ids)→ 输出 S/C/H 三选一给人类拍。不产业务代码。
▾▾▾
U1
数据模型 + 迁移判定
installed_ref kb 行字段映射(kb_type/source_market_asset_id/license_snapshot_id,V5 已备列复用)+ dataset 关联策略。初版判定:不需新 Flyway 迁移
▾▾▾
U2
物化落点:绑定路径建实体
在 knowledge 绑定路径(非 install)建本地 kb 行 + dataset 关联;kb_id 去污染 + 新增 MarketAssetSourceApi 跨 BC 读 + 幂等 + kbId 存在性校验。核心工程量在此
▾▾▾
U3
检索打通:消除 no_dataset
U2 数据正确后第四门自然返非空→命中(共享分支 RetrievalApiImpl 多半无需改)。授权快照沿用 ADR-020 VARCHAR,不回退 parseLong。
▾▾▾
U4
验证:真 PG IT + e2e + 回滚 + 隔离回归
真 PG+真 RAGFlow 端到端命中 + studio e2e + 幂等 + 跨租户隔离回归(承 U0)+ 召回/下架回滚(基于真实 source event 机制)。

决策点(待人类拍板)

#决策选项倾向
D1dataset 共享 vs 复制(最硬·U0 门)S 补隔离后共享 / C 每安装者复制 / H 暂缓先看 U0 证据再拍
D2物化时机绑定同步 / 惰性首用绑定同步
D3license_snapshot_id 承载数值主键 / 字符串 envelope(需 V32)数值主键
D4跨 BC 读发布者 dataset 路径API 带回 / knowledge 内部受控查U2 实现时定夺
D5召回/下架回滚自动化复用现有传播 / 本期标开放项先验现状是否触达

Scope 边界(明确不做)

KB 限定——只做知识库物化,agent(muse_agent market_installed + runtime 放行)是独立下一阶段,本 plan 不碰 ai 模块。
install 解耦不动——installMarketplaceAsset 维持"只记账",物化落点严格在 knowledge 绑定路径。
handoff 非物化桥——token 只负责跳转+被消费,不负责物化。
复制分支(C)细节不展开——仅作 U0 红兜底标注,异步复制实现另起子任务。
market 两列 BIGINT 议题不纳入——独立契约议题,本 plan 不处理。
配套工程/AI 读本:临时-03-market-install-KB物化执行plan.md(含 mermaid 依赖图与实现单元全文)· 方案 WHAT 见临时-02 · 概念边界归 架构-02 / 专题-03 / ADR-020