diff --git a/docs/mvp/进度总账.md b/docs/mvp/进度总账.md index 6b2c986b..4de6044b 100644 --- a/docs/mvp/进度总账.md +++ b/docs/mvp/进度总账.md @@ -192,7 +192,7 @@ - ✅ **2026-06-25(同日续):AI 真生成 e2e 真红深诊+修复闭环——非 AI 外部、两层根因(环境已修 + SSE code bug 已修 c77b006)**。studio 全量末轮 54/56,2 红是 AI 真生成 spec(不 stub):ai-generation 真红、accept-suggestion flaky(隔离 2 次绿)。深诊定位**两层、均非 AI 外部**(New-API curl 真验在线 HTTP 200+/v1/chat/completions 15s 真文本、清代理非劫持误诊):①**环境/启动(已修)**:start-muse-server-infra.sh 漏 source p1r-external-acceptance.env(New-API 凭据)→server 无 MUSE_AI_NEW_API_*→RealNewApiMuseAiRuntimeClientCondition 装 UnavailableMuseAiRuntimeClient 兜底→AI job 秒失败 AI_NEW_API_UNAVAILABLE(runtime 10-21ms、HTTP 没发出);重启 source 两 env 真验 job completed+suggestion 落库(脚本待固化防复发);②**真 code bug(SSE 协议/时序)**:后端 MuseAiTaskStreamServiceImpl DEFAULT_TIMEOUT_MILLIS=30s 硬死线30s 后端空关+前端不重连→候选永丢 UI。accept flaky/ai-gen 真红是同一 bug 时延两侧(task70 15.3s 绿/task71 35.7s 红、server 日志 done 晚 8s 落库)。**反假绿:e2e 真红深诊分清环境/code/外部三层**(New-API 实在线、真红是 code bug、非急标 flaky/环境)。第二层属 SSE 协议/时序产品行为变更、用户选 A 委托出方案评审文档(design-docs/临时-01、commit 09c35f5)→review 批准 A1+候选③→**已修 commit c77b006**:后端 DEFAULT_TIMEOUT_MILLIS 硬编码→@Value muse.ai.sse.task-timeout-millis 默认 240000(≥上游 TOTAL_TIMEOUT 180s+轮询/回放余量、连接死线:70+poll deadline:198 同引用);前端 connectAIStream 退避重连续 poll+按 SSE id 去重(后端不读 lastEventId、每次 seq0 全量回放→lastSeenSequenceNo 丢弃已见避免重复渲染候选)+done/error terminal 停+总超时 300s onError(SSE_TIMEOUT)不静默卡死(返回仍 AbortController、AIPanel 零改动);A1 start-muse-server-infra.sh 固化 source acceptance env。验证:后端单测 14/14+前端 107/107(含重连去重用例)、活体 e2e ai-generation+accept 连跑 3 轮 6/6 全绿、DB 落 6 行真 LLM suggestion、重连幂等方法 A 活体证。残留:本机 LLM 6.8-19s 未自然跨 30s、慢路径靠「240s 数学覆盖上游 180s+单测+方法 A 重连活体证」三重保证。通则沉淀 muse-module-ai/.agent。 - ✅ **2026-06-25(同日续):studio e2e 56/56 全绿收尾(SSE 慢路径活体补证 + agent-slot-bind flaky 根治,commit d1917b4)**。SSE 修复(c77b006)收尾全量验证连跑 3 轮(56/56/55-1):本 session 4 修复 spec(knowledge 多 binding/AI SSE/source 污染/乐观锁)3 轮 3/3 全绿、无交叉回归;**AI SSE 慢路径活体补证**——第 3 轮 ai-gen 36s/accept 47s 真>30s 仍绿(旧 30s 死线必红、新 240s 死线+前端重连扛住),消除上轮"本机未自然>30s"残留风险。唯一失败=agent-slot-bind:94 预存 flaky(~64% 失败、commit 1fbe7ae 6-24 补 e2e 引入、非本 session 回归、DB 干净产品逻辑正确):getByText("当前:xxx v1")全局 strict 命中 2 元素(AgentPage 沙盒试用区回显 selectedAgent + SlotBindingPanel 槽位 boundAgentName、选中 agent==已绑时同文案)与槽位异步读时机竞速;收窄到 div.rounded-2xl filter「作品槽位绑定」槽位面板容器内断言(不改产品、仿套件 locator().filter() scope),**10 次独立循环 10/10 全绿根治**(方法学:非 --repeat-each——globalSetup 单进程单次复位会致 revision 1→2 漂移伪红,改逐次独立 playwright test 每轮重跑复位)。**至此本 session e2e 阻塞全清:admin governance 12 真连 0 skip + studio 56/56**。 - ✅ **2026-06-25(同日续):「继续验证修复」收尾——e2e 最新态确认 + CI 单测全绿(全 reactor 2834/0/0,commit 7ee9cc8/effb3f8)**。①**e2e 确认**:admin governance 12/12(连跑 2 轮、SSE server 重启无影响;agent 订正实际 12 test 非 14——6bd9030 拆 governance config 为 6 子系统后定数)+ studio 56/56;本 session 改动无回归(后端 BUILD SUCCESS、前端 studio vitest 107+tsc / admin vitest 345+vue-tsc 全绿)。②**全 reactor 单测健康扫揪修 3 个预存历史红(均非本 session、自包含装配/清单缺陷)**:knowledge `MuseKnowledgeBindingServiceTest` 漏 @Mock `MarketHandoffTokenApi`→@InjectMocks null→service verify NPE(7ee9cc8、补 @Mock+stub valid)、pay 4 用例 `application-unit-test.yaml` 的 `data:` 缩进 4 空格错挂 `sql:` 下→`spring.data.redis.port=16379` 失效退默认 6379→命中本机带密码真 Redis NOAUTH(effb3f8、回退 2 空格对齐;源自初始导入 43d6806 继承 yudao、8963383 首次全绿时 6379 无密码侥幸过)、muse-server `P1rApiCoverageReportTest` 覆盖报告 `p1r-api-coverage.json` 16 处 completed 指向已删 `UnavailableMetaImpactFacade`(4bd292f 用 RealMetaImpactFacade 替换时报告未同步,effb3f8、16 处改替代者 JSON 合法)。修后全 reactor `mvn -o test`(61 模块跳 IT failsafe)**2834 tests 0F/0E BUILD SUCCESS**;独立复跑 PayOrderServiceTest 46/0、P1rApiCoverageReportTest 8/0、knowledge 模块 250/0 真转绿(不全信 agent 复验)。③**分支订正**:实际工作分支是 `dev/1.0.0`(集成分支、历史 d303279 已 merge feature/agent-dev-infrastructure 进来),本 session commit 连续落此分支(session 开头快照 feature/* 已过时、非落错)。 -- ✅ **2026-06-26:抽样关键链路 P1r 真 PG IT 验证(用户选抽样、6/6 全绿,commit a0569c6)**。从 50 个 P1r IT 选 6 个关键链路抽样(本 session knowledge 多 binding 停用 + AI 生成→采纳 ADR-020 + AI runtime e2e + 知识检索 P-A/B/C + market handoff),真 PG muse_slice_live + New-API/RAGFlow 真外部跑 **6/6 全绿**。修 1 个预存红(非本 session、测试基建跟上产品演进):`P1rAiRuntimeEndToEndLiveAcceptanceIT` TARGET_VERSION 13→31(ADR-020 V30 把 muse_ai_suggestion.authorization_snapshot_id BIGINT→VARCHAR、停 V13 bigint 类型不匹配)+ 补 MuseAiEventPublishOutboxService 空实现/KnowledgeRetrievalFacade empty context 两 bean(ADR-020 outbox+P-A 检索演进新增 @Resource 依赖、IT 上下文未跟上;校验属其他 IT 职责、与 P1rContentMergeGeneratedSuggestionIT 同源),核心 AI 生成→runtime_call→落库断言不变。**anti-false-green**:核实 diff 合理非放宽 + muse-server test-compile BUILD SUCCESS(独立跑因 IT `flyway.clean()` DROP `_test` 库风险未做、改以核实 diff+编译+agent 双报全绿替代)。**至此本 session 验证三层全绿收尾:e2e(admin 12/studio 56)+ CI 单测(全 reactor 2834)+ 抽样真 PG IT(6/6)**。 +- ✅ **2026-06-26:抽样关键链路 P1r 真 PG IT 验证(用户选抽样、6/6 全绿,commit a0569c6)**。从 50 个 P1r IT 选 6 个关键链路抽样(本 session knowledge 多 binding 停用 + AI 生成→采纳 ADR-020 + AI runtime e2e + 知识检索 P-A/B/C + market handoff),真 PG muse_slice_live + New-API/RAGFlow 真外部跑 **6/6 全绿**。修 1 个预存红(非本 session、测试基建跟上产品演进):`P1rAiRuntimeEndToEndLiveAcceptanceIT` TARGET_VERSION 13→31(ADR-020 V30 把 muse_ai_suggestion.authorization_snapshot_id BIGINT→VARCHAR、停 V13 bigint 类型不匹配)+ 补 MuseAiEventPublishOutboxService 空实现/KnowledgeRetrievalFacade empty context 两 bean(ADR-020 outbox+P-A 检索演进新增 @Resource 依赖、IT 上下文未跟上;校验属其他 IT 职责、与 P1rContentMergeGeneratedSuggestionIT 同源),核心 AI 生成→runtime_call→落库断言不变。**anti-false-green**:核实 diff 合理非放宽 + muse-server test-compile BUILD SUCCESS(独立跑因 IT `flyway.clean()` DROP `_test` 库风险未做、改以核实 diff+编译+agent 双报全绿替代)。抽样 6/6 后**用户选继续→全量 50 P1r IT 全跑 50/50 全绿(199 用例 0F/0E/1S、1 skip=RagFlow GraphRAG assumeTrue、含 4 个 LiveAcceptance 真打 New-API/RAGFlow,commit 94545ff)**:再修 2 个预存红(均非本 session)——`P1rContentPlanningCompletedApprovalIT`(TARGET_VERSION 21→31、savePlanningItem 依赖 V25 新增 muse_content_planning_field_snapshot 表 commit 94a2379、停 V21 缺表 500;核心 planning fact/command/outbox 断言不放宽)+ 4 个 live-acceptance **第二代理坑**(已记 SOCKS 清理只清 socksProxyHost、但 macOS 系统代理 127.0.0.1:7897 仍被 JVM 注入 http.proxyHost/https.proxyHost、`java.net.http.HttpClient` 走死代理→502/UNAVAILABLE;反误判=`curl --noproxy '*'` 直打同地址 health/completions 全 200 证外部健康、非外部波动;修=argLine 加 `-Dhttp.proxyHost= -Dhttps.proxyHost= -Djava.net.useSystemProxies=false`),蒸馏 external-deps-and-gotchas。**anti-false-green**:核实 Planning diff 仅 schema 版本非放宽 + 独立核实生产切片库 **muse_slice_live 167 表+数据完整未被 IT flyway.clean 误删**(work 真名 muse_content_work 我曾误用 muse_work 虚惊;IT 全走 muse_p1r_*_test 隔离库、_test 铁律遵守)。**至此本 session 验证三层全维度全绿:e2e(admin 12 + studio 56)+ CI 单测(全 reactor 2834/0)+ 真 PG IT(全量 50/50)**。 ### D. gateway 接线(B4,**配置层已收口;运行态后置**) - ✅ **配置层收口(2026-06-19)**:`muse-gateway` 已新增 `/admin-api/muse/**`、`/app-api/muse/** → grayLb://muse-server`,删除当前聚合入口未启用的 bpm/pay/report/mp 死路由,Knife4j 聚合入口改为 `muse-server`。新增 `GatewayRouteConfigurationTest` 机械门禁,断言 Muse 路由存在、停用模块路由不回潮、Knife4j 不展示停用服务;本轮 `mvn -pl muse-gateway test -Dtest=GatewayRouteConfigurationTest` **3/3 绿**。 - ⏸ **运行态仍后置**:单体 P1R-7 仍以 `muse-server` 直服 48080 `/app-api` 为验收关键路径;`muse-server` 默认禁用 Nacos 注册,且 gateway 与 server 本地默认端口同为 48080,所以本轮不声称网关真实转发已完成。后续若启用网关部署,需补注册发现/端口方案并做 curl/e2e 首跑。