oh-my-muse/docs/mvp/1.0.0-真验证清单.md
lili a5619a3566
Some checks failed
Backend Maven CI / backend-local (push) Has been cancelled
feat(content): 补齐导入导出真链路
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 07:40:10 -07:00

191 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Muse 1.0.0 真验证清单
> 版本v1.02026-06-27E0 消假绿地基)
> 作用:给 E1-E7 的 done 判据提供统一口径。本文只记录“什么证据算真验证、如何复跑、哪些只算台账/跳过/mock”不记录功能进度流水。
---
## 1. 结论
1. **默认 CI 只证明纯本地层**`mvn -B package --file pom.xml` 能跑单测、ArchUnit、契约结构和 coverage 台账门,但不证明真实 PostgreSQL / RAGFlow / New-API 链路。
2. **`P1r*RealApiGateTest` 是台账门禁**:它们只读 `docs/superpowers/reports/p1r-api-coverage.json`,防止 coverage 回退;不打 HTTP、不连 DB、不调用外部服务不得计入业务真验证。
3. **`P1r*IT` 才是后端真验证主体**:其中 real-PG 层会 `flyway.clean()` 指定 `_test`external-live 层还会真实调用 New-API/RAGFlow必须显式 opt-in。
4. **live 默认跳过不是绿证**:未设置 `MUSE_P1R_EXTERNAL_ACCEPTANCE=true`live IT 通过 `assumeTrue` 跳过,应在交付记录中标为 `SKIPPED`,不能标为 `PASSED`
---
## 2. 分层口径
| 层级 | 证据类型 | 命令入口 | 计入 1.0.0 真 done |
|---|---|---|---|
| `local-ci` | 普通单测、ArchUnit、契约结构、coverage/RealApiGate 台账门 | 根 workflow `.github/workflows/maven.yml``bash muse-cloud/scripts/run-p1r-verification.sh local` | 只能证明本地静态/单测门,不证明业务闭环 |
| `real-pg` | 非 live 的 `P1r*IT`MockMvc/真实 mapper/真实 PostgreSQL `_test` 库 | `bash muse-cloud/scripts/run-p1r-verification.sh real-pg` | 可计入后端真验证 |
| `external-live` | New-API / RAGFlow / 端到端 runtime live IT | `bash muse-cloud/scripts/run-p1r-verification.sh external-live` | 可计入外部链路真验证 |
| `frontend-e2e` | MSW-off Playwright 真后端/真 DB 旅程 | 各前端现有 Playwright 命令 | 可计入用户可达闭环 |
| `mock-only` | Mockito/Vitest/MSW/mock 数据 | 各模块单测 | 只能证明局部逻辑,不计入上线闭环 |
| `skipped` | `assumeTrue` 或环境缺失导致跳过 | 测试报告中 skipped | 不计入通过 |
---
## 3. 一键复跑
### 纯本地层
```bash
bash muse-cloud/scripts/run-p1r-verification.sh local
```
该层不读取凭据、不连接 PG/Redis/RAGFlow/New-API。
### real-PG 层
```bash
set -a && . "$HOME/.config/muse-repo/infra.env" && set +a
P1R_FLYWAY_URL='jdbc:postgresql://100.64.0.8:5433/<专属_test库>' \
P1R_FLYWAY_USER='root' \
bash muse-cloud/scripts/run-p1r-verification.sh real-pg
```
硬闸:
- `P1R_FLYWAY_URL` 的真实 database name 必须以 `_test` 结尾。
- 目标 `_test` 库必须经人类 DDL 闸门预建;脚本只做存在性预检,不自动 `CREATE DATABASE`
- JDBC URL 不得携带 `password` / `token` / `secret` / `api-key` 等 query。
- 密码只走 `P1R_FLYWAY_PASSWORD``MUSE_POSTGRES_PASSWORD` 环境变量。
- 批量 IT 必须 `-DreuseForks=false`,避免脱敏后的 `p1r.flyway.url` 污染同 JVM 后续测试。
### external-live 层
```bash
set -a
. "$HOME/.config/muse-repo/infra.env"
. "muse-cloud/scripts/dev/p1r-external-acceptance.env"
set +a
export MUSE_P1R_EXTERNAL_ACCEPTANCE=true
P1R_FLYWAY_URL='jdbc:postgresql://100.64.0.8:5433/muse_p1r_live_test' \
P1R_FLYWAY_USER='root' \
bash muse-cloud/scripts/run-p1r-verification.sh external-live
```
该层会真实调用 New-API/RAGFlow。脚本会清 JVM SOCKS/HTTP/HTTPS 代理,避免把 tailnet 外部依赖误判为 502/不可用。
---
## 4. 当前基线
已验证事实(来自代码/配置只读核验):
- 根 Maven CI 已接在 `.github/workflows/maven.yml`,默认只跑本地层。
- 子目录 `muse-cloud/.github/workflows/maven.yml` 已移除,避免远端不扫描造成假绿。
- 7 个 `P1r*RealApiGateTest` 全部只读 coverage JSON。
- 仓内有 51 个 `P1r*IT.java`,其中 5 类 live 入口需要显式 `MUSE_P1R_EXTERNAL_ACCEPTANCE=true`
E0 fresh 基线2026-06-26 本轮实跑):
- `bash muse-cloud/scripts/run-p1r-verification.sh local`61 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`
- 根 CI 等价命令 `mvn -B package --file pom.xml`(工作目录 `muse-cloud`3060 tests / 0 failures / 0 errors / 148 skipped`BUILD SUCCESS`
- `bash muse-cloud/scripts/run-p1r-verification.sh real-pg`(真实 PostgreSQL `_test`live IT 显式排除189 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`,耗时 09:24。
- `bash muse-cloud/scripts/run-p1r-verification.sh external-live`server live 8 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`,耗时 02:12module live 4 tests / 0 failures / 0 errors / 1 skipped`BUILD SUCCESS`,耗时 12.395s。1 个 skip 为 GraphRAG attribution 未配置New-API、RAGFlow health/upload/parse/chunks/retrieval、AI runtime、knowledge runtime、market KB fork 物化主链路均 fresh 通过。
- 脚本错误路径已验:缺 `P1R_FLYWAY_URL`、非 `_test` 库、JDBC URL 携带敏感 query、缺目标 `_test` 库、`external-live` 未 opt-in 均在 Maven 前失败。
live 边界:
- GraphRAG attribution 仍因开关未启用而跳过,不能标为 passed。
- E1-E7 若修改 live 相关链路,必须按 `external-live` 层重新提供 fresh 证据;本条只作为 E0 基线。
1.0.0 RC fresh 总验2026-06-27本轮实跑
- `local``bash muse-cloud/scripts/run-p1r-verification.sh local`61 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`。本轮同步修正 `P1r*RealApiGateTest` 台账边界到 coverage `241/241 completed`,仍只作为 coverage 门禁,不计业务真跑。
- `local-ci/package`:根 CI 等价命令 `mvn -B package --file pom.xml`(工作目录 `muse-cloud`首次暴露契约登记表滞后OpenAPI 241 个操作,`MuseApiContractSupport` 只登记 233 个,缺 `update/archive/list/activate/archive agent version``slot unbind``block revisions``knowledge retrieval` 等 8 个入口;补齐后 `MuseApiContractSupportTest` 4 tests / 0 failures / 0 errors / 0 skipped最终根 package 61 个 reactor 模块全 SUCCESS`BUILD SUCCESS`
- `real-pg``bash muse-cloud/scripts/run-p1r-verification.sh real-pg`,真实 PostgreSQL `_test``muse_p1r_100_release_test`47 份 fresh surefire 报告 / 194 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`。先前同轮暴露的 1F/2E 已修market 召回断言从旧 `TARGET_OWNER_UNAVAILABLE` 对齐为当前来源状态事件发布语义content 两个 IT 补齐测试上下文依赖;修后 targeted 6/0再全量 194/0。
- `external-live``bash muse-cloud/scripts/run-p1r-verification.sh external-live`,真实 New-API/RAGFlow + `_test`server live 8 tests / 0 failures / 0 errors / 0 skippedmodule live 4 tests / 0 failures / 0 errors / 1 skipped`BUILD SUCCESS`。真跑证据覆盖 New-API completion、AI runtime 写 usage/quota/attribution、RAGFlow health/upload/parse/chunks/retrieval、Knowledge runtime、Market KB D0-fork 物化与 after-commit唯一 skip 为 GraphRAG attribution 独立 opt-in 未配置,不计为 passed。
- 反假绿补记:手工直跑 server IT 时必须让 surefire forked JVM 收到 `p1r.flyway.*` 与代理清理参数;优先使用脚本。改过 module 后跑 server IT 需 `-am` 或先 `mvn install`,否则会拿旧 jar 产生 stale-jar 假红。
- `frontend-local` Studio`./node_modules/.bin/tsc -b --force` 通过;`./node_modules/.bin/eslint .` 0 errors / 1 warning既有 `public/mockServiceWorker.js` unused eslint-disable`./node_modules/.bin/vitest run` 27 files / 119 tests passed。首次 Vitest 红在 `useAgents.test.tsx` 固定断言旧 total=3E4 后真实 fixture 增加“已安装市场智能体”,已改为按列表长度与关键项断言。
- `frontend-local` Admin`pnpm -F @vben/web-antd run typecheck` 通过;`pnpm test:unit` 50 files / 347 tests passed。当前 Node v26.3.0 超出 package engines 推荐范围(`^20.19.0 || ^22.18.0 || ^24.0.0`),但本轮测试通过;已补 `vitest.setup.ts` 桥接 `localStorage/sessionStorage``globalThis`,避免 Node v26 下 happy-dom 测试假红。
- `frontend-e2e` StudioMSW-off 全量 Playwright `./node_modules/.bin/playwright test`61 tests = 60 passed / 1 skipped / 0 failed耗时约 1.4m,真实 muse-server 48080 + 共享 `muse_slice_live` + New-API/RAGFlow。首次全量红 5 项3 项账户额度不足、1 项 AI Agent 不存在、1 项知识库状态定位器 strict-mode 歧义;修复为 Playwright global setup 每轮复位 user1 `ai_calls`、隔离 `agent-slot-bind` 到 work2 并刷新作品列表可见性、恢复 work1 AI 主链槽位、收窄知识库卡片定位。跳过项为 `market-install-kb-retrieval.spec.ts` D0-fork UI 物化用例 `test.fixme`,不计为 passed。
- `frontend-e2e` 反假绿补记:全量 Playwright 曾暴露 `KnowledgePage` 自建/已安装 KB `kbId` 重复导致 React key warning已改用 `source/installId/kbId` 复合 key。该修复不放宽断言只消除渲染层隐患。
E1 fresh 切片证据2026-06-27本轮实跑
- 功能链路Content 采纳 AI suggestion 时同步调用 AI owner`accepted` 状态、accepted decision archive、AI command 与 business auditStudio 支持“改后合并”提交 `finalContent`IndexedDB 草稿键改为 `workId+blockId+revision`Content 正文变更后通过 Knowledge owner API 将关联 pending draft 标为 `conflicted/needs_recheck` 并写 Knowledge draft decision archive工作台补知识/导入/导出/记录最小入口;保存/采纳后写 `muse_content_block_revision_snapshot`Studio 历史 Tab 只读展示 Canonical revision 快照。
- `mock-only` 局部单测:`ContentSourceServiceTest` 25 tests / 0 failures / 0 errors`ContentAppServiceTest` 19 tests / 0 failures / 0 errors`MuseKnowledgeDraftInvalidationServiceTest` 3 tests / 0 failures / 0 errors`AiSuggestionMergeProjectionFacadeTest` 7 tests / 0 failures / 0 errors`BUILD SUCCESS`
- `local-ci` 契约/覆盖门:`ContractFirstGateTest` 4 tests / 0 failures / 0 errors`P1rApiCoverageReportTest` 8 tests / 0 failures / 0 errorscoverage JSON 已把 `listBlockRevisions` 纳入 completed/testFiles。
- `real-pg` 后端切片:`P1rContentCoreCompletedApprovalIT` 13 tests / 0 failures / 0 errors / 0 skipped`P1rContentMergeSuggestionIT` 5 tests / 0 failures / 0 errors / 0 skipped`P1rContentMergeGeneratedSuggestionIT` 1 test / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`。运行使用真实 PostgreSQL `_test` 库,限定 `P1R_REAL_PG_TESTS='P1rContentCoreCompletedApprovalIT,P1rContentMergeSuggestionIT,P1rContentMergeGeneratedSuggestionIT'`
- 前端静态/局部验证:`tsc -b --force` 通过;`npm run lint` 0 errors仅既有 `public/mockServiceWorker.js` unused eslint-disable warningVitest 3 files / 12 tests passed补跑 `AIPanel.contract.test.tsx` + `sse.test.ts` 2 files / 22 tests passed覆盖 done 无 chunk 时回源读取 suggestion detail 的真实红点。
- `frontend-e2e` 活体验证:`accept-suggestion.spec.ts` 2 tests / 0 failures / 0 errorsMSW-off真实 muse-server 48080 + 共享 `muse_slice_live` + 真 New-API/RAGFlow 配置)。正路证据:真生成 suggestionId=79authz=`rpe-local-*`Block revision 160→161`sourceAttribution.lineage.parentSuggestionId` 指向本轮真生成候选AI owner 归档 `accepted` 且 decision archive 非空;负路 stale `expectedBlockRevision` 返回业务冲突。
- 边界:本轮只跑 Studio `accept-suggestion` 黄金旅程,没有重跑 studio 全量 56 e2e`muse-studio/src/types/content.ts` 生成类型未同步,新版本 `openapi-typescript` 会带出大量历史 string/number 与 version/revision 机械漂移,本轮仅在 hook 内维护 `BlockRevision` 最小类型。
RC 后导入向导 fresh 证据2026-06-28本轮实跑
- 功能链路Studio 完整导入向导走上传扫描 → Content 创建外部上传任务 → AI owner 读取稳定 storageRef 并创建 parse job → 产出 pending-review Shadow 章节 → 用户批量确认 → Knowledge owner 创建 pending Draft确认链路不直写 Knowledge Canonical。AI owner 支持 txt/markdown/docx/epub 抽取;`full_book/llm_full_book` 策略调用 New-API LLM 全书解析timeout/429/5xx/连接失败可重试。
- `local-ci` 后端切片:`MuseAiImportParseServiceTest` + `NewApiMuseAiImportLlmParserTest` + 相关 content/infra/knowledge targeted 测试通过docx/epub 成功与异常、LLM 502 后重试成功、401 不重试均有单测覆盖。
- `external-live` AI parser`P1rImportLlmNewApiLiveAcceptanceIT` 显式 opt-in 1 test / 0 failures / 0 errors / 0 skipped真实调用 New-API输出 endpoint、凭据已配置标记、模型、章节数和摘要 hash不输出凭据、原文或 provider 原始响应。
- `real-pg`/`external-live` 完整向导:`P1rContentImportWizardCompletedApprovalIT` 使用真实 PostgreSQL `_test` 库 clean+migrate 到 V34+;默认 docx 链路 2 tests / 0 failures / 0 errors / 1 skipped显式 opt-in New-API live LLM 完整链路 1 test / 0 failures / 0 errors / 0 skipped。live 链路 providerStatusCode=200写入 2 条 AI Shadow 章节并创建 2 条 pending Knowledge Draft`muse_knowledge_entity` 仍为 0。
- 前端静态/局部验证Studio `useWorks.test.tsx` + `ExportWorkModal.test.tsx` 12 tests / 0 failures / 0 errors`tsc -b --force` 通过。
- `frontend-e2e` 活体验证:`import-wizard.spec.ts` 1 test / 0 failures / 0 errorsMSW-off真实 muse-server 48080 + 共享 `muse_slice_live` + 真 New-API 配置)。浏览器上传 txt 文件后真打 `upload-returning-path``import-tasks``parse-jobs``batch-confirm`DB 反查 parse job `completed`、2 条 confirmed Shadow、2 条 pending Knowledge DraftCanonical entity 计数不变;用例结束清理本轮导入测试行。
- `frontend-e2e` 活体验证:`export-download.spec.ts` 1 test / 0 failures / 0 errorsMSW-off真实 muse-server 48080 + 共享 `muse_slice_live` + 本地 FileService master。浏览器创建 TXT 导出任务后真打 `downloads/{credentialId}`,请求头携带 `Authorization`/`tenant-id`/`X-API-Version`;真实浏览器 download 事件读取到的文件包含作品标题与正文片段DB 反查导出任务 `completed``packageRef/credentialId` 非空并清理本轮任务与文件记录。
- 边界Knowledge Draft 进入 Local KB Canonical 仍需用户后续显式审核确认FileApi/对象存储异常按合同 fail-closed不伪造解析成功。
E2 fresh 切片证据2026-06-27本轮实跑
- 功能链路:用户自建 Agent 支持创建初始版本、编辑生成新 active version、版本列表/激活/归档非当前版本、归档 Agent作品槽位支持真实 unbindStudio “放弃修改”从本地清 UI 改为调用 AI owner reject 写 decision archive。
- `local-ci` 后端切片:`MuseAgentServiceTest` + `MuseAgentSlotServiceTest` + `AppMuseAgentControllerAnnotationTest` + `AppMuseAgentSlotControllerAnnotationTest` 共 63 tests / 0 failures / 0 errors`BUILD SUCCESS`
- `local-ci` 契约门:`ContractFirstGateTest` 4 tests / 0 failures / 0 errorsAI OpenAPI 已补 update/archive Agent、versions list/activate/archive、slot unbind 契约。
- 前端静态/局部验证:`tsc -b --force` 通过;目标 ESLintE2 e2e + global-setup0 errorsVitest `useAgents.test.tsx` + `AIPanel.contract.test.tsx` + `sse.test.ts` 3 files / 29 tests passed。
- 启动修红:最新 muse-server clean package 后首次启动红在 `muse.codegen.importEnable` 缺省;已在 `muse-server/src/main/resources/application.yaml``import-enable: false`,随后 `muse-server` 重新 `BUILD SUCCESS` 并在 48080 启动成功,真 HTTP `/app-api/muse/agents` smoke 返回 `code=0`
- `frontend-e2e` 活体验证:`agent-create.spec.ts` + `agent-slot-bind.spec.ts` + `accept-suggestion.spec.ts` 共 5 tests / 0 failures / 0 errorsMSW-off真实 muse-server 48080 + 共享 `muse_slice_live` + 真 New-API/RAGFlow 配置)。证据:采纳真生成 suggestionId=80、authz=`rpe-local-*`、Block revision 161→162 且 AI owner accepted decision archive 非空;拒绝真生成 suggestionId=81 后 `status=rejected` 且 decision archive 非空Agent 生命周期 DB 核验 `current_version_id` v1/v2 切换与 v2 archivedSlot unbind DB 核验 revision 2→3、status=`archived`、响应 `sourceStatus=unbound`
- 边界:质量评测执行器仍未落地,明确不计入 1.0.0 线 A done后置线 B本轮没有重跑 studio 全量 e2e只跑 E2 相关真后端切片。
E3 fresh 切片证据2026-06-27本轮实跑
- 功能链路Studio 知识页新增主动检索面板,用户可对作品已绑定知识来源发起真实检索;无 dataset 时返回用户可见治理提示自建知识库资料上传走真实后端并在列表读回market KB handoff 兑现后可进入作品知识绑定链路AI 生成链路真实消费 Knowledge Source 检索上下文。
- `local-ci` 后端切片:`MuseKnowledgeRetrievalAppServiceTest``AppMuseKnowledgeRetrievalControllerTest``MuseKnowledgeRetrievalApiImplTest``AppMuseKnowledgeBindingControllerTest``AppMuseKnowledgeDocumentControllerTest` 共 25 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`
- `local-ci` 契约/迁移门:`P1rKnowledgeMigrationSqlTest``ContractFirstGateTest``P1rApiCoverageReportTest` 共 21 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`coverage JSON 当前 `241/241 completed`。V33 `allow_market_kb_precheck_without_local_kb` 已落 live`muse_knowledge_bind_precheck.kb_id` 为 nullable修正 market_kb 预检阶段尚未物化本地 KB 时的 schema 漂移。
- 前端静态/局部验证Knowledge 相关 Vitest 4 files / 19 tests passed目标 ESLint 0 errors`tsc -b --force` 通过。`useKnowledge` 已把真实后端返回的 numeric `documentId/kbId` 归一为前端字符串,避免上传后列表被类型守卫过滤。
- `frontend-e2e` 活体验证一:`knowledge-retrieval.spec.ts` + `knowledge-bindings.spec.ts` + `handoff-knowledge.spec.ts` + `market-handoff-precheck.spec.ts` 共 6 tests / 0 failures / 0 errorsMSW-off真实 muse-server 48080 + 共享 `muse_slice_live` + RAGFlow/New-API 配置)。覆盖 market KB handoff 正/负路、绑定投影读回、no_dataset 治理提示、上传真落库读回、市场授权预检。
- `frontend-e2e` 活体验证二:`ai-generation.spec.ts` 1 test / 0 failures / 0 errorsMSW-off真 New-API 生成 suggestionId=82。用例反查 `muse_ai_generation.source_summary->contextAssembly`,确认 `chunkCount>0``retrievedKbIds``authorizationSnapshotIds` 非空,证明 Knowledge Source 被 AI 生成真实消费。
- 边界:本轮只跑 E3 相关 Studio e2e 与 AI 生成 Source 消费切片,没有重跑 studio 全量 56知识图谱/发布深面仍按后续模块进度推进;已物化 KB 的召回触达归 E4。
E4 fresh 切片证据2026-06-27本轮实跑
- 功能链路market agent handoff 由 AI 后端按 market asset 解析发布者 agent并物化为安装者本地 user agent 后绑定作品槽位;该槽位可真实创建 AI task 并完成 New-API runtime。market KB 召回由 Market 发布来源状态事件Knowledge AFTER_COMMIT 消费后把已物化 installed_ref KB projection 置 `recalled/blocked`,作品检索返回 `omittedSources`,不再检索该 KB。市场详情页渲染来源引用、当前授权、治理状态三类可信信息。
- `local-ci` 后端切片:`MuseAgentSlotServiceTest``AdminMarketGovernanceServiceTest``MuseKnowledgeSourceEventServiceTest``KnowledgeMarketSourceStatusChangedConsumerTest` 共 50 tests / 0 failures / 0 errors`BUILD SUCCESS`
- `local-ci` 契约/覆盖门:`ContractFirstGateTest` 4 tests / 0 failures / 0 errors`P1rApiCoverageReportTest` 8 tests / 0 failures / 0 errorsAI OpenAPI 已收敛 market agent precheck/bind 不再要求客户端提交 `sourceAgentId/sourceAgentVersion`
- 前端静态/局部验证:`npx tsc -b` 通过;`npm run lint` 0 errors仅既有 `public/mockServiceWorker.js` unused eslint-disable warningVitest `useMarket.test.tsx` + `AgentHandoffLanding.test.tsx` 2 files / 11 tests passed。
- `frontend-e2e` 活体验证一:`handoff-agent.spec.ts` + `market-asset-detail.spec.ts` + `market-kb-recall.spec.ts` 共 4 tests / 0 failures / 0 errorsMSW-off真实 muse-server 48080 + 共享 `muse_slice_live` + New-API/RAGFlow 配置)。覆盖 agent 物化、本地槽位 runtime 完成态、伪造 token 拒绝、可信信息面板渲染、KB 召回传播到 Knowledge projection 并在检索中省略。
- `frontend-e2e` 活体验证二:`market-governance-impact.spec.ts` + `market-handoff-precheck.spec.ts` 共 2 tests / 0 failures / 0 errorsMSW-off真实后端。覆盖治理影响读面与 market 来源侧授权预检回归。
- 边界:本轮未重跑 Studio 全量 56 e2emarket KB 副本资源回收、下架/撤权更细粒度补偿仍后置线 B测试夹具会在 Playwright global setup 或新用例 finally 中复位被召回的 handoff KB 资产,避免污染后续 e2e。
E5 fresh 切片证据2026-06-27本轮实跑
- 功能链路AI 生成入口先经 Account owner 预占配额;生成成功后写 `muse_member_usage_record` 并累加 quota used生成失败终态释放预占用量 attribution worker 消费 queued job 写 attribution itemquota request worker 调 New-API 管理口并把 request/integration call 推进到终态。
- `local-ci` 后端切片:`MuseAiTaskServiceTest``MuseAiRuntimeProjectionServiceTest``AccountUsageServiceTest``AccountQuotaServiceTest``AccountAttributionServiceTest``AccountNewApiBindingServiceTest``MuseAccountUsageApiImplTest``NewApiAccountFacadeConfigurationTest``RealNewApiAccountFacadeTest` 共 120 tests / 0 failures / 0 errors`BUILD SUCCESS`
- `real-pg` account 切片:`P1rAccountQuotaRequestCompletedApprovalIT` 5 tests / 0 failures / 0 errors / 0 skipped`P1rAccountAdminWritesCompletedApprovalIT` 3 tests / 0 failures / 0 errors / 0 skipped`P1rAccountNewApiBindingClusterCompletedApprovalIT` 4 tests / 0 failures / 0 errors / 0 skipped`P1rAccountUsageObservabilityCompletedApprovalIT` 4 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`。运行库为真实 PostgreSQL `_test``muse_p1r_account_e5_test`
- `external-live` New-API 管理口:`RealNewApiAccountFacadeLiveAcceptanceIT` 显式 opt-in 1 test / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`;证据只输出 endpoint、`newApiUserId` 哈希前缀、`quotaApplied=100000000`、binding/quota external call 布尔值,不输出凭据。未 opt-in 的默认运行是 honest skipped不计为 live passed。
- `external-live` AI→Account 串联:`P1rAiRuntimeEndToEndLiveAcceptanceIT` 3 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`。反查 `accountUsageRecordCount=1``accountQuotaUsedAmount=1`、reserve audit 1、release audit 0、usage total tokens 550attribution processedCount 1、jobStatus completed、itemStatus completed、attributionType work。
- `local-ci` 构建兜底:`mvn -pl muse-module-ai/muse-module-ai-server,muse-module-member/muse-module-member-server,muse-server -am -DskipTests test-compile` 通过。
- 边界quota request worker 仍默认 disabled生产启用需显式配置 `muse.account.events.quota-request-worker.enabled=true`;本轮 New-API live 创建/刷新专用测试用户,未输出或落库任何凭据;未重跑 Studio/Admin 前端 e2eE6 将继续 admin 权限与 AI 配置接线。
E6 fresh 切片证据2026-06-27本轮实跑
- 功能链路Muse 管理端账号页新增 system 管理员权限 Tab可读取 system 管理员、角色、用户角色并提交角色分配/启停用system 后端在可信边界拒绝自禁用、自改角色。AI 配置页 Prompt 激活、质量评估启动、质量策略版本创建、system Agent 创建/版本发布/归档停用、Tool Grant 登记/调整均调用真实 admin API最近评估只展示本页真实提交返回不展示硬编码评分system Agent 归档后同步归档 active 槽位绑定。Market 管理端申诉 `restored` 分支经真实 PG IT 覆盖,恢复会消费治理预览、重新上架资产并写 restore governance action。
- `local-ci` 后端切片:`AdminUserServiceImplTest` 36 tests / 0 failures / 0 errors / 0 skipped`PermissionServiceTest` 25 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`
- `frontend-local` Admin 账号治理:`npx -y pnpm@10.33.0 --dir muse-admin test:unit -- --run apps/web-antd/src/views/muse/__tests__/governance-pages.test.ts` 触发根 Vitest50 test files / 345 tests passed。
- `frontend-local` Admin AI 配置:`npx -y pnpm@10.33.0 --dir muse-admin test:unit -- --run apps/web-antd/src/views/muse/ai/__tests__/index.test.ts` 触发根 Vitest50 test files / 347 tests passed`npx -y pnpm@10.33.0 --dir muse-admin --filter @vben/web-antd typecheck` 通过。
- `frontend/backend-local` Admin AI RC 后补写命令:`pnpm -F @vben/web-antd run typecheck` 通过;`vitest run --dom apps/web-antd/src/views/muse/ai/__tests__/index.test.ts apps/web-antd/src/api/muse/ai/__tests__/index.spec.ts` 2 files / 9 tests passed后端 `MuseAgentServiceTest`+`AdminMuseAgentControllerAnnotationTest` 31/0F/0E/0S`MuseToolGrantServiceTest`+`LocalSecurityToolGrantApprovalFacadeTest` 13/0F/0E/0S契约/覆盖门 `ContractFirstGateTest`+`P1rApiCoverageReportTest`+`P1rAiRouteOwnershipTest`+`P1rAiRealApiGateTest` 27/0F/0E/0S。
- `real-pg` market restore 切片:`P1rMarketAdminAppealCompletedApprovalIT` 7 tests / 0 failures / 0 errors / 0 skipped运行库为真实 PostgreSQL `_test``muse_p1r_market_admin_appeal_test`。断言 restored 分支 preview status=`consumed`、preview revision=2、asset listing/status=`listed`、governance action type=`restore`、command/event 幂等各 1 条、事件/动作快照包含 `impactPreviewId`
- `local-ci` 构建兜底:`mvn -pl muse-module-system/muse-module-system-server,muse-server -am -DskipTests test-compile` 通过。
- 边界account 业务账号 status/role/group 写契约仍不存在,账号页继续明确提示“不伪造未定义 account 写接口”system 角色菜单/数据范围仍沿用 Yudao 既有页面和权限模型;本轮未跑 Admin Playwright e2e质量策略回滚仍保持 preview-only不计为真写。
E7 fresh 切片证据2026-06-27本轮实跑
- 功能链路Content 动态字段预校验从 Meta active projection 读取字段定义/校验规则/废弃信息,执行 required、类型、enum、数值/文本范围、regex/pattern、deprecated、unknown field 校验,并返回 stale 标记、当前版本、dataRevision 和 write route。Admin MetaSchema 新建草稿在 schemaKey 不存在时创建默认 content/work/work 根对象治理状态机走草稿→校验→预览→发布→激活→v2 发布→回滚,真实写 command/audit/validation/preview/version 状态。
- `local-ci` 后端切片:`MetaProjectionQueryApiImplTest` 4 tests / 0 failures / 0 errors / 0 skipped`MetaSchemaServiceTest` 50 tests / 0 failures / 0 errors / 0 skipped`RealContentMetaFacadeTest` 8 tests / 0 failures / 0 errors / 0 skipped`ContentMetaProjectionServiceTest` 7 tests / 0 failures / 0 errors / 0 skipped`BUILD SUCCESS`
- `real-pg` Content/Meta 投影校验:`P1rContentMetaProjectionClusterCompletedApprovalIT` 4 tests / 0 failures / 0 errors / 0 skipped运行真实 PostgreSQL `_test` 库,走真实 `/app-api/muse/works/{workId}/dynamic-fields/validate`。断言无 schema 时 fail-closed绑定 active schema 后 regex/enum/range/deprecated/unknown field 错误命中routeSuggestions 指向 Content planning owner 命令,全程不写 Content fact。
- `real-pg` Admin Meta 生命周期:`P1rMetaAdminSchemaLifecycleCompletedApprovalIT` 2 tests / 0 failures / 0 errors / 0 skipped运行真实 PostgreSQL `_test` 库,走真实 `/admin-api/muse/governance/meta-schemas/**` + method security。断言新 schema 根对象 `domain=content/scope=work/targetType=work/status=draft`v1/v2 validation/preview 成功,发布不隐式激活,激活/回滚同步切 `active_version_id` 与 schema 根 `status=active`6 条写命令、4 条治理审计、2 条 validation、2 条 preview 真实落库。
- `local-ci` 构建兜底:`mvn -pl muse-module-meta/muse-module-meta-api,muse-module-meta/muse-module-meta-server,muse-module-content/muse-module-content-server,muse-server -am -DskipTests test-compile` 通过;变更范围 `git diff --check` 通过。
- 边界Meta production impact preview 仍要求 5 个 owner usage contributor all-real本轮 lifecycle IT 用 5 个 `VERIFIED_ZERO` 测试 contributor 只证明 Meta admin 状态机和 preview 服务可用,不等价于完成外部 owner 用量投影建模;未跑 Admin Playwright e2eserver IT 前必须先 `mvn install` 改过的 meta/content 模块,否则会拿旧 jar 产生 stale-jar 假红。
---
## 5. E1-E7 使用规则
每个 Epic 收口时必须列出:
| 字段 | 要求 |
|---|---|
| 功能链路 | 用一句话描述用户或后端闭环 |
| 验证层级 | `local-ci` / `real-pg` / `external-live` / `frontend-e2e` / `mock-only` / `skipped` |
| 命令 | 给出可复跑命令,隐去凭据 |
| 结果 | tests / failures / errors / skipped不能只写“通过” |
| 边界 | 明确哪些路径未验、哪些依赖后置 |
未满足上述信息的完成记录,只能标为“实现候选”或“待真验证”,不得写成 1.0.0 done。