diff --git a/docs/mvp/进度总账.md b/docs/mvp/进度总账.md index 580aa580..6c88222f 100644 --- a/docs/mvp/进度总账.md +++ b/docs/mvp/进度总账.md @@ -188,6 +188,7 @@ - ✅ **2026-06-25(同日续):admin market 子域 e2e 转真连(下架/申诉真打+真 PG 反查落库,commit ce637ac)**。承 account 基建,market 原 5 skip 用例(全是 MSW payload 负向断言、真后端无 payload 收集器无法搬、纯前端逻辑已 vitest 覆盖)替换为 3 真连用例:治理页三工作台渲染 + 下架真打→PG 反查 listing_status=delisted+applied 治理动作 + 申诉 maintained 真打→PG 反查 status=maintained/resolver=1。global-setup 加 resetMarketFixture(资产/申诉复位+软删历轮 42 条 closed 申诉(否则挤出首页 pageNo=1 锚点)+清治理动作、幂等自愈)。揪出 mock 臆想契约:assetId 数字串、publish submitted→pending(后端 toOpenApiStatus 唯一特例)、resolution 列存处理理由文本非枚举、delist expectedStatus 只接受 listed、preview actionType 实为 5 值(含 review_rejection)非 4 值。net::ERR_* 资源懒加载抖动忽略(同解 account 首跑偶发红、原误判 console.error 实为 dev-server 负载 chunk 超时)。**独立连跑全量 account+market x2 各 4 passed + psql 复核 asset1=delisted/appeal1=maintained resolver=1/gov_action=1**(反假绿:真 token+真代理+真 PG+真契约+真写 DB)。⚠️ restore 票据路径 e2e 未覆盖(走 maintained、后端不消费 restore 预览),restore 仍只 mock-service 单测无真 PG IT 缺口待补(:397 注释)。剩 jobs(2)/governance config(1)子域 skip 待转。 - ✅ **2026-06-25(同日续):admin jobs 子域 e2e 转真连 + governance config 断层标注,admin governance e2e 全收口(commit 2d06ec5)**。剩 3 skip:jobs 2 个转真连(重试→后端校验 retryable 新插 operation_id=adminRetryJob queued 子 job、取消→muse_ai_job.status=cancelled、来源重试→新插 job_type=source_event_retry job;均纯 DB 状态机、活体 code:0),核心治理配置页(:456)保留 skip。关键坑:切片库后台 AI runtime worker ~3s 抢 queued→failed,取消锚点须用 running(queued 活体 cancel 真返 1040100014 不可取消)。global-setup 加 resetJobsFixture(幂等 seed 90001 failed/retryable + 90002 running muse_ai_job + 90003 needs_recheck muse_ai_source_event + 清派生)。真契约:retry 只接受 {commandId}、cancel/source 接受 {commandId,reason},删 museAdminPayloadsByPage。core config(:456)本轮先标 skip、随即续转真连(见下条;此处"缺表"前提经 psql 纠正为缺种子——原 agent 查 muse_function_chain 漏 meta_ 前缀误判无表)。**独立核实:连跑全量 account+market+jobs 6 passed/1 skipped + psql 复核 90002=cancelled/retry 派生=1/source_event_retry=1**。另查明 studio e2e 37 spec 本就 MSW-off 真连(playwright.config webServer VITE_API_MOCK=false 全局关 MSW + global-setup psql 复位)。待补后端:jobs/source 三写命令 P1r 真库 IT(现 Mockito 单测,本次 e2e 真连为首个端到端真验)。 - ✅ **2026-06-25(同日续):admin governance config 全页巡航转真连——拆 6 子系统+灌系统级种子,admin governance e2e 0 skip 全收口(commit 6bd9030)**。**前提纠正(承上条 jobs 的"缺表"误判)**:psql 实证真表名带 meta_ 前缀=muse_meta_function_chain/muse_meta_protection_node(V3 schema、都在 muse_slice_live、行数 0)——原 agent 查 muse_function_chain 漏 meta_ 前缀误判无表;真断层是切片库缺系统级公共治理对象种子、**非缺表非缺功能**(教训:断层标注前须按真实表名读 schema 验 to_regclass)。每锚点真表+真后端过滤契约(curl 实证):story.draft=muse_meta_schema、故事链路=muse_meta_function_chain(status=active、displayName 取 chain_snapshot)、事实校验=muse_meta_protection_node(status=active+policy_snapshot->>chainKey 绑定)、候选生成 Prompt=muse_prompt(非 muse_ai_prompt)、系统故事智能体=muse_agent(非 muse_ai_agent、agent_type=system)、系统世界观库=muse_knowledge_base(kb_type=global/owner=0)。global-setup 加 resetMetaGovernanceFixture(7 幂等 upsert)。原 1 skip 拆 6 条细粒度真连用例(元结构/功能编排/AI/全局知识/市场/New-API)+修 2 处 strict-mode 多命中。New-API 锚点契约纠正(mock user-e2e/usage-e2e 伪造值→真后端用户数字 id+聚合 recordId {userId}:{period})。**独立核实:连跑全量 e2e x2 各 12 passed/0 skipped + psql 复核 6 锚点种子真灌(function_chain/protection_node active、muse_prompt/muse_agent system/global KB 各 1 行)**。**至此 admin governance e2e 12 真连用例 0 skip 全转真后端**(account+market+jobs+meta governance、反假绿:真 token+代理+PG+契约+写 DB+读种子)。待补后端:jobs/source/market restore P1r 真库 IT;knowledge admin IT=0。 +- ✅ **2026-06-25(同日续):studio e2e 全量健康核查 + 前端双 bug 修 + flaky 根治 + 揪出真后端 bug(commit 443a1f3/de5f4d0/ca0e04c)**。admin governance e2e 全收口后核查 studio e2e(36 spec/56 case、本就 MSW-off 真连)。4 轮全量:整体健康 **54/56 稳定绿、0 假绿候选**(抽查断言强度证非假绿)。**修复三类**:①**前端双 bug**(443a1f3):ChapterPanel 新建章节双提交(onKeyDown Enter+onBlur 双触发 submitCreate、isCreatingPending 异步滞后→重复 POST 第 2 个乐观锁 1041000002)加 useRef 同步守卫;WorkspacePage expectedWorkRevision 用 workRevision()??1 兜底掩盖 work 详情未加载→改传真实 revision(undefined 走 ChapterPanel ==null 早返)。实证单次新建 POST 2→1、chapter spec 修后 8 次全绿。②**环境 fixture 污染**(de5f4d0):asset1 被历史 delist→连带 7 spec 红、work1 多余槽位→agent-slot-bind 多命中;global-setup §17/§18 复位。③**测试间来源污染 flaky**(ca0e04c):source-attribution 期望 block1 user_original 但前序 accept-suggestion 写 ai_suggestion 漂移→改读 pristine block3+§3 复位(断言未放宽、强灌 ai_suggestion 免疫验证)。**最大价值=揪出真后端 bug(mock 永远发现不了)**:`MuseKnowledgeBindingMapper.updateStatusByKbId`(:38-46)无 binding_status 过滤、给该 KB 所有未删 binding 写同一 commandId,违反 uk_muse_knowledge_binding_command(tenant_id,command_id WHERE NOT NULL)唯一索引→DuplicateKeyException(disable POST HTTP 200 但 body code:500)→**任何用户把 KB 绑 ≥2 作品后无法停用该 KB**(生产影响)。mock 单测 mock 该 mapper 返行数掩盖、psql KB1 2 binding curl disable 500/1 binding code:0 坐实、代码 :43-45 铁证。用户批准委托修后端(传播写不覆盖 command_id/逐行派生+补真 PG IT+knowledge-disable-restore e2e 转绿,进行中)。该 spec 暂留干净红信号。 ### 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 首跑。