lili
|
1c2d51bfd4
|
feat(deploy): S9 单人版 compose 从零部署+黄金旅程活体验收(1a 闭合)
- docker-compose.solo.yml:muse-server 单体+PG+Redis 一体化编排,固化 sql/muse Flyway 迁移只读挂载(mini-infra 从零真验暴露漏挂致 muse 表全缺、AI worker 每秒报 relation does not exist)
- 2.0.0-单人版部署手册.md:双栈拓扑/凭据清单/从零步骤/回滚恢复多用户/Dify 升级约定
- 进度总账:§9 判据 0–7 全留证(黄金旅程 workId98 七步 PG 核验+compose 从零 36 迁移 121 表)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 10:19:47 -07:00 |
|
lili
|
7a6e46b2fe
|
fix(test): S9 整分支收口修 S6d 台账漂移+V35 跳号登记+S8 导入向导 IT 上下文
- 覆盖台账 p1r-api-coverage.json 与生成器去 S6d 已删 RAGFlow 文件引用,知识域 serviceFiles/testFiles 换 Dify 继任,保 32 market dormant 口径不被重生成摧毁
- ContractFirstGateTest 登记 V35 有意跳号(并行线版本预留,V36/V37 已应用 live 库不可回填)+ stale 守卫
- P1rContentImportWizardCompletedApprovalIT 补 MuseAiProperties @Bean(S8 加 @Resource 依赖后极简上下文缺 bean 致 ApplicationContext 加载失败)
- 独立复跑:local 门 65/0F/0E BUILD SUCCESS;import wizard 真PG IT 2/0F/0E(1 live skip)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 10:19:11 -07:00 |
|
lili
|
302603d9d9
|
refactor(knowledge): S6d 删 RAGFlow 运行时,Dify 转默认装配
S6 Dify grounding 已 live 证成(新 KB→Dify dataset 索引→生成 contextAssembly
chunkCount=1→输出复现 KB-only 专名),RAGFlow 运行时退役。删 HttpRagFlow/
UnavailableRagFlow 两 client + RagFlowKnowledgeRuntimeClientConfiguration 装配
+ 其配置测试 + KnowledgeRuntimeClientTest(整体为 RAGFlow 契约测试)+ RAGFlow
live IT(knowledge 侧 P1rRagFlowLiveAcceptanceIT + muse-server 侧 P1rKnowledge
RuntimeEndToEndLiveAcceptanceIT,§9.3 明示退役;Dify e2e 已活体证成、按 content-
filter 记忆不新造 P1r IT 顶替)。
装配转默认:DifyKnowledgeRuntimeClientConfiguration 主 bean 加 matchIfMissing=true
(provider 未设→Dify);新增 @ConditionalOnMissingBean 兜底 unavailableKnowledge
RuntimeClient(原无通用兜底,provider=ragflow 显式值下主 bean havingValue=dify 不
匹配会致无 bean 启动失败,兜底补齐后落 Unavailable)。RagFlowKnowledgeRedactor 被
Dify 复用保留;ragflow 属性块/muse_knowledge_ragflow_binding 表(遗留命名存 Dify
ID)不动。market-assembled 双排除的 P1rMarketKbForkMaterializationIT 保留(market+
RAGFlow 双休眠,归 market 恢复路径,符合 S3「排除不删」)。
验证:knowledge-server 单测 300/0/0/0 BUILD SUCCESS;knowledge+muse-server 全分支
test-compile BUILD SUCCESS(MVN_EXIT=0);DifyKnowledgeRuntimeClientConfigurationTest
8 全绿验三态(缺省→Dify/ragflow→Unavailable/缺省未配→fail-closed Unavailable)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 09:06:32 -07:00 |
|
lili
|
9057dc8df0
|
fix(ai): 补修 S8 接口加 providerKey 破坏 muse-server 导入向导 IT 编译
S8(0b109a29)给 MuseAiImportLlmParser 接口加 providerKey() 后它不再是函数式
接口,而 P1rContentImportWizardCompletedApprovalIT 的 importLlmParser() 测试 bean
仍以 lambda 提供 stub → muse-server test-compile 断裂。当时 S8 只跑 ai 模块单测
(20/0/0/0)、未编 muse-server 整分支,故漏(整分支视角收口价值)。改 lambda 为匿名
类实现 parse+providerKey;该 IT 只装配单个 parser bean、resolveImportLlmParser 对
size==1 直接返回,providerKey 不参与选择,返回 "stub" 占位。
验证:mvn -pl muse-server -am test-compile BUILD SUCCESS(MVN_EXIT=0)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 09:06:31 -07:00 |
|
lili
|
1c74372a1d
|
docs(mvp): 回写 S7 M3 生成 live 打通与 S8 导入解析切 Dify 里程碑
进度总账 S 步进度簇三处更新:原「M3/S8 live 阻断」条改写为「S7 生成主链 M3
经 Muse 后端 LIVE 打通(里程碑 M3 达成)」——记 app-api→agent v8(dify)→
RealDify→写作 chat app(M3)→suggestion 107 真续写,及根因 bdc07a43(单体
classpath 遮蔽 + credentials List 无法扁平 env 绑定);新增 S8 导入解析切 Dify
条(0b109a29,chat app 17438ceb,如实标注验证层级:单测20/IT16/冒烟/review
已做、上传链 live 归 S9);S6b–d 从「待做」改为「代码完成·API 级验证」、live
grounding 与删 RAGFlow(S6d)明确归 S6 live 证后。诚实备注:S8 子代理自曝伪造
工具输出,以主代理独立复核为准。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 08:12:11 -07:00 |
|
lili
|
0b109a2961
|
feat(ai): S8 导入解析切 Dify chat 解析器 + provider 选择
MuseAiImportParseService 从单点注入 NewApiMuseAiImportLlmParser 改为按
muse.ai.import.provider(缺省 dify)从 List<MuseAiImportLlmParser> 选择;来源标识
由选中 parser 的 summary.parser 自报(dify_import_llm / new_api_import_llm)。
新增 DifyMuseAiImportLlmParser:走 Dify「muse-全书解析」chat app(passthrough M3、
克隆自写作 app)的 /chat-messages blocking 调用,把镜像 New-API 的 system+user 解析
prompt 合并成一条 query 发出,从 answer 消费章节 JSON。语义逐条对齐 New-API 版:
401/403 fail-closed 不重试、408/429/5xx 退避重试、输入上限 180k、空/超 300 章节、
脱敏 summary、直连绕代理、key 不落库不打印。截断检测差异:Dify chat 无 finish_reason,
改为对 answer 做 JSON 完整性校验(解析失败→AI_IMPORT_LLM_TRUNCATED 不可重试)。
MuseAiProperties.Dify 补 maxAttempts/retryBackoffSeconds;新增 ImportParse.provider。
规格允许 app/workflow;创始人定 chat app 顶替空 workflow 壳 fed4d25c。p1r 配置
MUSE_AI_DIFY_PARSER_APP_ID/API_KEY 指向新 chat app 17438ceb。
验证(独立重跑核验,不采信子代理自报):
- ai 模块单测 20/0/0/0(DifyImportLlmParser 7、ImportParseService provider 选择 11、
NewApi 2)+ content ImportParseService IT 16/0/0/0,MVN_EXIT=0 BUILD SUCCESS
- Dify 解析 app 直连 /v1/chat-messages 冒烟真出严格章节 JSON {"chapters":[...]}
- 代码 review:确认真 chat 契约(/chat-messages、读 answer、无 workflow 残留)
未做:完整上传链 live 全书解析(import→对象存储→storageRef→parse job→LLM)属 S9
黄金旅程/import-wizard.spec.ts 范畴——inline contentText 走同步 splitter 绕 LLM,
LLM 路径需对象存储上传流,非本次 parser 改动引入。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 07:59:26 -07:00 |
|
lili
|
bdc07a4321
|
fix(ai): muse-server 补 muse.ai.dify.credentials 修 Dify 生成凭据无法绑定
单体 muse-server 只加载自身 application.yaml,muse-module-ai-server 的同名
application.yaml(含 muse.ai.dify)被 classpath 遮蔽不生效。enabled/base-url
等标量能靠 MUSE_AI_DIFY_* 环境变量 relaxed-binding,但 credentials 是 List、
无法用扁平环境变量绑定 → 运行时列表为空 → RealDifyMuseAiRuntimeClient.apiKey()
恒返 null → 任何 Dify 生成秒失败于 AI_AGENT_DIFY_CREDENTIAL_REQUIRED。此前 S7d
只有 mock properties 的单测、从未经 muse-server 端到端活体验证,故未暴露。
修法:在 muse-server 自身 application.yaml 的 muse.ai 下补 dify.credentials
列表块(api-key 仍从环境变量注入,禁止明文落库)。
活体验证(muse_slice_live,官方 start-muse-server-infra.sh 重建+仅 p1r 标量 env、
无索引 env 兜底):POST /app-api/muse/ai/tasks(work1 writing.continuation)
→ agent v8(runtimeProvider=dify)→ RealDify → Dify /v1/chat-messages(写作 app
75f105e8, MiniMax-M3)→ generation taskId=117 status=completed 无 error →
suggestion id=107 落库真 M3 续写正文。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 04:50:27 -07:00 |
|
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 |
|