lili
|
13bd910c8f
|
feat(knowledge): S6 摄入轮询键 documentId→batch(Dify 按 batch 轮询 indexing-status)
为 muse_knowledge_processing_task 加 runtime_batch_id 列并落库 Dify 上传返回的索引批次(从 uploadResult.summary 的 batch 键抽取)。poll worker 取 runtimeBatchId 非空优先、否则回退 ragflowDocumentId 作轮询键,RAGFlow 无 batch 路径逐字不变;skip gate 放宽为 documentId 与 batch 都空才跳过。
DDL 采用新迁移 V37 ALTER TABLE ADD COLUMN,非回编 V14 建表语句——沿用 sql/muse append-only 约定(V24/V27/V30/V31 同法),避免破坏已应用库(dev/live)的 Flyway 校验和。
验证:mvn -pl muse-module-knowledge-server -am test 目标两类全绿(PollWorkerTest 9/0/0/0、DocumentServiceTest 17/0/0/0,聚合 Tests run 26 Failures 0 Errors 0 Skipped 0,BUILD SUCCESS)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 03:45:46 -07:00 |
|
lili
|
a8f5e912f5
|
feat(knowledge): S6c 检索多 dataset 逐库扇出+按相似度合并(Dify 单库端点适配)
Dify 的 retrieve 是单 dataset 端点、一次只检索一个库;把 MuseKnowledgeRetrievalApiImpl 从一次
多库调用(RAGFlow 原生多 dataset_ids)改为逐授权库检索:每次 chunk 直接归属本次检索的授权来源
(Dify 单库响应无 dataset_id、无法事后反查),再按相似度降序合并、截断到全局 topK。单库失败降级
跳过并记可追溯日志、全部失败回传代表性失败类。顺序执行(非并行)保留租户 ThreadLocal 上下文,
避免并行池线程丢上下文的隔离风险;内测期单作品 KB 数少延迟可接受,并行留作后续优化。授权双门
/§5.3 合同字段/同库多来源去重语义不变。
测试 18/0/0/0:15 个原测试(含 SPIKE 越权 + uRetrieve)证明单来源行为逐字不变,新增多库合并排序
/单库失败降级/全库失败三例。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 03:12:55 -07:00 |
|
lili
|
09ff354e2f
|
feat(knowledge): S6b DifyKnowledgeRuntimeClient adapter(5 操作)+ provider 互斥装配
S6 第二子步(不改检索/上传/轮询流程、不加 DDL、不删 RAGFlow):新增 DifyKnowledgeRuntimeClient
实现 KnowledgeRuntimeClient 5 操作,HTTP 范式对齐现有 Dify/RagFlow client(JDK HttpClient+直连
ProxySelector+Bearer(dataset-api-key)+RagFlowKnowledgeRedactor 脱敏+可测 send() 缝+fail-closed)。
API 映射以 S1 P1rDifyDatasetsContractLiveIT 为准:createDataset POST /v1/datasets(顶层 id)、
uploadDocuments create-by-file(嵌套 document.id + 顶层 batch)、startParse 降级 no-op(Dify 上传即
索引)、pollDocumentStatuses indexing-status(batch 主键、data 数组/对象两态归一)、retrieveChunks
retrieve(单库,records[].segment.content/score 归一成下游已消费的 data.chunks[].content/similarity)。
装配互斥:新增共享选择器 muse.knowledge.runtime-provider——Dify 仅 =dify 装配,RAGFlow =ragflow
或缺省(matchIfMissing=true)装配,确保单人只装一个 bean(取代非确定的 @ConditionalOnMissingBean
扫描顺序)。**默认保持 RAGFlow、既有部署零变更;激活 Dify 需 S9 solo 配置设 runtime-provider=dify**。
新增 UnavailableKnowledgeRuntimeClient 通用 fail-closed 桩。未摘 RAGFlow(S6d)。
过渡缺口(属 S6c):adapter 单库检索只取首个 datasetId,多 KB fan-out+合并归 S6c 的 RetrievalApiImpl;
poll batch 依赖 S6c 把 worker 轮询主键改喂 batch;归一成 data.chunks[] 形态使 S6c 只需加 fan-out。
验证:knowledge 模块 315 用例全绿(DifyClientTest 22 + ConfigTest 8 + 旧 RAGFlow 未回归),BUILD
SUCCESS;装配 ApplicationContextRunner 6 组场景实证任何组合只装 1 bean。真连冒烟归 S6e。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 01:58:34 -07:00 |
|
lili
|
6c68b26c6f
|
docs(mvp): 总账收口 S7 全线+S6a+M3/S8 Dify app 阻断+剩余路线图
S7d 代码层 b583bd6d、S6a 2ac42a06 记账;标注真环境阻断:Dify 各 app 模型后端未配好(写作透传
/chat-messages 500),所有者须在 Dify 侧修复,M3/S8 live 才过;S6 走 Datasets 不受此阻断。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 01:26:59 -07:00 |
|
lili
|
b583bd6dc6
|
feat(ai): S7d 生成 provider 切 Dify 的 fail-closed 硬化 + 超时对齐(代码层)
分支①第四步代码/配置层:RoutingMuseAiRuntimeClient 补 Dify 装配为占位 Unavailable 时的 fail-closed
——dify 选中但未装配/凭据缺 → 返回 Dify 专属 AI_DIFY_UNAVAILABLE 并拒绝,绝不回退 New-API(此前会
误报 AI_NEW_API_UNAVAILABLE);dify 分支三出口(requiresSourceRefs→REF_INVALID / !difyAvailable→
UNAVAILABLE / 否则 difyClient.execute)均不触碰 newApiClient(亲验)。Dify non-stream-read 超时默认
90→180s 对齐总预算(180≤180<SSE 死线 240);单人 solo-compose.env.example 启用 Dify 块(凭据取自
既有 S1 DIFY 块,未新造);New-API adapter 与配置保留(S8 才摘)。
在用 Agent 的 runtimeProvider 存于 muse_ai_agent_version.config(运行时 DB JSON 列)非静态种子,故真正
把在用 Agent 切 Dify 属 live 数据操作,归 M3 由主会话执行(本提交不含 DB 改动、不切换 live provider,
超时改动在 Dify 未启用前休眠)。
验证:ai 模块 530 用例全绿(新增 fail-closed 不回退 + Dify 完整正文形态 2 例);P1rDifyChatLiveAcceptanceIT
真连 100.64.0.8:18080 验证 wiring/契约/失败映射通过。**M3 live happy-path 阻断**:Dify「muse-写作透传」
app(75f105e8)/chat-messages 返 500(/info 200)= 该 app 模型后端未配好(Dify 侧配置,非 Muse 代码),
代码正确映射 AI_DIFY_PROVIDER_5XX 可重试+fail-closed;待所有者在 Dify 侧修复 app 模型配置后跑 M3。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 01:25:56 -07:00 |
|
lili
|
2ac42a0628
|
refactor(knowledge): S6a 端口重命名 RagFlow→Knowledge + 裁剪无生产调用操作
S6 第一子步(机械、provider 无关):接口 RagFlowKnowledgeRuntimeClient→KnowledgeRuntimeClient
全量重命名(207 引用,裸旧名 PCRE 精确核验 0 残留);裁掉 7 个已核验无生产调用操作
(updateDatasetConfig/listDatasets/listChunks/runGraphRag/traceGraphRag/getKnowledgeGraph/health,
Command/枚举/实现体/单测清零),接口保留 5 操作(建库/上传/触发解析/轮询/检索);审计
recordRagflowCall→recordRuntimeCall、RagflowCallRecordReq→RuntimeCallRecordReq(旧 token 0/新 13)。
REST 端 MuseKnowledgeGraphQueryService.getKnowledgeGraph(从 Muse 自有 PG 读图,同名不同方法)保留未动。
命名债白名单保留原名:表 muse_knowledge_ragflow_call/_binding、两 DO/Mapper、ragflowDatasetId/
DocumentId 列、KNOWLEDGE_RAGFLOW_* 错误码、FailureClass.RAGFLOW_*(S6 删类步再清)。
两个 opt-in live IT(P1rRagFlowLiveAcceptanceIT、server 的 P1rKnowledgeRuntimeEndToEnd...)原本真调了
被裁操作(health/listChunks/runGraphRag/traceGraphRag),做最小手术删被裁调用/断言、保留 5 操作
happy-path 覆盖(这俩 IT 本就在 S6 后续删/重做)。HttpRagFlowKnowledgeRuntimeClient 等实现类名 S6 删类步保留。
验证:knowledge 模块 285 用例全绿(BUILD SUCCESS);muse-server test-compile 默认 + market-assembled
双 profile 均 BUILD SUCCESS(被改 IT 新鲜编译)。此前 worktree 隔离基线陈旧 320 commit 作废、主树重做。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 01:03:52 -07:00 |
|
lili
|
0451549829
|
docs(mvp): 总账记 S7 分支① M2 达成(S7a/b/c 落地验真)
全文通路三步 916d6c87/fcd0623a/43a08624 逐一独立验真;所见即所写经真后端+真 New-API e2e
端到端证实 Canonical===客户端 finalContent。剩 S7d 切 Dify + S6/S8/S9。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 00:55:32 -07:00 |
|
lili
|
43a08624f8
|
feat(studio): S7c 采纳恒回传完整正文(所见即所写)+ 流健壮性
分支①第三步(纯前端,无需改后端):采纳恒以 merge_after_edit + modify_then_merge 语义上送用户在
候选面板审定的完整正文作 finalContent(改没改过都送、原样发),使 Canonical 由客户端回传正文写入,
而非后端存的 60/80 字摘要——修掉「原样采纳(accept_as_is)把摘要写进 Canonical」的潜伏缺陷。
后端契约已亲验:ContentSourceServiceImpl.resolveMergedContent 的 merge_after_edit 分支直接落
finalContent、只校验非空、不要求"必须改过";accept_as_is 才用摘要。
流健壮性:done 仅带 taskId/suggestionId/可选 summary、无完整性信号,故按前端可得信号三分——①流非空
(原子 SSE chunk 已收全)→happy;②流非空但短于 done.summary→疑似断连截断,提示重生成、绝不静默采纳;
③流为空→回源只得脱敏摘要,标 degraded 由候选面板明确警告、不当完整正文静默采纳。
验证:tsc -b / vitest 32 files 121 passed / vite build / eslint 均 EXIT=0;MSW-off e2e
accept-suggestion.spec 真后端48080+真 New-API 3 passed——采纳后 acceptMode=merge_after_edit、
revision 180→181、Canonical content_text===客户端回传 finalContent(所见即所写端到端证实)。
改动严格 8 文件全在 muse-studio。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 00:53:56 -07:00 |
|
lili
|
fcd0623a18
|
feat(ai): S7b 瞬态全文载体 + SSE chunk 送达 + 决定即清
分支①第二步:新增独立瞬态加密表 muse_ai_generated_fulltext(V36:fulltext_content 经
EncryptTypeHandler AES 加密、expires_at TTL 30min、content_hash/length 供脱敏、决定即删),
仿 MuseAiRuntimePayloadStore 范式建 Store(write/read/purge/cleanupExpired)。执行器拿到成功
RuntimeResult 后把 fullOutput 写瞬态 Store(不在终态 finally purge——出向正文须存活到用户决定);
投影在 done 之前发一条非终态 chunk 引用行(payload 只含 {contentRef:taskId,sequenceNo},绝不带
正文,不落 outbox、不受终态唯一索引);SSE chunkData 遇 contentRef 回瞬态 Store 取正文填 content,
缺失(purge/过期)→空串,兼容旧内联行。采纳(merge facade)/放弃(reject 两路)即 purge。
主权红线(四重亲验):完整正文只存于执行线程内存/瞬态加密表/SSE 传输/客户端,永不进 chunk payload
(只放 ref)、永不进 muse_ai_suggestion/muse_content_block 任何长期列;content_snapshot.content 仍
写脱敏摘要(S7a 口径未动);DO toString 排除正文、Store 日志只算 sha256/length。
验证:ai 模块 528 用例全绿(新增 Store 6 + 投影/流/建议/合并各扩展),BUILD SUCCESS(-am 防 stale)。
真 PG 一次真生成端到端(chunk 携全文/决定后 purge/重连回取)并入 M1 harness,本步未造新 live IT(避
内容过滤器)。DDL:V35 由 S6 占,本表 V36,当前 V34→V36 临时空号,S6 落 V35 填平(Flyway 允许)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 00:29:29 -07:00 |
|
lili
|
916d6c877f
|
feat(ai): S7a 捕获 provider 完整正文 + 护栏/审上移到完整正文
分支①第一步(provider 无关):RuntimeResult 加仅内存 fullOutput 字段承载 provider 完整正文
(供 S7b 瞬态通路),两个 real client(New-API/Dify chat+workflow)在派生 60/80 字摘要前捕获
完整正文并跑护栏,通过才透出。护栏 guardFullOutput 纯静态 provider 无关:空/超长/凭据痕迹/
疑似截断(≥60 字未以句末标点结束)→失败可重试,不信 provider finishReason(Dify 硬编码常量、
New-API 只记录)。「审」输入从脱敏摘要上移到 result.fullOutput(缺省回退摘要,兼容 shadow/历史)。
主权红线(三层亲验):content_snapshot.content 仍写摘要(resolveContentText,不变);完整正文仅
作 review() 局部变量,findings 落库只含布尔/marker 名/长度、审 ID 指纹用 hashCode+length 不可逆,
无正文明文入库;fullOutput 无任何 set/put/序列化/持久化出口,toString 只打 length。
验证:ai 模块 79 用例全绿(MuseAiCandidateReviewServiceTest 11 / MuseAiRuntimeClientTest 22 /
MuseAiRuntimeProjectionServiceTest 6 / MuseAiTaskServiceTest 40),BUILD SUCCESS。改动严格 7 文件。
真实生成经护栏的活体验证并入 M1(S7b real-PG)。附:DDL 协调 S7b 瞬态表改 V36(S6 batch 占 V35)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 23:59:27 -07:00 |
|
lili
|
ca045e3b13
|
docs(agent-specs): S7 全文通路材料点裁决落定 + 执行版 v1.0
三个材料级点所有者 2026-07-07 裁决全部采纳推荐:①独立加密缓存表 ②采纳恒回传完整正文(所见即所写)
③护栏+合规审上移到完整正文。据此产出执行版 v1.0,拆 S7a(捕获+护栏,provider 无关)→S7b(瞬态载体
+SSE 送达,V35 迁移)→S7c(前端所见即所写)→S7d(切 Dify,依赖 workspace)。总账同步。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 23:25:41 -07:00 |
|
lili
|
2973e8da66
|
docs(agent-specs): S7 生成主链全文通路(分支①)评审版 v0.2
现状经三路测绘实测校正:完整正文只活在 real client success() 里、构造结果前即被截成
60/80 字摘要丢弃(唯一捕获点);SSE 严格只重放已持久化事件、当前只发无正文的 done;
"三审"审的也是摘要;Dify 完成原因硬编码常量、截断护栏无效。
设计=一条"瞬态全文"通路:捕获处对完整正文做护栏→写瞬态加密缓存(复用 MuseAiRuntimePayloadStore
范式,TTL+决定即清)→事件表发 chunk 引用行、SSE 重放回缓存取全文填已声明的 chunk.data.content→
前端 streamContent 已接线零改动→采纳恒回传完整正文(所见即所写)写 Canonical。候选/正文表永不含
完整正文。含 mermaid 数据流 + svg/html 速览 + 现状锚点附录。三个材料级点待所有者裁决。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 23:16:05 -07:00 |
|
lili
|
aadc0aa8ab
|
docs(mvp): 记录 S7.0 输出契约裁决 = 分支①(建不落库全文通路)
live 单体取全 SSE/UI/DB 三项证据:后端不发 chunk、done 只带 taskId/suggestionId/summary、
content_snapshot.content 仅 50-60 字脱敏摘要 → 现状无全文通路,用户只看到摘要。所有者确认
S7 走分支①:runtime 内存全文经 SSE(填已声明 chunk.data.content)推前端,候选表仍只存摘要+三审,
保数据主权。provider 无关、与切 Dify 正交;落地前须出评审版设计,provider 半段依赖 Muse 专属 Dify workspace。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 22:55:49 -07:00 |
|
lili
|
5ab58a4ed9
|
docs(mvp): S5 后端起栈 + MSW-off 创作主线 e2e 打通,S5 验收完成
DB owner 口径对齐 + moderation 关停后 muse-server 干净起栈,MSW-off 创作主线全量 e2e
33 passed/0 failed/31 隔离,local 门禁 65/0 无回归。经所有者 2026-07-07 验收,S5 标记完成。
moderation 类全量 boot 守卫归 S9 golden-journey 真起冒烟(切片合成测试挡不住真 yaml 回归,不补假绿)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 22:48:53 -07:00 |
|
lili
|
92b90878ec
|
fix(solo): 补齐单人版登录栈种子与 OAuth2 scopes 兜底
单人版真实登录(admin 后台 / member studio)所需的基座种子与兜底:
- OAuth2TokenServiceImpl.createAccessToken 增加 normalizeScopes:登录链路不显式传 scope,
但 PG token 表 scopes 非空约束 → 无兜底会写入失败;统一兜底到客户端默认授权范围。
- yudao-base-seed 补 admin(admin123, status=0)+ super_admin 角色绑定 + default OAuth2 client
+ member 测试账号 15601691388(admin123);ON CONFLICT DO UPDATE 幂等。
- yudao-base-schema / create_tables 给 system_login_log 补 tenant_id(登录写访问日志需要)。
- muse-slice-sequences-repair 补 system_oauth2_* 与 demo 序列;OAuth2 access/refresh token
复用同一 @KeySequence,按两表 GREATEST 对齐,避免 nextval 撞已存在 id。
验证:OAuth2TokenServiceImplTest 14 tests/0 fail(含新增 testCreateAccessToken_nullScopesUseClientScopes);
种子已灌入 muse_slice_live(admin/member/oauth2 client/user_role/tenant 全就位、口令哈希 = admin123)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 22:41:29 -07:00 |
|
lili
|
9af471289a
|
fix(solo): 修复 2.0.0 单人版 live 后端启动(DB 口径对齐 + moderation 关停)
标准启动默认落陈旧的 muse_local(仅 V0 baseline、缺 yudao 基座、update_updated_at_column()
函数属第三个角色 muse)→ Flyway V1 CREATE OR REPLACE FUNCTION 报 "must be owner"。唯一健康
的 live 库是 root@muse_slice_live(已迁 V34、含基座+登录种子)。将 application-infra.yaml 与
start-muse-server-infra.sh 的默认库/用户改为 muse_slice_live/root(真实值仍由 infra.env 覆盖)。
S4 关停 spring.ai.model.* 时漏了 moderation;OpenAiModerationAutoConfiguration 默认
matchIfMissing=true → 全量 boot 实例化 openAiModerationModel、无 OpenAI key 直接抛
"OpenAI API key must be set" 使单体启动失败。在 monolith 真正加载的 muse-server/application.yaml
与 ai-server/application.yaml 两处补 moderation: none(单人形态输出合规走自研 MuseAiCandidateReviewService)。
workspace.spec 冒烟原缺 token 注入,被 S5 新增的 AuthGuard 拦重定向 /login → 补 test1 token 注入。
external-deps 记录 Dify 实例被游戏/Muse 共用、workspace 须隔离的约束。
验证:muse-server 干净启动(Started in 22.4s、Flyway up-to-date 零 owner error);MSW-off 创作主线
e2e 33 passed/0 failed/31 隔离(候选采纳/导入/导出/知识草稿/图谱/绑定/agent 生命周期/AI 真生成全绿);
run-p1r-verification.sh local 65 tests/0 fail BUILD SUCCESS。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 22:41:12 -07:00 |
|
zizi
|
9ebf76cb0c
|
docs(agent-specs): 同步 2.0.0 S4/S5 计划口径
|
2026-07-08 12:33:51 +08:00 |
|
zizi
|
6dcabf69fb
|
feat(solo): 收口治理入口并裁剪 studio 表面
完成 2.0.0 S4 的外部 AI、admin、account 与 solo SQL 收口,并推进 S5 studio 市场/handoff/旧编辑器入口裁剪。S5 的前端单测、构建与 route-only e2e 已留证;MSW-off 创作主线 e2e 仍因本地后端活体启动口径待修正,已在总账标为未完成验收。
|
2026-07-08 11:45:26 +08:00 |
|
zizi
|
c8a88e71b3
|
feat(muse): detach market assembly for solo mode
|
2026-07-08 10:16:41 +08:00 |
|
zizi
|
b9663f52d1
|
test(p1r): prepare S2 market detach gates
|
2026-07-07 19:02:23 +08:00 |
|
zizi
|
6f2629302f
|
feat(p1r): add Dify S1 live acceptance
|
2026-07-07 17:10:40 +08:00 |
|
zizi
|
13b305d4da
|
fix(p1r): align 2.0.0 S0 local gate counts
|
2026-07-07 14:28:34 +08:00 |
|
zizi
|
2e45191160
|
docs(agent-specs): add 2.0.0 solo execution plan
|
2026-07-07 14:28:04 +08:00 |
|
lili
|
0d4dbe64fd
|
docs(mvp): 记录 1.0.0 mock 与未完成功能的代码级复核订正
Backend Maven CI / backend-local (push) Has been cancelled
新增缺口 P0-11/P0-12(content 剧情规划候选、AI 文风检查两个用户面 facade sole-Unavailable 恒 blocked)、P1-15(AI 4/5 来源 owner 实时回查恒 blocked)、P1-16(New-API 用量归因 provider 桩+死代码)、P1-17(admin 质量策略回滚未接写命令);第 4 节补订正 meta impact(Real 已上位)、导出 FileService(Real 真接)、Dify 运行时 Adapter(真接外部)、admin 前端整体复核为真。证据均为生产代码 file:line。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-01 10:35:51 -07:00 |
|
lili
|
c2777cc71c
|
feat(ai): 接入Dify运行时Adapter
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 00:57:46 -07:00 |
|
lili
|
0f1ff6e4f2
|
fix(infra): 修复外部服务代理与RAGFlow检索字段
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 10:28:36 -07:00 |
|
lili
|
acd7f040a5
|
fix(studio): 补齐用户端登录入口
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 09:29:07 -07:00 |
|
lili
|
9e0c223b19
|
docs(mvp): 校准总览缺口口径
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 08:30:53 -07:00 |
|
lili
|
0acb249a17
|
docs(mvp): 校准RC后补状态
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 08:29:08 -07:00 |
|
lili
|
3ead87206a
|
fix(deploy): 固定mini后端迁移目录
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 08:27:22 -07:00 |
|
lili
|
5acb2503b5
|
feat(studio): 补齐深面入口
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 08:26:47 -07:00 |
|
lili
|
19ff616463
|
feat(ai): 补齐质量评估执行器
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 08:26:03 -07:00 |
|
lili
|
a5619a3566
|
feat(content): 补齐导入导出真链路
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 07:40:10 -07:00 |
|
lili
|
04dc70c900
|
docs(mvp): 整理产品功能缺口待办清单
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-28 02:57:44 -07:00 |
|
lili
|
facaca1643
|
feat(admin): 补齐AI系统配置写链路
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-27 12:52:37 -07:00 |
|
lili
|
8ae812ce6c
|
feat(content): 补本文导入初始化正文
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-27 11:54:47 -07:00 |
|
lili
|
fd0f80b226
|
docs(release): 记录mini部署证据
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-27 11:22:53 -07:00 |
|
lili
|
e4e758f787
|
docs(release): 记录1.0.0 RC1基线
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-27 11:05:40 -07:00 |
|
lili
|
3585219637
|
feat(mvp): 收束1.0.0线A交付闭环
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
v1.0.0-rc.1
|
2026-06-27 10:52:10 -07:00 |
|
lili
|
2dde0a45ef
|
docs(mvp): 八域交付盘点+1.0.0交付计划+收尾对齐
- 8域交付盘点(codex多实例+claude深盘、均亲验以代码+真测试为准)→收敛5类系统性病灶
- 新增 docs/mvp/1.0.0-交付计划.md:基准线A最小可用子集、8域对账矩阵、E0-E7 Epic分解、反假绿验证标准
- 进度总账加指针对齐(接口门completed≠端到端可闭环;可闭环严判完成度~55-65%)
- 临时-01~04归档删除(SSE/KB物化过程文档、结论已并入memory与各.agent)、大纲清理悬空引用、临时-05并入E4
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 22:09:24 -07:00 |
|
lili
|
2de3e742b3
|
docs(agents): 蒸馏 market install KB 物化 D0-fork 知识与红线
新增 knowledge/market-install-downstream-materialization.md(market↔knowledge 接缝单一归属):安装"空账"物化断层(两断点)、真越权澄清(安装者读发布者私有≠安装者间)、D0-fork 四单元闭环、三关键衔接(进程内 Spring 事件 AFTER_COMMIT/MarketAssetSourceApi 跨 BC 读 tags/kb_id 去污染)、开放项独立成节。external-deps 补 RAGFlow 两坑(无 copy API、metadata_filter vs metadata_condition 字段错配静默忽略)。security-and-reliability §三.A 补 market 物化 3 红线(本地键不存外域 id/私有不泄露须物理隔离非运行时过滤/forkStatus fail-closed)+§六门禁表诚实标 kb_id 去污染暂无独立 ArchUnit。module-reality-baseline 加薄指针;README 索引更新。AgentsInfraIntegrityTest 3/3 绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 12:10:34 -07:00 |
|
lili
|
c8acd70837
|
docs(p1r): 回写 market KB 物化 D0-fork 实现完成(四单元真闭环)
D1=S 澄清纠偏→D0-fork、U-fork/U-materialize/U-retrieve/U-verify 四单元实现完成、真 PG+真 RAGFlow 端到端真闭环(commit 5a93831→8b3258e);诚实标召回回滚 D9 开放项+e2e 部分 fixme。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 12:01:13 -07:00 |
|
lili
|
8b3258e22f
|
test(market): U-verify D0-fork 端到端真验收(真 PG+真 RAGFlow、第四单元)
D0-fork 最后单元:真 PG17+真 RAGFlow 端到端验收、2 IT 真绿(独立复跑确认 57s)。P1rMarketKbForkMaterializationIT(muse-server、跨 knowledge+market 两 BC 须同 Spring 上下文):①fork→安装→物化 installed_ref→检索命中(no_dataset 消除、副本与活 dataset 物理分离);②发布者私有不泄露真证(发布者上架后往活 dataset 真传私有 magic、安装者检索副本拿 magic 当 query 仍只返公开 chunk 不含 magic→d0ForkIsolationProven、U0 spike 反向基线);③幂等+多安装者共享1副本;④AFTER_COMMIT 时序(committedAssetForked/rolledBackAssetForked false:提交才 fork 回滚不 fork);⑤_test 库铁律(muse_p1r_fork_mat_test 绝未指 muse_slice_live)。
market-install-kb-retrieval.spec.ts(studio e2e):检索命中+私有不泄露无独立 UI 入口由 IT 证;安装物化 e2e 标 test.fixme 待 global-setup 补 fork 就绪资产(不伪绿、骨架就位 tsc 过)。召回回滚(D9)如实标开放项:recallAsset 仍 writeSourceStatusBlocked、knowledge 无召回消费者→不自动停用 installed_ref;需新增 market→knowledge 召回传播才闭环(不伪造、不引用不存在的 muse_source_propagation_target)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:58:56 -07:00 |
|
lili
|
d4309ab0e9
|
test(market): U-retrieve 检索打通(D0-fork 第三单元、RetrievalApiImpl 零改动)
D0-fork 第三单元:验证 installed_ref 物化后检索链自然打通、消除 no_dataset。RetrievalApiImpl 生产代码 0 改动(临时-04 判断属实):U-materialize 已在数据层闭合去污染链(binding.kb_id=本地 kbId、ragflow_binding 指公开副本)→第四门 selectActiveDatasetByKbId 返非空→no_dataset 分支不进→进 RAGFlow 检索;授权快照 knowledge/api 全程 String 透传无 parseLong(ADR-020、无 NumberFormatException);document_ids/metadata_filter 保持 null(命中纯公开副本、无需运行时隔离)。
加 2 单测(MuseKnowledgeRetrievalApiImplTest 15/15):no_dataset 消除+命中(对照基线无 dataset binding 时 no_dataset)、字符串授权快照透传。发布者私有不泄露(真 RAGFlow)+真 PG 端到端留 U-verify。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:33:43 -07:00 |
|
lili
|
30a693e1b7
|
feat(market): U-materialize 安装侧物化(D0-fork 第二单元、kb_id 去污染)
D0-fork 第二单元:knowledge 绑定路径把"只写引用绑定"升级为建本地 installed_ref KB 实体+binding 指向公开副本 dataset。新增 MarketAssetSourceApi 跨 BC 读端口(market-api+server、读出 发布者kbId/publicForkDatasetId/forkStatus、从 market_asset 自有 source_id+tags JSONB、与 ForkApi 写职责分离);knowledge 经 -api 不读 market .dal。
MuseKnowledgeBindingService:precheck 跨 BC 读市场资产+公开副本(存在/knowledge_base 类型/forkStatus=ready 校验、固化进 precheck 快照)、bind 建 installed_ref KB(kb_type/source_market_asset_id/license_snapshot_id 数值主键 D8/owner/active)+指副本 ragflow_binding 同 @Transactional 原子。kb_id 去污染:market_kb 不再 parseLong(sourceId)当 kbId(那是 assetId)、改本地新建 installed_ref kbId、binding/projection/installed 列表读回全跟随(消除检索 no_dataset 根因)。D6 fail-closed:仅 forkStatus=ready 放行、pending/partial/failed 拒、0 写。幂等(安装者,资产)维度复用。多安装者共享同一 publicForkDatasetId、kb_id 各异不撞 uk。
单测 26 绿(BindingService 16+InstalledService 8+RoundTrip 2)、BcBoundaryArchTest 2/2、编译 BUILD SUCCESS。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:26:57 -07:00 |
|
lili
|
5a938319a8
|
feat(market): U-fork 发布侧 fork 公开副本(D0-fork 第一单元、进程内事件接线)
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>
|
2026-06-26 11:05:13 -07:00 |
|
lili
|
c12eb013cd
|
docs(market): D0-fork KB 物化执行 plan(临时-04、supersede 临时-03)
D1 澄清坐实真越权=安装者读到发布者私有内容(非安装者间):market 对 knowledge/ragflow 零依赖(src+pom 双空 spot-check)→上架不 fork、安装者共享发布者活 dataset、上架后 KB 仍可加私有文档(上传无 market 门禁)。用户拍 D0-fork(发布侧 fork 纯公开副本、物理隔离)。
临时-04 四单元:U-fork(发布侧 fork 公开副本核心新工程:上架事件→knowledge 异步 createDataset+逐文档 uploadDocuments+重索引,RAGFlow 无 copy API 必重走三步 spot-check 确认)/U-materialize(安装侧物化去隔离、binding 指公开副本)/U-retrieve(检索去隔离)/U-verify(发布者私有不泄露、复用临时-03 U0 反向基线)。关键推荐:fork 时机=上架 markListed(副本=公开快照语义)、接线=事件驱动(复用 market EventPublishOutbox+ADR-017、不绑架审核事务、保 market 不反依赖 knowledge)、DDL=初版不需(V5/V14 列+JSONB)。临时-03 标 superseded 保留演进史、U0 证据+四硬事实继承。待拍 D4-D10 后执行。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 09:53:19 -07:00 |
|
lili
|
a8a26983fc
|
test(market): U0 spike 钉 KB 物化共享越权基线 + 拍 D1=S 回填
market install KB 物化 U0 spike 产 D1 决策证据(只 spike 测试零业务代码):MuseKnowledgeRetrievalApiImplTest +2 case(13/0 独立复跑确认)——①他租户私有 chunk 原样返回证伪租户过滤 ②ArgumentCaptor 抓 RetrieveChunksCommand documentIds/metadataFilter 均 null 证整库扫描零隔离;同作 U4 隔离回归反向基线(隔离补到位后应转红)。活体真 RAGFlow 整库返回坐实。
U0 揪出潜伏 bug:检索发 metadata_filter 但 RAGFlow 官方契约(context7)是 metadata_condition→被静默忽略(乱值条件仍返 baseline)、字段名修正纳入 U3。用户拍 D1=S(补隔离后共享、真最小留痕):临时-03 回填 S 分支定调(隔离优先 metadata_condition+物化打安装维度元数据+U4 复用 spike 反向基线)。进度总账回写方向全链路。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 09:14:14 -07:00 |
|
lili
|
76a7e0d312
|
docs(market): KB 物化执行版 plan(临时-03、待 D1 拍板后执行)
承临时-02 拍板(B' installed_ref + KB 先行)出 KB 物化执行版 plan,拆 U0-U4 可独立验证实现单元。出 plan 时一手代码核验揪出四条改变工作量/性质的硬事实(均 spot-check 坐实):①kb_id 当前被 market assetId 污染(KnowledgeHandoffLanding sourceId=assetId)→物化须去污染改写;②assetId→发布者 dataset 反查链跨 BC 断(market.api 仅 HandoffTokenApi)→需新增 MarketAssetSourceApi 本地读端口;③多租户共享同一 RAGFlow dataset 必越权(retrieveChunks body 不含 tenant+document_ids=null 全量返回、parseChunks 无 chunk 租户二次过滤)=安全红线→U0 从"验证能否共享"转为"共享前先补 chunk 级隔离"硬门;④muse_source_propagation_target 表零命中→U4 回滚改基于真实 source_event 机制。
物化落点严格在 knowledge 绑定路径(非 install、handoff 非物化桥、安装解耦不动)。初版判定不需新 Flyway 迁移(V5/V14 已备列)。决策点 D1(共享 S/复制 C/暂缓 H)待人类先看 U0 spike 证据再拍。两图文(text+mermaid + html 人读图)+大纲注册。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 08:33:41 -07:00 |
|
lili
|
26ff1af374
|
docs(market): market install 下游物化方案设计文档(评审版、待 review 拍板)
market install 后下游物化方向(用户选)方案设计:深调研 2 agent+spot-check 坐实两物化断点——install 只写 muse_market_installation 与 ai/knowledge 解耦、KB bind kbId=parseLong(sourceId)不建本地 muse_knowledge_base 行致检索 no_dataset 第四门省略、agent slot 放宽但 runtime requireVisibleAgent 拒裸引用。出 C(完整物化)/B(惰性)/B(installed_ref 最小留痕)/暂缓 四方案对比。
推荐 B(installed_ref 最小留痕、KB 优先共享发布者 dataset、物化落点放目标域绑定路径非 install——handoff 非物化桥、安装解耦正确不应改)。地基不对称坐实:KB(V5 kb_type/source_market_asset_id)+agent(V27 source_market_asset_id、注释物化后续主线本列先就位)列已备、但 agent market_installed 类型有文档(后端-04)无实现→两域工程量不同。决策点待拍板:物化深度(倾向 B)、时机(绑定同步非惰性)、dataset 共享 vs 复制(唯一硬风险、共享前必验多租户 RAGFlow 隔离)、agent market_installed 落地量(否则 KB 先行)、召回回滚。两图文+大纲注册。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 06:47:45 -07:00 |
|