D0-fork 第一单元:知识库上架时发布侧 fork 一份只含公开快照文档的专用 dataset、安装者只读共享、物理隔离发布者私有。KnowledgeMarketForkService(核心):公开集界定(上架时刻 searchable/generative active 文档、私有不进副本)+RAGFlow 三步复制(createDataset+逐文档 uploadDocuments+startParseDocuments、无 copy API)+异步重活(幂等键(assetId,version)/部分成功补差集/失败按 FailureClass 重试/审计)。 订阅 glue(人类拍板进程内 Spring 事件、非统一 Events 因其无后端消费机制):事件对象 MarketKbListedEvent 落 market-api(守 BC、market 发 knowledge 听);market markListed publishEvent;knowledge @TransactionalEventListener(AFTER_COMMIT 不绑架审核事务)+@Async(不阻塞审核线程)+TenantUtils(异步租户上下文)+错误隔离。@Scheduled 兜底扫 forkStatus≠ready 重试(进程内事件不持久化、保最终一致、config-gated 默认关)。副本 datasetId+forkStatus 写回 ragflow_binding(market_public_fork+binding_summary JSONB)+market_asset.tags(经 MarketAssetForkApi 供 U-materialize 读)、不加 DDL。移除冗余 outbox kb_listed 双重死代码。 单测 14/14(ForkService 6+Consumer 3+Backfill 5)、BcBoundaryArchTest 2/2(market 不依赖 knowledge)、market-server 212+knowledge-server 268 回归绿、编译 SUCCESS。诚实:端到端为单测层验证、AFTER_COMMIT 真事务时序集成验证留 U-verify。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
Java
64.8%
TypeScript
17.2%
Vue
13.8%
HTML
1.5%
JavaScript
1.2%
Other
1.3%