diff --git a/docs/agent-specs/2026-06-22-handoff-P2-agent放宽-review.md b/docs/agent-specs/2026-06-22-handoff-P2-agent放宽-review.md index 6a82beb4..3d91f955 100644 --- a/docs/agent-specs/2026-06-22-handoff-P2-agent放宽-review.md +++ b/docs/agent-specs/2026-06-22-handoff-P2-agent放宽-review.md @@ -167,4 +167,14 @@ sequenceDiagram --- -> **下一步**:本评审确认 §九 三项拍板点(尤其 §九.1)后,出 **P2 执行版**(precheck DO 加列迁移 + ReqVO 契约 + 两处放宽精确逻辑 + consume 接入点 + 前端落地适配器 + 单测/e2e 验收),再实现 P2 纵切。 +## 十、拍板结论(2026-06-22) + +- **§九.1**:选 **(a) 独立 market 类型** → P2 走精确放宽。 +- **§九.2**:采用显式 `sourceType="market_agent"`(与 knowledge `market_kb` 对称)。 +- **§九.3**:bind 凭 `precheck.source_owner` 信任(与 knowledge P1 同构,token 用完即弃)。 +- **⚠️ 连带发现(反假绿)——资产物化维度全缺**:`requireVisibleActiveSourceAgent` 兑现时 `agentMapper.selectById(market-agent-id)` 要求 market agent 已物化进 `muse_agent`,但实证 **market→agent 物化路径不存在**(muse_agent 无 `source_market_asset_id` 字段 + 0 物化代码;market install 只落 license 投影不建实体,`MarketInstallServiceImpl:63`)。**且 knowledge 同样未接物化**(P1 e2e 靠 asset1→kb_id1 fixture 巧合绕过)。物化是 handoff 之外的独立维度,P1–P3 全缺。 +- **P2 范围拍板 = 方案 A(最小验证放宽红线,与 P1 同口径)**:`muse_agent` 加 `source_market_asset_id` + 支持 `agent_type='market'` + **seed 一个 market 类型 agent fixture** + 放宽 + verify/consume + 真后端 e2e(正路放宽接纳 + 负路伪造 token 拒)。**market install 自动物化 agent 列为独立后续主线**,执行版与 e2e 须诚实标注"agent 为预置 fixture、install 物化未接"。 + +--- + +> **下一步**:据 §十 拍板出 **P2 执行版**(muse_agent 加列迁移 + agent_type=market 支持 + market agent seed fixture + precheck DO 加 source_owner/handoff_hash 列 + ReqVO 契约 + 两处放宽精确逻辑 + consume 接入点 + 前端 agent 落地适配器 + 单测/e2e 验收),再实现 P2 纵切。 diff --git a/docs/mvp/进度总账.md b/docs/mvp/进度总账.md index 8049742a..692612ee 100644 --- a/docs/mvp/进度总账.md +++ b/docs/mvp/进度总账.md @@ -177,7 +177,7 @@ - ✅ **2026-06-22:A 类首切片——市场推荐位接入真后端 recommendations(commit cac3b88)**。A 类(后端已 P1r 验收、前端 0 消费):02F `GET /marketplace/recommendations` 后端就绪(curl code:0 + 真实推荐资产 + recommendationReason),但 studio 从不调用、推荐理由仅 mock 造、UI 未渲染(盘点 C3)。接入:`useMarketRecommendations` hook(返 MarketAssetCard[]、推荐失败不阻断主列表)+ MarketBrowse「为你推荐」区(渲染推荐资产 + recommendationReason、点击进详情)+ mock handler + vitest 推荐契约 + `market-recommendations.spec.ts` 真后端 e2e(进 /market 验推荐区渲染真实数据)。连带修 `live-read` market 断言加 `.first()`(推荐位与列表可同时渲染同名资产→strict mode)。验证:**全量 e2e 44→45/0**、vitest 79→80、tsc/eslint 绿。**A 类样板成型**(读端接线即得 + 自然 UI 落点 + 真后端 e2e),可复用到 02G New-API 摘要/余额快照(curl 均 code:0 就绪)、02F governance 等其余"后端就绪、前端 0 消费"缺口。 - ✅ **2026-06-22:A 类第二切片——个人中心 New-API 绑定摘要(commit 7408615)**。02G `GET /account/new-api-binding` 后端就绪(curl code:0、未绑定时 fail-closed 返 bindingStatus=unbound),studio 0 展示(盘点 02G ❌)。接入 `useAccountNewApiBinding` hook + openapi 导出 `NewApiBindingSummary` + PersonalCenter「New-API 绑定」区(bindingStatus 中文徽标 已绑定/未绑定/同步失败/同步中 + 上次同步时间)+ mock handler + vitest 契约 + `account-newapi-binding.spec.ts` 真后端 e2e。**全量 e2e 45→46/0、vitest 80→81、tsc/eslint 绿**。**A 类已交付 2 切片**(市场推荐位 + New-API 摘要),样板稳定可复制;剩余同类候选:02G 余额快照(curl 空列表但就绪)、02F governance-impact 消费者治理、admin MetaSchema 废弃回退(注:admin 无 playwright e2e、验证靠单测 + 真 admin-api)。 - ✅ **2026-06-22:A 类第三切片——资产详情页治理影响(commit ab83735)**。02F `GET /marketplace/assets/{id}/governance-impact` 后端就绪(curl code:0 + 真实 governanceResult:resultType/reason/操作限制 + affectedAuthorizations/suggestedActions),studio 详情页 0 展示(盘点 C14 消费者治理读端缺口)。接入 `useGovernanceImpact` hook + openapi 导出 `GovernanceImpactResult` + MarketAssetDetailPage「治理影响」区(结果类型 下架/召回/吊销/可申诉 + 操作限制 停止获取/安装/绑定/生成 + 建议动作)+ mock handler + vitest 契约 + `market-governance-impact.spec.ts` 真后端 e2e。修 spec 块注释内 `affected*` 后接 `/` 致 `*/` 意外闭合(tsc 不覆盖 e2e、playwright esbuild 才暴露)。**全量 e2e 46→47/0、vitest 81→82、tsc/eslint 绿**。**A 类已交付 3 切片**(推荐位 + New-API 摘要 + 治理影响):studio 侧"后端就绪、前端 0 消费"的高价值读端缺口基本摘完,剩余 02G 余额快照(空数据价值低)、admin 侧(无 playwright e2e 验证弱)。**A 类告一段落**。 -- ✅ **2026-06-22:handoff 跨空间统一接入 P0 基座 + P1 knowledge 端到端闭环(真后端 e2e 反假绿,4 commit)**。盘点①横切共性缺口"handoff 跨空间安全交接=架构级缺失"(五域仅来源侧只读预检、前端 0 消费 token、红线"不信任客户端 URL 参数"零落地)→按执行版分阶段。**P0 基座**:后端 market-api `MarketHandoffTokenApi`(verify 只读核验 + consume CAS 核销,进程内 Bean、复用 selectByTokenHash/effectiveStatus/updateLifecycleByExpectedStatus + cancel 同款 envelope 幂等;completed 此前无生产写入路径=绿地、出参脱敏不回 token)+ 前端 HandoffStore(Zustand,token 用完即弃)/通用 hooks/落地路由 `/handoff/land/:targetOwner`(红线:解析 ?token→replaceState 清 URL→存 store)。**P1 knowledge**:knowledge-server 依赖 market-api,createKnowledgeBindingPrecheck 的 market_kb 来源在 **precheck 阶段**(token 明文仅此持有、createBinding 的 BindReqVO 无 token——自审修正执行版原"createBinding 调 consume")调 verify+consume,替代"只存 hash 不验真"假安全;前端发起(MarketAssetDetailPage bind-precheck 就绪→createHandoff→跳)+ 落地组件(KnowledgeHandoffLanding 3 步:bind-precheck 拿后端可信 source→kbBindPrecheck 核销 token→createBinding 落库,source 全用后端返回不信客户端)。**真后端 e2e**(handoff-knowledge.spec,48080+真 PG):正路完整兑现闭环 + 负路伪造 token 被 verify 拒,2 passed + 二次幂等(用 work4 避 work1+kb1 installed binding 占 uk;global-setup #12 每轮清)。验证:market 编译+install+BcBoundaryArchTest、knowledge -am 编译+边界、前端 tsc/eslint+vitest 82→93、全量 e2e 47→48(handoff +2;knowledge-disable-restore 全量时序 flaky、单跑 2 passed、预存在共享 fixture 时序与本改动无关:handoff 不碰 KB id=1)。连带 drift 收口:MarketBindPrecheckResult.sourceVersion、CreateHandoffInput.authorizationSummaryId 对齐后端 Long。**剩 P2 agent(最高风险:放宽 agentType 校验单点)+ P3 content(asset_use 从零)。** +- ✅ **2026-06-22:handoff 跨空间统一接入 P0 基座 + P1 knowledge 端到端闭环(真后端 e2e 反假绿,4 commit)**。盘点①横切共性缺口"handoff 跨空间安全交接=架构级缺失"(五域仅来源侧只读预检、前端 0 消费 token、红线"不信任客户端 URL 参数"零落地)→按执行版分阶段。**P0 基座**:后端 market-api `MarketHandoffTokenApi`(verify 只读核验 + consume CAS 核销,进程内 Bean、复用 selectByTokenHash/effectiveStatus/updateLifecycleByExpectedStatus + cancel 同款 envelope 幂等;completed 此前无生产写入路径=绿地、出参脱敏不回 token)+ 前端 HandoffStore(Zustand,token 用完即弃)/通用 hooks/落地路由 `/handoff/land/:targetOwner`(红线:解析 ?token→replaceState 清 URL→存 store)。**P1 knowledge**:knowledge-server 依赖 market-api,createKnowledgeBindingPrecheck 的 market_kb 来源在 **precheck 阶段**(token 明文仅此持有、createBinding 的 BindReqVO 无 token——自审修正执行版原"createBinding 调 consume")调 verify+consume,替代"只存 hash 不验真"假安全;前端发起(MarketAssetDetailPage bind-precheck 就绪→createHandoff→跳)+ 落地组件(KnowledgeHandoffLanding 3 步:bind-precheck 拿后端可信 source→kbBindPrecheck 核销 token→createBinding 落库,source 全用后端返回不信客户端)。**真后端 e2e**(handoff-knowledge.spec,48080+真 PG):正路完整兑现闭环 + 负路伪造 token 被 verify 拒,2 passed + 二次幂等(用 work4 避 work1+kb1 installed binding 占 uk;global-setup #12 每轮清)。验证:market 编译+install+BcBoundaryArchTest、knowledge -am 编译+边界、前端 tsc/eslint+vitest 82→93、全量 e2e 47→48(handoff +2;knowledge-disable-restore 全量时序 flaky、单跑 2 passed、预存在共享 fixture 时序与本改动无关:handoff 不碰 KB id=1)。连带 drift 收口:MarketBindPrecheckResult.sourceVersion、CreateHandoffInput.authorizationSummaryId 对齐后端 Long。**剩 P2 agent(最高风险:放宽 agentType 校验单点)+ P3 content(asset_use 从零)。** ⚠️ **范围订正(2026-06-22 P2 调研连带发现,反假绿)**:本条"端到端闭环"准确表述 = **token 安全红线端到端 + 绑定落库**;handoff 另一维度"**market 资产物化**"(asset→目标 owner 可用实体、带 source_market_asset_id 溯源)**P1–P3 全缺**——knowledge `MuseKnowledgeBaseDO.sourceMarketAssetId` 字段在却**无人写入**、binding `kb_id=parseLong(sourceId)` 直用预存 kb id(`MuseKnowledgeBindingService:110`)、market install 不建 kb 只落 license 投影(`MarketInstallServiceImpl:63` 注释明示);agent 连该字段都无 + 0 物化代码。**P1 e2e 绿靠 fixture 巧合**(asset1→`kb_id=1` 恰命中预存 kb1)。红线真生效属实,但"market 资产真正变成作品可用 kb/agent"未接,列**独立后续主线**。P2 按用户决策取**最小验证口径(方案 A)**:加字段 + 支持 `agent_type='market'` + seed market agent fixture + 放宽 + verify/consume + e2e,验证放宽红线真生效;install 自动物化后续。 ### 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 绿**。 diff --git a/docs/项目功能与进度总览.md b/docs/项目功能与进度总览.md index f77738ae..66eef86a 100644 --- a/docs/项目功能与进度总览.md +++ b/docs/项目功能与进度总览.md @@ -152,7 +152,7 @@ |:---:|---|---|---| | ✅ 完成 | **AI 候选接受链已接通**:WorkspacePage 挂 AIPanel/CandidatePanel→真 `suggestion-merges`(EditorPage 为废弃演示页,故意不接) | content/studio | 2026-06-14 MVP#1;e2e 2/2 绿;「审」字段后端已补;真实生成依 New-API(scope 外) | | 🟡 部分 | **知识工作台**:忽略/recheck、实体关系 CRUD、发布可发布性预检均已接(2026-06-20);剩处理状态/失败恢复 UI | knowledge/studio | 仅前端未接 | -| 🟡 部分 | **市场端**:许可详情/收藏、handoff 来源侧预检、**handoff 令牌消费端 knowledge owner 端到端闭环(P1,真后端 e2e)**已接;剩发布工作流写端、handoff agent/content owner 兑现(P2/P3)、申诉 UI | market/studio | 仅前端未接 | +| 🟡 部分 | **市场端**:许可详情/收藏、handoff 来源侧预检、**handoff 令牌消费端 knowledge owner token 红线闭环(P1,真后端 e2e;⚠️ market 资产物化维度未接、列独立后续)**已接;剩发布工作流写端、handoff agent/content owner 兑现(P2/P3)、申诉 UI | market/studio | 仅前端未接 | | 🟡 部分 | **个人中心**:购买/授权/发布记录三件套已接(2026-06-20);剩安全事件确认入口/导出下载/New-API绑定/配额申请 | member/studio | 部分前端未接 + 部分 facade Unavailable | | 🔴 高 | **meta 影响预览 facade 真实化**:解 publish/activate/rollback/deprecate 运行期阻塞 + 建 facade-api 契约 | meta(+content/knowledge/ai) | 跨 BC 地基不存在(见下) | | 🟡 中 | **网关运行期转发验证**:Nacos/服务发现接线 + 首跑 | platform | 待服务发现配置 |