fix(p1r): align 2.0.0 S0 local gate counts
This commit is contained in:
parent
2e45191160
commit
13b305d4da
@ -23,6 +23,8 @@
|
||||
|
||||
**round-2 加固(2026-06-14,据 Opus 评审;2026-06-27 E0 续固)**:CI 触发分支 master→main(此前 CI 从不运行)、BC 门通用化 + 整改 knowledge 违例、loop 装机械牙、覆盖门去魔法数、文档诚实化、openapi-diff materialize 为独立 workflow。E0 将 Maven CI 移到仓库根 `.github/workflows/maven.yml`,并用 `run-p1r-verification.sh` + [真验证清单](1.0.0-真验证清单.md) 区分 local-ci / real-PG / external-live / mock-only / skipped。E0 fresh 证据:local 61/0F/0E/0S,根 CI 等价 `mvn -B package --file pom.xml` 3060/0F/0E/148S,real-PG 189/0F/0E/0S,external-live server 8/0F/0E/0S + module 4/0F/0E/1S(GraphRAG attribution 未配置跳过)。
|
||||
|
||||
**2.0.0 单人版改造 S0 门禁基线(2026-07-07)**:已坐实并修复 local 覆盖门基线红项。初跑 `bash muse-cloud/scripts/run-p1r-verification.sh local` 先暴露本机 Maven 绑定 JDK17 与沙箱写 `~/.m2` 的环境问题;显式 `JAVA_HOME=/Users/qingse/Library/Java/JavaVirtualMachines/corretto-21.0.7/Contents/Home` 后真跑坐实 5 个失败,均为跨域 gate 仍按旧 `completedOperations=241 / AI=47` 断言,而覆盖 JSON 已是 `242/242` 且 AI 为 48。新增 AI operation 为 `adminArchiveAgent`,已有 `MuseAgentServiceTest` 与 `AdminMuseAgentControllerAnnotationTest` 两个真实 `testFiles` 证据。修正 `P1rMarketRealApiGateTest`、`P1rKnowledgeRealApiGateTest`、`P1rEventsRealApiGateTest` 的 summary/AI 计数后,复跑 `run-p1r-verification.sh local` **61/0F/0E/0S, BUILD SUCCESS**。本步未改覆盖 JSON、OpenAPI、业务实现或数据库迁移;S1 Dify 部署仍未开始。
|
||||
|
||||
**E1 content 创作闭环切片(2026-06-27)**:已补 AI suggestion 采纳归档、前端“改后合并”入口、IndexedDB 草稿键对账、旧知识草稿失效、工作台知识/导入/导出/记录入口、Block 版本历史最小 API/UI。Content merge 写 Canonical 与来源归因后,必须由 AI owner 写 `accepted` 状态、accepted decision archive、AI command、business audit;AI owner 不可用时整笔 merge 回滚,避免 Canonical 已写但候选仍 pending。Content 正文变更后通过 Knowledge owner API 将关联 pending draft 标为 `conflicted/needs_recheck` 并写 Knowledge draft decision archive;通知失败不回滚 Canonical 主写,Knowledge confirm 端仍按来源状态 fail-closed。Studio `CandidatePanel` 支持编辑最终正文并按 `accept_as_is`/`modify_then_merge` 提交,IndexedDB 草稿键改为 `workId+blockId+revision` 防跨作品/版本污染。`saveBlock`/`mergeBlockSuggestion` 现在写 `muse_content_block_revision_snapshot`,工作台“历史”Tab 只读展示 Canonical revision 快照;导入可创建真实任务,导出支持范围/格式选择、任务查询与下载凭证消费,知识/记录入口跳转对应工作台。fresh 证据:后端局部单测 `ContentSourceServiceTest` 25/0F/0E、`ContentAppServiceTest` 19/0F/0E、`MuseKnowledgeDraftInvalidationServiceTest` 3/0F/0E、`AiSuggestionMergeProjectionFacadeTest` 7/0F/0E;契约/覆盖门 `ContractFirstGateTest` 4/0F/0E + `P1rApiCoverageReportTest` 8/0F/0E;real-PG `P1rContentCoreCompletedApprovalIT` 13/0F/0E/0S + `P1rContentMergeSuggestionIT` 5/0F/0E/0S + `P1rContentMergeGeneratedSuggestionIT` 1/0F/0E/0S;studio `tsc -b --force` 通过、lint 0 errors、Vitest 12/12,追加 `AIPanel.contract.test.tsx` + `sse.test.ts` 22/0F/0E;导出 UI 追加 `useWorks.test.tsx`+`ExportWorkModal.test.tsx` 11/0F/0E、目标 ESLint 0 errors。共享 PG 写入闸门批准后已补跑 MSW-off Playwright 真后端 `accept-suggestion.spec.ts` 2/0F/0E:正路真 New-API 生成 suggestionId=79、authz `rpe-local-*`、Block revision 160→161、AI owner accepted decision archive 非空;负路 stale revision 业务冲突。边界:`muse-studio/src/types/content.ts` 生成类型因 openapi-typescript 版本漂移未同步,hook 内暂维护 `BlockRevision` 最小类型;完整导入向导已在 RC 后补,见下方记录;真后端导出下载 e2e 已在 2026-06-28 补跑通过,FileApi 异常仍按后端合同 fail-closed。
|
||||
|
||||
**E2 ai 智能体生命周期与候选处置闭环(2026-06-27)**:已补用户自建 Agent update/archive、初始版本自动创建、版本列表/激活/归档非当前版本、作品槽位 unbind、Studio reject 调后端 AI owner 决策归档。Agent update 会创建下一 active version 并更新 `current_version_id`,archive Agent 同步归档仍 active 的槽位绑定;slot unbind 将绑定行 revision+1 且 `status=archived`,运行时回到默认能力;WorkspacePage “放弃修改”不再只清本地候选,而是真打 `POST /suggestions/{id}/reject` 写 `rejected` 与 decision archive。启动修红:最新单体启动时暴露 `muse.codegen.importEnable` 缺省,已在 `muse-server/src/main/resources/application.yaml` 补 `import-enable:false`,随后 48080 成功启动并 `GET /app-api/muse/agents` smoke 返回 `code=0`。fresh 证据:后端 AI targeted `MuseAgentServiceTest`+`MuseAgentSlotServiceTest`+Controller annotation 63/0F/0E;契约门 `ContractFirstGateTest` 4/0F/0E;studio `tsc -b --force` 通过、目标 ESLint 0 errors、Vitest 29/0F/0E;MSW-off Playwright 真后端 `agent-create.spec.ts`+`agent-slot-bind.spec.ts`+`accept-suggestion.spec.ts` 5/0F/0E:采纳真生成 suggestionId=80、Block revision 161→162、accepted decision archive 非空;拒绝真生成 suggestionId=81、`status=rejected`、decision archive 非空;Agent 生命周期 DB 核验 v1/v2 current 切换与 v2 archived;Slot unbind DB 核验 revision 2→3、status archived、响应 `sourceStatus=unbound`。边界:本轮未跑 studio 全量 e2e。
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -81,8 +81,8 @@ class P1rEventsRealApiGateTest {
|
||||
void should_keep_completed_approval_summary_at_approved_operation_boundary() throws IOException {
|
||||
JsonNode summary = readReport().path("summary");
|
||||
|
||||
assertEquals(241, summary.path("completedOperations").asInt(),
|
||||
"completedOperations 必须覆盖 AI 47 + Knowledge 60 + Events 1 + Meta 16 + Account 33 + Market 32 + Content 52");
|
||||
assertEquals(242, summary.path("completedOperations").asInt(),
|
||||
"completedOperations 必须覆盖 AI 48 + Knowledge 60 + Events 1 + Meta 16 + Account 33 + Market 32 + Content 52");
|
||||
assertEquals(0, summary.path("needsVerificationOperations").asInt(),
|
||||
"用户批准后 needsVerificationOperations 必须清零");
|
||||
assertEquals(0, summary.path("incompleteOperations").asInt(),
|
||||
|
||||
@ -160,13 +160,13 @@ class P1rKnowledgeRealApiGateTest {
|
||||
void should_count_ai_and_knowledge_operations_as_completed() throws IOException {
|
||||
JsonNode report = readReport();
|
||||
|
||||
assertEquals(241, report.path("summary").path("completedOperations").asInt(),
|
||||
"completedOperations 必须覆盖 AI 47 + Knowledge 60 + Events 1 + Meta 16 + Account 33 + Market 32 + Content 52");
|
||||
assertEquals(242, report.path("summary").path("completedOperations").asInt(),
|
||||
"completedOperations 必须覆盖 AI 48 + Knowledge 60 + Events 1 + Meta 16 + Account 33 + Market 32 + Content 52");
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_keep_existing_dedicated_domains_unchanged() throws IOException {
|
||||
assertDomainStatusCount("ai", 47, "completed");
|
||||
assertDomainStatusCount("ai", 48, "completed");
|
||||
assertContentStatusCount(52, 0);
|
||||
assertMetaStatusCount(16, 0);
|
||||
assertAccountStatusCount(33, 0);
|
||||
|
||||
@ -125,13 +125,13 @@ class P1rMarketRealApiGateTest {
|
||||
void should_keep_completion_summary_owned_by_approved_scopes_only() throws IOException {
|
||||
JsonNode report = readReport();
|
||||
|
||||
assertEquals(241, report.path("summary").path("completedOperations").asInt(),
|
||||
"completedOperations 必须覆盖 AI 47 + Knowledge 60 + Events 1 + Meta 16 + Account 33 + Market 32 + Content 52");
|
||||
assertEquals(242, report.path("summary").path("completedOperations").asInt(),
|
||||
"completedOperations 必须覆盖 AI 48 + Knowledge 60 + Events 1 + Meta 16 + Account 33 + Market 32 + Content 52");
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_keep_existing_domain_statuses_unchanged() throws IOException {
|
||||
assertDomainStatusCount("ai", 47, "completed");
|
||||
assertDomainStatusCount("ai", 48, "completed");
|
||||
assertDomainStatusCount("knowledge", 60, "completed");
|
||||
assertContentStatusCount(52, 0);
|
||||
assertMetaStatusCount(16, 0);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user