oh-my-muse/design-docs/后端-05-统一API契约-v1.md
lili cb57b88866 docs(sse): 前端/后端 SSE 契约反向对齐 sse.ts 真实实现
studio src/lib/sse.ts 已是真实实现(connectAIStream/connectEventStream 双函数 +
fetch/ReadableStream + 按 event: 行分发),但三处正式文档仍停留在虚构契约,故反向对齐(反假绿):
- 前端-01 v6→v7:AI 流改两步(POST /ai/tasks 创建→GET /ai/tasks/{taskId}/stream 建流);
  事件流路径 /events/stream→/events;明确按 SSE event: 行分发。
- 后端-05 v8→v9:补 GET /ai/tasks/{taskId}/stream 端点 + SSE 事件契约表
  (chunk/quality_check/done/error 及各 payload);记 done 的 taskId/suggestionId
  后端 Long 序列化为 JSON 数字、与候选 uuid 字符串契约不一致(待后端统一,前端已在解析边界 String 归一)。
- dev-baseline/muse-studio/CLAUDE.md:SSE 章节由虚构 useAIStream/useEventStream hook
  改写为真实双函数 + 线格式 + 约束(AI 流不重连、事件流指数退避 1/2/5/10s、AbortController 关闭、无凭证 fail-closed)。
- sse.ts:onDone 注释补 WHY string(Long→JSON number→String 归一)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 02:55:24 -07:00

56 KiB
Raw Blame History

后端-05统一 API(接口) 契约-v1

  • 版本v9
  • 更新日期2026-06-14
  • 目标读者:前端 / 后端 / 架构 / 测试
  • 阅读时间35-55 分钟
  • 边界说明:本文件只定义 Muse 在 Yudao Cloud fork 上的 API 分组、资源语义、关键命令、错误模型与异步交互。底层表结构看 后端-04,状态机看 架构-04,关键流程看 后端-03

1. 总体原则

阶段 7 API 契约改为两类入口:

入口 调用方 语义
/admin-api/** muse-admin/ 管理后台接口
/app-api/** muse-studio/ 普通用户端接口

Yudao 原生 system/infra/member/pay/bpm/report/mp 接口按 Yudao 约定保留,本文件不重复定义其全部内置接口。本文只定义 Muse 新增或二开的业务接口。

核心约束:

  • 管理员接口不能替用户确认正文、知识草稿、规划候选或 AI 候选。
  • 用户端接口不能修改系统 Prompt、系统 Agent、MetaSchema、质量策略或市场治理结果。
  • API 分 admin/app不代表领域模型分 admin/app。
  • 前端隐藏入口不是安全边界;后端必须强制鉴权、业务 owner、来源状态和状态机前置条件。
  • 市场安装、绑定、购买或授权接口只能产生市场记录、来源侧授权摘要、handoff token 和跳转审计;目标 owner precheck/session 必须由目标 owner 自己生成和消费Market 不能直接写作品正文、Local KB 或正式规划。
  • Yudao 原生接口只通过引用和集成点使用;除 Muse 二开接口外,不在本文件复制 system、infra、pay、bpm、report、mp 的完整 API。

Muse API 分组与 owner

分组 入口 owner module 说明
Governance /admin-api/muse/governance/** Admin/Governance 逻辑 owner物理表按对象落到 content / aisystem 只做权限 MetaSchema、保护节点、系统功能链路、影响预览
Content /admin-api/muse/content/**/app-api/muse/works/** yudao-module-content 作品、章节、Block、导入导出、正文来源归因
Knowledge /admin-api/muse/knowledge/**/app-api/muse/knowledge-*/** yudao-module-knowledge 全局/用户/局域知识库、草稿、绑定、投影
AI / Agent /admin-api/muse/ai/**/app-api/muse/ai/**/app-api/muse/agents/** yudao-module-ai 二开 Prompt、Agent、任务、候选、质量门控、评估
Market /admin-api/muse/market/**/app-api/muse/marketplace/** yudao-module-market 市场资产、授权、安装、handoff、发布、治理
Account /admin-api/muse/account/**/app-api/muse/account/**/app-api/muse/me yudao-module-member已决策member 模块实现 account API 路径) 权益、配额、用量、授权/购买/发布摘要
Jobs / Events /admin-api/muse/jobs/**/app-api/muse/jobs/**/admin-api/muse/source-events/** 各 owner + outbox 异步任务状态、来源事件传播和重试入口

2. 通用约定

2.1 响应格式

API 响应遵循 Yudao 风格的统一响应壳。产品语义字段可以在 data 内表达。

{
  "code": 0,
  "data": {},
  "msg": "success"
}

分页响应使用 Yudao PageResult 或等价结构:

{
  "code": 0,
  "data": {
    "list": [],
    "total": 0
  },
  "msg": "success"
}

错误响应必须包含可稳定识别的业务错误码。HTTP 状态可以按 Yudao 网关和全局异常处理约定处理,但前端不得只依赖 HTTP status 判断业务状态。

2.2 ID 契约

  • 前端 TypeScript 统一把业务 ID 当 string 处理,避免 Long 精度、后续迁移和跨模块差异。
  • 后端物理主键可遵循 Yudao 常规 Long id;需要公开稳定业务 ID 时,可以补 bizNo/publicId
  • API 不承诺暴露数据库自增主键语义。
  • 同一接口内 ID 类型必须稳定,不能混用数字和字符串。

2.3 认证权限

  • 认证、会话、菜单、角色和权限基础能力复用 yudao-module-system
  • /admin-api/** 需要后台权限点。
  • /app-api/** 需要登录身份和业务资源访问权。
  • 系统任务或内部回调必须使用服务身份,不得复用普通用户 token。

2.4 异步任务

需要外部 AI、索引、导出、导入、评估、来源传播的操作默认异步。

命令响应至少返回:

{
  "jobId": "string",
  "status": "queued",
  "pollUrl": "/app-api/muse/jobs/{jobId}"
}

例外Accept Suggestion 的正文写入必须在主事务内完成,响应返回 Block 新 revision 和候选归档结果;重新提取只作为 followup task 返回。

2.5 幂等

高风险命令必须带 commandId 或等价幂等键:

  • Accept / Reject Suggestion。
  • Knowledge Draft 确认/忽略。
  • Planning 保存、候选确认、候选丢弃。
  • 用户知识库资料删除、重建索引、发布提交和知识绑定。
  • Agent Slot Binding。
  • 市场安装、绑定、购买、发布提交。
  • New-API 绑定、额度请求、调用归属和配额调整。
  • 导出创建。
  • 来源重验。
  • 管理员激活、回滚、治理处理。

幂等规则:

  • 同一 actor、同一资源、同一动作、同一 commandId、同一请求语义,重复提交必须返回第一次结果或当前可恢复状态。
  • 同一 commandId 但请求语义不同,返回 IDEMPOTENCY_CONFLICT
  • 预检、handoff 和下载凭证这类一次性资源必须区分“重复查询结果”和“重复消费写入”。

2.6 权限和审计

入口 必须校验 审计要求
/admin-api/** 后台登录、菜单/操作权限、数据范围、分权复核、高危动作理由 操作日志;高危治理进入业务审计
/app-api/** 登录身份、资源 owner、作品访问权、知识库授权、市场许可、来源状态 用户决策、正文写入、知识确认、导出、授权消费进入业务审计
系统任务 / 内部回调 服务身份、任务 owner、幂等键、回调签名或内部通道 任务日志、失败原因、重试组和补偿记录

管理员可见摘要不等于可见私有正文。需要查看用户私有内容时,必须另有合规访问接口、最小字段、原因、时效、分权和审计;不得用通用内容列表绕过。

2.7 API 版本策略

API 版本通过 HTTP Header 传递,路由路径不变:

项目 说明
Header X-API-Version: 1(当前版本为 1
默认行为 未传 header 时使用最新稳定版本
版本影响范围 响应结构和字段语义;不影响路由路径和认证方式
Deprecation Policy 旧版本至少保留 6 个月;期间响应头返回 Deprecation: trueSunset: <date> 提示迁移
到期行为 到期后返回 API_VERSION_DEPRECATED 错误码HTTP 410 Gone
版本变更触发条件 响应字段删除、字段语义不兼容变更、枚举值语义变化
非破坏性变更 新增可选字段、新增枚举值、新增接口不触发版本升级

客户端集成要求:

  • 前端 SDK 和 API 客户端必须显式传递 X-API-Version header。
  • 后端网关层解析 header 并注入请求上下文,各模块 controller 按版本返回对应响应结构。
  • 版本不匹配或已废弃时,响应 body 必须包含 currentVersionsupportedVersionsmigrationGuide 字段。

3. Admin APIs

3.1 治理和元结构

方法 路径 说明
GET /admin-api/muse/governance/meta-schemas MetaSchema 列表和版本摘要
GET /admin-api/muse/governance/meta-schemas/{schemaKey} Schema 详情、当前 active 版本、灰度版本、字段继承和影响摘要
GET /admin-api/muse/governance/meta-schemas/{schemaKey}/versions/{version} 指定版本详情、字段、校验规则、可见性策略和发布记录
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/drafts 保存 MetaSchema 草稿,返回 draftVersion 和校验摘要
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/drafts/{draftVersion}/validate 校验字段类型、必填、枚举、引用、兼容性和保护节点边界
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/drafts/{draftVersion}/impact-preview 影响预览返回作品、规划、知识投影、AI 上下文和导出影响
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/drafts/{draftVersion}/publish 发布版本,必须带 commandId、理由、校验结果和影响预览引用
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/versions/{version}/activate 激活 MetaSchema 版本,支持全量或灰度范围
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/versions/{version}/rollback 回滚到指定已发布版本,触发投影失效或重建任务
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/versions/{version}/deprecate 废弃版本或字段,必须给出替代字段、保留期和迁移提示
POST /admin-api/muse/governance/meta-schemas/{schemaKey}/versions/{version}/gray-rules 设置或调整灰度规则,返回灰度范围和回滚入口
GET /admin-api/muse/governance/protection-nodes 保护节点注册表、权限点、不可替换原因和审计摘要
GET /admin-api/muse/governance/protection-nodes/{nodeKey} 保护节点详情、所属链路、Shadow -> Canonical 边界和可观测指标
GET /admin-api/muse/governance/function-chains 系统功能链路和开放槽位
POST /admin-api/muse/governance/function-chains/{chainKey}/impact-preview 发布前影响预览
POST /admin-api/muse/governance/function-chains/{chainKey}/versions/{version}/activate 激活功能链路版本

治理接口是管理后台 surface也是 MetaSchema、系统链路和保护节点的逻辑 owner。MetaSchema 物理表可以落在 content,保护节点、系统功能链路和质量策略物理表可以落在 ai,但写入必须经 Governance/Admin facade、影响预览、版本发布和审计Content 或 AI 的 app/admin 业务接口不能绕过治理 facade 修改结构或保护节点。这些接口不直接写用户作品事实。

MetaSchema 管理命令必须带 commandId、操作者、权限点、变更理由、expectedVersion、校验结果引用和影响预览引用。发布、激活、回滚、废弃和灰度调整都必须写操作日志和业务审计;失败时返回可恢复的 currentVersionvalidationErrorsaffectedProjectionCountnextActions

MetaField 可见性字段至少包含:

字段 语义
uiVisible 是否进入用户可见投影
aiContext 是否允许进入 AI 上下文组装
userEditable 用户端是否允许保存该动态字段
userSearchable 是否允许用户搜索或筛选
exportable 是否可被导出预检纳入

uiVisible=false 不代表不能进入 AI 上下文;aiContext=true 不代表用户可见;exportable=true 仍必须受 owner、授权、来源状态和导出许可约束。字段废弃不能删除历史数据只能让新保存、投影、检索和导出按 FIELD_DEPRECATED 或迁移提示处理。

保护节点 API 必须显式返回权限要求、审计要求、不可替换原因和 Shadow -> Canonical 责任边界。管理员只能治理系统链路和开放槽位,不能把输入输出合规、拆分切块、入 RAG、语义安全围栏、静态检查、质量门控等保护节点降级成普通用户可替换槽位。

3.2 内容管理

方法 路径 说明
GET /admin-api/muse/content/works 查询作品列表和治理摘要
GET /admin-api/muse/content/works/{workId} 查看作品元信息、章节摘要、异常摘要
GET /admin-api/muse/content/works/{workId}/chapters 查看章节列表
GET /admin-api/muse/content/import-tasks 查询导入任务
GET /admin-api/muse/content/export-tasks 查询导出任务
POST /admin-api/muse/content/works/{workId}/risk-actions 异常内容治理动作

管理员内容接口默认不返回用户私有正文全文。确需查看必须另有合规访问设计、审计和最小化字段。

3.3 知识管理

方法 路径 说明
GET /admin-api/muse/knowledge/global-kbs 全局知识库列表
POST /admin-api/muse/knowledge/global-kbs 创建全局知识库
GET /admin-api/muse/knowledge/global-kbs/{kbId} 全局知识库详情、当前版本、授权策略、来源状态和处理摘要
PATCH /admin-api/muse/knowledge/global-kbs/{kbId} 更新名称、说明、分类、可见范围和停用原因
GET /admin-api/muse/knowledge/global-kbs/{kbId}/documents 资料列表、处理状态、版本和来源摘要
POST /admin-api/muse/knowledge/global-kbs/{kbId}/documents 上传或登记资料,返回 documentId 和处理任务
GET /admin-api/muse/knowledge/global-kbs/{kbId}/documents/{documentId} 资料详情、版本、解析状态和索引状态
POST /admin-api/muse/knowledge/global-kbs/{kbId}/documents/{documentId}/versions 新增资料版本,触发处理任务
DELETE /admin-api/muse/knowledge/global-kbs/{kbId}/documents/{documentId} 停用资料,触发来源事件和索引刷新
GET /admin-api/muse/knowledge/global-kbs/{kbId}/versions 知识库版本列表和发布摘要
POST /admin-api/muse/knowledge/global-kbs/{kbId}/versions/{version}/activate 激活知识库版本
GET /admin-api/muse/knowledge/global-kbs/{kbId}/access-policies 授权策略列表和 active 摘要
POST /admin-api/muse/knowledge/global-kbs/{kbId}/access-policies/drafts 保存授权策略草稿
POST /admin-api/muse/knowledge/global-kbs/{kbId}/access-policies/drafts/{draftId}/publish 发布授权策略,必须带 commandId 和影响预览
POST /admin-api/muse/knowledge/global-kbs/{kbId}/enable 启用全局知识库
POST /admin-api/muse/knowledge/global-kbs/{kbId}/disable 停用全局知识库,触发来源事件
POST /admin-api/muse/knowledge/global-kbs/{kbId}/impact-preview 影响预览,返回授权、绑定、检索、导出和运行任务影响
POST /admin-api/muse/knowledge/global-kbs/{kbId}/reindex 重建索引,返回处理任务
GET /admin-api/muse/knowledge/global-kbs/{kbId}/processing-tasks 资料处理、索引和投影任务状态
POST /admin-api/muse/knowledge/global-kbs/{kbId}/source-events 触发来源事件,传播 SourceEventType、SourceStatus、SourceActionPolicy 和原因归因
GET /admin-api/muse/knowledge/source-bindings 查询来源绑定和状态
GET /admin-api/muse/knowledge/drafts 查询知识草稿治理摘要
GET /admin-api/muse/knowledge/projection-tasks 查询知识投影和索引任务

管理员可治理来源、全局知识库和异常草稿,但不替普通用户确认单作品 Local KB。

全局知识库启停、版本激活、资料停用、授权策略发布和来源事件触发都必须带 commandId、操作者、原因、影响预览引用和审计字段。授权策略缺 active 版本时,全局知识库不得展示、检索、进入 AI 上下文或参与导出。

3.4 AI 管理

方法 路径 说明
GET /admin-api/muse/ai/prompts Prompt 列表
POST /admin-api/muse/ai/prompts/{promptKey}/versions 新建 Prompt 版本
POST /admin-api/muse/ai/prompts/{promptKey}/versions/{version}/activate 激活 Prompt 版本
GET /admin-api/muse/ai/agents Agent 列表
POST /admin-api/muse/ai/agents 创建系统 Agent
POST /admin-api/muse/ai/agents/{agentId}/versions 新建 Agent 版本
GET /admin-api/muse/ai/tool-grants Tool Grant 列表
POST /admin-api/muse/ai/tool-grants 创建或调整工具授权
GET /admin-api/muse/ai/tasks AI 任务列表
GET /admin-api/muse/ai/quality-policies 质量策略列表
POST /admin-api/muse/ai/quality-policies/{policyKey}/versions 新建质量策略版本
POST /admin-api/muse/ai/evaluation-runs 启动离线评估
GET /admin-api/muse/ai/evaluation-runs/{runId} 查询离线评估运行

AI 管理接口不得返回 New-API token 明文、完整 Prompt/Response、私有正文全文、外部知识全文、New-API provider authority、供应商路由、供应商密钥、底层成本策略或网关调用权威日志。管理员只能配置 Muse 侧 Prompt、Agent 编排、质量策略、工具授权和评测运行New-API 网关用户、额度请求、余额快照和调用归属只通过账户/集成接口暴露摘要。

Tool Grant 写入必须经 Governance / Security facade 校验审批、用途、外发策略、预算、来源和审计要求AI 管理接口只能展示或提交待审授权草稿,不能让 yudao-module-ai、Prompt、模型输出或用户智能体自授工具、上下文、外发和预算权限。运行时权限以 Runtime Permission Envelope 为准,前端传入的权限声明只作请求意图。

3.5 市场管理

方法 路径 说明
GET /admin-api/muse/market/assets 市场资产列表
GET /admin-api/muse/market/assets/{assetId} 市场资产详情、版本、授权、安装、治理和来源摘要
GET /admin-api/muse/market/publish-requests 发布申请列表
POST /admin-api/muse/market/publish-requests/{requestId}/approve 审核通过
POST /admin-api/muse/market/publish-requests/{requestId}/reject 审核拒绝
POST /admin-api/muse/market/assets/{assetId}/governance-impact 治理影响预览返回购买、安装、绑定、handoff、导出和个人中心影响
POST /admin-api/muse/market/assets/{assetId}/delist 下架
POST /admin-api/muse/market/assets/{assetId}/recall 召回
GET /admin-api/muse/market/appeals 申诉列表
GET /admin-api/muse/market/appeals/{appealId} 申诉详情、补充材料和处理审计
POST /admin-api/muse/market/appeals/{appealId}/resolve 处理申诉

召回、下架、blocked 必须触发 Source Status Event。

3.6 账户管理

方法 路径 说明
GET /admin-api/muse/account/users 用户账户摘要
GET /admin-api/muse/account/users/{userId}/entitlements 权益和配额
POST /admin-api/muse/account/users/{userId}/quota-adjustments 调整配额
GET /admin-api/muse/account/users/{userId}/quota-adjustments 配额调整 ledger展示调整来源、幂等键、前后快照和审计状态
GET /admin-api/muse/account/new-api-bindings 网关用户绑定状态列表
POST /admin-api/muse/account/users/{userId}/new-api-binding 创建或刷新 New-API 网关用户绑定
POST /admin-api/muse/account/users/{userId}/quota-requests 向 New-API 发起额度配置请求,返回 requestId 和 correlationId
GET /admin-api/muse/account/users/{userId}/balance-snapshots New-API 余额和权益快照摘要
POST /admin-api/muse/account/call-attribution-jobs 创建调用归属 job绑定用户、任务、作品、智能体、知识来源或市场授权
GET /admin-api/muse/account/call-attribution-jobs/{jobId} 查询调用归属状态、失败原因和补偿建议
GET /admin-api/muse/account/integration-calls/by-correlation/{correlationId} 按 correlationId 查询外部调用去重、重试组和归属状态
GET /admin-api/muse/account/usage-records 用量摘要
GET /admin-api/muse/account/purchase-records 购买记录摘要

支付底层交易、退款和充值能力优先复用 yudao-module-pay

Quota adjustment 是账户侧审计语义:每次人工调整、套餐变更、市场补偿、导出扣减回滚或 New-API 配置请求回填都必须记录 commandIdcorrelationId、调整原因、前后权益快照、操作者、审批或复核信息和幂等状态。权益审计日志不是 New-API 成本账本 authority也不能被 AI 管理接口用来推断供应商路由或底层成本。

Pay callback、refund、套餐撤销和市场补偿必须通过 account entitlement 可变表 + 审计日志幂等传播:以支付订单、退款单、市场授权或调额请求作为 sourceOwner/sourceId,以回调或补偿事件作为 idempotencyKey。重复回调返回同一处理结果;退款和撤销使用反向变更更新可变表并写审计日志。

3.7 任务、来源事件和审计

方法 路径 说明
GET /admin-api/muse/jobs 查询 Muse 异步任务
GET /admin-api/muse/jobs/{jobId} 查看任务详情、失败原因和重试组
POST /admin-api/muse/jobs/{jobId}/retry 有权限重试可重试任务
POST /admin-api/muse/jobs/{jobId}/cancel 取消可取消任务
GET /admin-api/muse/source-events 查询来源状态事件和影响范围
GET /admin-api/muse/source-events/{eventId} 来源事件详情
POST /admin-api/muse/source-events/{eventId}/retry 重试来源传播
GET /admin-api/muse/audit/business-events 查询业务审计摘要

任务治理不能绕过 owner 边界。重试来源传播只能让受影响对象进入重验、禁用、失效或摘要刷新,不能改写已确认 Canonical。

4. App APIs

4.1 当前用户和入口

方法 路径 说明
GET /app-api/muse/me 当前用户、权益摘要、默认入口、可见产品空间

/app-api/muse/me 不返回系统权限表、后台菜单、New-API token、Prompt secret 或私有审计字段。

4.2 通用任务和来源状态

方法 路径 说明
GET /app-api/muse/jobs/{jobId} 查询当前用户可见任务
POST /app-api/muse/jobs/{jobId}/cancel 取消当前用户可取消任务
POST /app-api/muse/source-status/query 按上下文查询来源对当前用途、目标 owner 和目标对象的可用状态
POST /app-api/muse/source-status/recheck 按上下文发起来源重验

用户端只能查看自己有权访问的任务和来源摘要。来源重验是任务,不直接恢复绑定、确认或导出许可。

Source Status 请求必须带业务上下文,不能只用 sourceType + sourceId 做泛查询:

字段 要求
sourceType / sourceId 来源对象
purpose bind / generate / export / publish / confirm / install / handoff 等用途
targetOwner content / knowledge / ai / market / account
targetId 目标作品、知识库、槽位、任务、发布申请或导出任务
sourceVersion 调用方当前持有的来源版本
authorizationSnapshotId 调用方当前持有的授权快照

Source Status 响应必须返回 sourceStatusactionPolicyblockedReasonsneedsRecheckReasonsneedsRecheckReasons 是 ActionPolicy 层面的补充信息,说明为何 actionPolicy=needs_recheck不是 SourceStatus 枚举值)、reasonAttributionssourceEventsnextActionscurrentSourceVersioncurrentAuthorizationSnapshotId 和可选 jobIdsourceStatus 使用 SourceStatusactivestalerevokedrecalleddelistedblockedowner_missingunauthorizedactionPolicy 使用 SourceActionPolicyallowedread_onlyblockedneeds_recheck。API 不能只返回一个 blocked=true,必须保留 revoked / recalled / delisted / unauthorized / processing_failed 等原因和归因;read_only 只允许历史查看或授权记录展示,不允许写入、绑定、生成、接受候选或受限导出;needs_recheck 不等于允许继续写入,目标 owner 必须在自己的命令接口重新校验。

4.3 作品和正文

方法 路径 说明
GET /app-api/muse/works 我的作品列表
POST /app-api/muse/works 新建作品
GET /app-api/muse/works/{workId} 作品详情
PATCH /app-api/muse/works/{workId} 修改作品基础信息
GET /app-api/muse/works/{workId}/chapters 章节列表
POST /app-api/muse/works/{workId}/chapters 新建章节
GET /app-api/muse/chapters/{chapterId}/blocks Block 列表
POST /app-api/muse/chapters/{chapterId}/blocks 新建 Block
PUT /app-api/muse/blocks/{blockId} 保存 Block必须带 expectedRevision
GET /app-api/muse/blocks/{blockId}/source-attribution 查看当前 Block revision 来源归因

Block 保存(PUT /blocks/{blockId})响应除返回新 revision 外,可包含 followupTasks 字段:

字段 类型 说明
revision int 保存成功后的新 revision
wordCount int 当前字数
followupTasks array 可选,保存后触发的异步任务摘要列表,例如知识提取任务

followupTasks 数组元素结构:

字段 类型 说明
taskType enum knowledge_extraction / source_recheck / projection_refresh
jobId string 异步任务 ID可用于轮询
status enum queued / skipped
reason string 若 skipped说明跳过原因例如无变更、策略未启用

前端可基于 followupTasks 展示知识提取进度提示或刷新知识草稿列表。followupTasks 为空或不返回时表示无后续异步任务。

| GET | /app-api/muse/works/{workId}/meta-projections | 查询作品维度用户可见 MetaSchema 投影 | | GET | /app-api/muse/works/{workId}/meta-projections/{projectionKey} | 查询指定投影结构、字段数据和版本 | | POST | /app-api/muse/works/{workId}/dynamic-fields/validate | 校验动态字段数据,不写入 |

作品维度可见投影不是事实源,只是 MetaSchema、用户权限、来源状态和目标对象版本计算后的 read model。投影响应至少返回

字段 语义
schemaVersion 本次投影使用的 MetaSchema active 或灰度版本
projectionVersion 可见投影版本,用于判断前端缓存是否过期
dataRevision 目标对象动态字段数据 revision
sourceSnapshot 来源对象、来源版本、授权快照和来源状态摘要
fields 仅包含当前用户可见、可编辑、可搜索或可导出的字段策略,并标注 writeOwnerownerCommand

动态字段没有跨 owner 的通用写接口。/dynamic-fields/validate 只做校验和路由建议,不写入任何 Canonical fact正式写入必须回到目标 owner API例如规划写 PUT /works/{workId}/planning/{sectionKey},正文写 PUT /blocks/{blockId},知识写 Knowledge Draft / Local KB 命令Agent 写 Agent 配置命令。Owner 命令必须校验 schemaVersionprojectionVersionexpectedDataRevision、字段 allowlist、来源状态和目标 owner 权限。Schema 过期返回 SCHEMA_STALE;字段已废弃返回 FIELD_DEPRECATED;投影过期返回 PROJECTION_STALE;字段试图写 Canonical fact 但没有 owner 命令时返回 FORBIDDENFEATURE_DISABLED

各 owner 命令版本校验要求:

Owner 命令 expectedSchemaVersion expectedProjectionVersion expectedDataRevision 说明
PUT /blocks/{blockId} 可选(正文保存不依赖动态字段 Schema 不要求 必须(即 expectedRevision 正文保存以 Block revision 为乐观锁
PUT /works/{workId}/planning/{sectionKey} 必须 必须 必须 规划保存必须确保 Schema 和投影未过期
POST /knowledge-drafts/{draftId}/confirm 可选 不要求 必须(即 draft version 知识确认以 draft 状态和来源为准
POST /works/{workId}/agent-slots/{slotKey}/bind 不要求 不要求 必须(即 expectedSlotRevision 槽位绑定以 slot revision 为乐观锁
PATCH /works/{workId} 必须(若修改动态字段) 必须(若修改动态字段) 必须 作品基础信息修改涉及动态字段时校验
POST /agents/{agentId}/versions 不要求 不要求 不要求 Agent 版本创建不涉及动态字段

规则:

  • 涉及 MetaSchema 管控的动态字段写入时,expectedSchemaVersionexpectedProjectionVersion 必须校验;不匹配时分别返回 SCHEMA_STALEPROJECTION_STALE
  • 所有写入命令必须校验目标对象的 expectedDataRevision(或等价乐观锁字段);不匹配时返回 REVISION_CONFLICTDATA_REVISION_CONFLICT
  • 不涉及动态字段的纯正文或纯配置命令可以不要求 expectedSchemaVersion,但必须保留 expectedRevision 乐观锁。

4.4 作品规划

作品规划台面向作品设定、章节大纲、世界设定、角色关系、情节节拍和文风检查。规划正式数据由用户确认后进入 content ownerAI 只能产生 Planning Candidate不直接写正式规划。

方法 路径 说明
GET /app-api/muse/works/{workId}/planning 查询当前作品可见规划结构、已确认规划数据、revision 和来源摘要
PUT /app-api/muse/works/{workId}/planning/{sectionKey} 保存规划项,必须带 commandId 和 expectedRevision
POST /app-api/muse/works/{workId}/planning/candidates 创建规划候选任务,支持生成、补全、整理和多组选项
GET /app-api/muse/works/{workId}/planning/candidates 查询待确认、已确认和已丢弃规划候选
GET /app-api/muse/works/{workId}/planning/candidates/{candidateId} 查询候选详情、来源、质量结果和 diff
POST /app-api/muse/works/{workId}/planning/candidates/{candidateId}/confirm 确认候选进入正式规划,必须带 commandId 和 expectedRevision
POST /app-api/muse/works/{workId}/planning/candidates/{candidateId}/discard 丢弃候选,必须带 commandId 和原因
POST /app-api/muse/works/{workId}/planning/style-checks 创建文风检查任务,返回 jobId
GET /app-api/muse/works/{workId}/planning/style-checks/{jobId} 查询文风检查结果、风险标记和建议入口

规划保存、候选确认和候选丢弃请求必须包含:

字段 要求
commandId 幂等键
expectedRevision 目标规划 section 或候选 revision
sourceSnapshot 输入正文、知识、市场资产或全局知识的来源快照摘要
authorizationSnapshotId 生成或确认时使用的授权快照
sourceVersion 调用方持有的来源版本
auditReason 用户确认、丢弃、覆盖或重新生成原因

Planning Candidate 是 Shadow 对象;确认时目标 owner 必须重验 work 权限、候选状态、来源状态、授权快照、质量结果和目标 revision。确认成功只写正式规划项和业务审计不写正文或 Local KB失败返回 REVISION_CONFLICTSOURCE_NEEDS_RECHECKSOURCE_BLOCKEDQUALITY_BLOCKEDPRECHECK_EXPIRED

4.5 AI 候选

方法 路径 说明
POST /app-api/muse/ai/tasks 创建生成、续写、扩写、润色、检测、规划任务
GET /app-api/muse/ai/tasks/{taskId} 查询任务
GET /app-api/muse/ai/tasks/{taskId}/stream AI 任务 SSE 流式事件(生成增量、质检、结束、错误)
GET /app-api/muse/works/{workId}/suggestions 当前作品候选列表
GET /app-api/muse/suggestions/{suggestionId} 候选详情
POST /app-api/muse/suggestions/{suggestionId}/accept 接受候选
POST /app-api/muse/suggestions/{suggestionId}/reject 丢弃候选

AI 任务流(GET .../ai/tasks/{taskId}/stream)按 SSE 规范发送:event: 行为事件名,data: 行为该事件 payload JSONid: 行为可续传的事件序号;无事件时发 SSE comment 作为 keepalive。事件契约

event data 字段 说明
chunk contentsequenceNo Token 级增量文本
quality_check dimensionscorepassed 影子层质检结果
done taskIdsuggestionId(可选 summary 终态:生成完成;suggestionId 缺失则不发 done
error codemessage 终态:已脱敏错误

待确认(类型不一致):当前后端实现把 donetaskId / suggestionId 按 Long 序列化为 JSON 数字,与本契约中候选/任务 ID 采用的 uuid 字符串(见候选详情等资源)不一致。需后端统一为 uuid 字符串或全局改判;统一前,前端已在 SSE 解析边界将其归一为字符串以保证类型稳定。

Accept 请求语义:

字段 要求
commandId / idempotencyKey 幂等键;二者只允许一个作为稳定业务幂等键,重复请求必须返回同一结果
expectedRevision 目标 Block revision
acceptMode accept_as_is / merge_after_edit
finalContent 修改后合并时必填
qualityResultVersion 候选质量结果版本
outputComplianceResultId 输出合规结果
staticCheckResultId 静态检查结果
sourceSnapshotId / sourceVersion 候选来源快照和来源版本;接受时实时对比当前来源版本
authorizationSnapshotId 接受时使用的授权快照
workAssetUsePrecheckId 使用市场作品资产作为参考或上下文时必填feature gate 未开启默认返回 FEATURE_DISABLED
auditReason 用户接受、修改后合并或覆盖原因

Accept 响应语义:

  • Block 新 revision。
  • Suggestion 归档结果。
  • Candidate Decision Archive 引用。
  • Block Source Attribution 写入结果,包含 source status、authorization snapshot、lineage 和许可限制。
  • Knowledge Draft 结果:原样接受保持待确认;修改后合并让旧草稿失效。
  • followup task投影刷新或重新提取。

Accept / Merge 失败必须返回 blockedReasonssourceStatusReasonsreasonAttributionsblockSourceAttributionPreviewcurrentRevisioncurrentQualityResultVersioncurrentAuthorizationSnapshotIdrequiredPrecheckTypenextActions。后端不得让 stale、revoked、recalled、blocked、owner_missing 或 unauthorized 来源进入 Canonical也不得把质量版本不匹配、输出合规失败、静态检查失败、市场 feature gate 关闭压缩成普通 STATE_CONFLICT

4.6 知识库和知识草稿

方法 路径 说明
GET /app-api/muse/knowledge-bases 用户知识库和已安装知识库
POST /app-api/muse/knowledge-bases 创建用户知识库
GET /app-api/muse/knowledge-bases/{kbId} 用户知识库详情、资料摘要、版本、来源状态和处理状态
PATCH /app-api/muse/knowledge-bases/{kbId} 更新用户知识库基础信息
POST /app-api/muse/knowledge-bases/{kbId}/disable 停用用户知识库,阻断新绑定和新检索
DELETE /app-api/muse/knowledge-bases/{kbId} 删除用户知识库,按状态进入软删除或异步清理
POST /app-api/muse/knowledge-bases/{kbId}/restore 恢复可恢复的用户知识库
GET /app-api/muse/knowledge-bases/{kbId}/documents 资料列表、版本、处理状态和来源摘要
POST /app-api/muse/knowledge-bases/{kbId}/documents 上传资料,返回 documentId 和处理任务
GET /app-api/muse/knowledge-bases/{kbId}/documents/{documentId}/versions 资料版本列表
POST /app-api/muse/knowledge-bases/{kbId}/documents/{documentId}/versions 上传资料新版本,触发处理任务
DELETE /app-api/muse/knowledge-bases/{kbId}/documents/{documentId} 删除或停用资料,触发来源事件
GET /app-api/muse/knowledge-bases/{kbId}/processing-tasks/{taskId} 查询资料处理、解析、切分、索引或投影任务
POST /app-api/muse/knowledge-bases/{kbId}/reindex 重建索引,返回任务
GET /app-api/muse/installed-knowledge-bases 已安装知识库列表、授权、来源状态和可绑定范围
POST /app-api/muse/installed-knowledge-bases/{installId}/disable 停用已安装知识库
DELETE /app-api/muse/installed-knowledge-bases/{installId} 删除已安装知识库记录,不删除来源市场资产
POST /app-api/muse/installed-knowledge-bases/{installId}/restore 恢复已安装知识库
POST /app-api/muse/knowledge-bases/{kbId}/publish-prechecks 发布准备预检,返回 marketPublishCheckId 或阻断原因
POST /app-api/muse/knowledge-bases/{kbId}/publish-snapshots 生成发布快照,固化版本、授权和来源摘要
POST /app-api/muse/knowledge-bases/{kbId}/publish-requests 提交发布申请,消费 marketPublishCheckId 和发布快照
GET /app-api/muse/works/{workId}/local-knowledge 作品 Local KB
GET /app-api/muse/works/{workId}/knowledge-drafts 待确认知识草稿
POST /app-api/muse/knowledge-drafts/{draftId}/confirm 确认知识草稿
POST /app-api/muse/knowledge-drafts/{draftId}/ignore 忽略知识草稿
POST /app-api/muse/knowledge-drafts/{draftId}/recheck 重验来源
POST /app-api/muse/works/{workId}/knowledge-bindings/prechecks 目标 owner 绑定预检,消费市场 handoff 或授权摘要,返回 kbBindPrecheckId
POST /app-api/muse/works/{workId}/knowledge-bindings 绑定用户/市场知识库
DELETE /app-api/muse/works/{workId}/knowledge-bindings/{bindingId} 解绑作品知识来源
POST /app-api/muse/knowledge-bases/{kbId}/export-tasks 创建知识库导出任务

知识草稿确认必须重新校验来源状态、授权快照、source hash、目标版本和风险标记。

知识绑定预检和绑定写入都属于 Knowledge owner。Market 只能提供来源侧 handoff token、授权摘要和跳转审计Knowledge 预检接口必须重新校验 work owner、目标对象、来源版本、授权快照、来源状态、许可范围和幂等键生成 kbBindPrecheckId 或签名消费凭证。知识绑定命令必须消费 kbBindPrecheckId,并显式传入 commandIdworkIdtargetOwner=knowledgetargetIdsourceTypesourceIdsourceVersionauthorizationSnapshotIdexpectedBindingRevision

资料上传、删除、重建索引、停用、恢复和发布提交都必须写审计。资料处理任务失败时返回 jobIdretryablefailedStageblockedReasonnextActions;删除或停用资料必须触发来源事件,让绑定、检索、生成、导出和个人中心摘要进入 blocked 或 stale 状态。

资料上传必须带 owner、用途、文件名、大小、MIME、hash 和幂等键;服务端必须写扫描状态、存储引用、保留期和清理策略。扫描 blocked / failed 或 MIME、大小、扩展名不匹配时资料不得进入切块、索引、AI 上下文或市场发布。

4.7 智能体工作台

方法 路径 说明
GET /app-api/muse/agents 用户可用智能体列表
POST /app-api/muse/agents 创建用户智能体
POST /app-api/muse/agents/{agentId}/versions 新建版本
POST /app-api/muse/agents/{agentId}/test 试用
GET /app-api/muse/works/{workId}/agent-slots 作品槽位
POST /app-api/muse/works/{workId}/agent-slots/{slotKey}/prechecks 目标 owner 槽位预检,消费市场 handoff 或授权摘要,返回 agentSlotPrecheckId
POST /app-api/muse/works/{workId}/agent-slots/{slotKey}/bind 绑定槽位,消费预检

用户只能替换开放槽位,不能替换输入输出合规、拆分切块、入 RAG、语义安全围栏、静态检查、质量门控等保护节点。

智能体试用接口(POST /app-api/muse/agents/{agentId}/test)详情:

试用请求字段:

字段 类型 要求
workId string 可选,关联作品上下文;不传时使用沙箱上下文
contextScope enum none / work / chapter;决定试用时可读取的上下文范围
usagePolicy enum charge / free_trial;决定本次试用是否计费
outputTarget enum preview_only / shadowpreview_only 只返回预览不落库,shadow 写入 Shadow Candidate 供后续决策
input object 试用输入内容,包含 prompt 或指令
commandId string 幂等键

试用响应字段:

字段 类型 说明
trialSessionId string 本次试用会话 ID用于关联后续查询和审计
outputPreview object 智能体输出预览内容
usageCharged boolean 本次试用是否实际计费
outputDestination string 输出实际落点:preview_only / shadow_candidate
jobId string 若异步执行,返回任务 ID 供轮询

约束:

  • contextScope=workchapter 时,必须校验用户对 workId 的访问权限。
  • usagePolicy=free_trial 受账户免费试用额度限制;额度耗尽时返回 QUOTA_EXCEEDED
  • outputTarget=shadow 时,输出进入 Shadow Candidate 状态,用户可后续接受或丢弃。
  • 试用不写正文 Canonical、Local KB 或正式规划。
  • Runtime Permission Envelope 由服务端按试用场景生成scope 受限于试用上下文。

槽位绑定命令必须显式声明:

字段 要求
agentSlotPrecheckId AI target owner 生成的槽位绑定预检或签名消费凭证,必须由 AI owner 原子消费
commandId 幂等键
workId / slotKey 目标作品和开放槽位
targetOwner / targetId 目标 owner 和目标对象,不能由前端自造 owner
sourceAgentId / sourceAgentVersion 绑定来源智能体和版本
authorizationSnapshotId 授权快照
expectedSlotRevision 目标槽位当前 revision

绑定成功只写 Agent Slot Binding、绑定来源、版本、工具授权快照和审计不修改保护节点定义。Market 只能提供来源侧 handoff token 和授权摘要,不能写 agentSlotPrecheckId 或槽位事实。sourceAgentVersion、授权快照、来源状态或槽位 revision 变化时必须返回 SOURCE_NEEDS_RECHECKSOURCE_BLOCKEDPRECHECK_EXPIREDREVISION_CONFLICT

4.8 市场

方法 路径 说明
GET /app-api/muse/marketplace/assets 市场资产列表
GET /app-api/muse/marketplace/categories 分类曝光、推荐位、排序和可见性摘要
GET /app-api/muse/marketplace/recommendations 个性化推荐资产列表
GET /app-api/muse/marketplace/assets/{assetId} 资产详情
POST /app-api/muse/marketplace/assets/{assetId}/favorite 收藏资产
DELETE /app-api/muse/marketplace/assets/{assetId}/favorite 取消收藏
POST /app-api/muse/marketplace/assets/{assetId}/purchase 购买或获取授权
POST /app-api/muse/marketplace/assets/{assetId}/install 安装智能体或知识库
POST /app-api/muse/marketplace/assets/{assetId}/bind-precheck 创建来源侧授权摘要和 handoff 准备,不返回目标 owner 写入凭证
POST /app-api/muse/marketplace/handoffs 创建市场 handoff只返回短期 handoff 和目标 owner 消费入口
GET /app-api/muse/marketplace/handoffs/{handoffToken} 查询 handoff 状态、过期时间和目标 owner
POST /app-api/muse/marketplace/handoffs/{handoffToken}/cancel 取消市场 handoff
POST /app-api/muse/marketplace/publish-drafts 保存发布草稿
POST /app-api/muse/marketplace/publish-drafts/{draftId}/checks 发布检查,生成 marketPublishCheckId
POST /app-api/muse/marketplace/publish-requests 提交发布申请,消费 marketPublishCheckId 和发布快照
POST /app-api/muse/marketplace/publish-requests/{requestId}/withdraw 撤回发布申请
GET /app-api/muse/marketplace/my-publish-records 我的发布记录
GET /app-api/muse/marketplace/assets/{assetId}/governance-impact 查看下架、召回、授权变化对本人安装、绑定、导出和任务的影响
POST /app-api/muse/marketplace/appeals 提交申诉
POST /app-api/muse/marketplace/appeals/{appealId}/supplements 补充申诉材料
POST /app-api/muse/marketplace/appeals/{appealId}/withdraw 撤回申诉

作品资产 feature gate 未开启前,只允许阅读、收藏和授权记录,不允许模板化、参考写入或进入 AI 上下文;相关 target owner 预检和绑定/使用命令默认返回 FEATURE_DISABLED,直到 Content / AI owner、API、Schema、lineage 和导出限制闭合。

市场资产列表查询(GET /app-api/muse/marketplace/assets)排序和筛选参数:

参数 类型 说明
sortBy enum popularity / newest / rating / relevance;默认 relevance
assetType enum work / agent / knowledge_base;可选筛选
category string 分类筛选
keyword string 关键词搜索
pageNo / pageSize int 分页参数

个性化推荐接口(GET /app-api/muse/marketplace/recommendations)参数:

参数 类型 说明
recommendationContext enum 可选,home / after_install / similar_to_asset / work_context;决定推荐策略
referenceAssetId string 可选,similar_to_asset 时必填,基于该资产推荐相似资产
workId string 可选,work_context 时可填,基于作品上下文推荐适配的智能体或知识库
limit int 推荐数量上限,默认 10

推荐响应返回 assets 列表和 recommendationId(用于后续点击归因和推荐效果追踪)。推荐不暴露用户私有正文或知识内容作为推荐依据。

市场接口的返回必须区分 licenseStatusinstallStatusbindStatussourceStatusnextAction。购买或安装成功只表示账户可用资产变化;绑定或使用必须由目标 owner 自己生成并消费预检后完成。

Market 只负责资产、授权、安装记录、发布申请、申诉、来源侧授权摘要、handoff token 和跳转审计。Market API 可以生成、查询、取消 handoff但不能写作品正文、正式规划、Local KB、Agent Slot Binding、目标 precheck/session 或动态字段数据;目标 owner API 必须基于 handoff token 或授权摘要自行生成并消费 kbBindPrecheckIdagentSlotPrecheckIdworkAssetUsePrecheckId 或签名消费凭证,并重新校验 owner、目标对象、来源版本、授权快照、状态机和幂等键。

4.9 导入导出

方法 路径 说明
POST /app-api/muse/works/{workId}/import-tasks 上传并创建导入任务
GET /app-api/muse/import-tasks/{taskId} 查询导入任务
POST /app-api/muse/works/{workId}/parse-jobs 创建 AI 全书解析任务,读取 Content 导入文件或章节上下文
GET /app-api/muse/parse-jobs/{jobId} 查询 AI 解析任务
POST /app-api/muse/parse-jobs/{jobId}/retry 重试可重试解析任务或失败阶段
GET /app-api/muse/parse-jobs/{jobId}/chapters AI 章节解析结果
POST /app-api/muse/chapter-parse-results/{resultId}/confirm 章节审阅确认,通知 Knowledge 生成或刷新知识草稿
POST /app-api/muse/chapter-parse-results/{resultId}/reject 章节驳回,记录原因并作废对应 AI Shadow 结果
POST /app-api/muse/parse-jobs/{jobId}/chapters/batch-confirm 批量确认章节,返回逐章成功、失败和部分失败摘要
POST /app-api/muse/works/{workId}/export-tasks 创建导出任务
GET /app-api/muse/export-tasks/{taskId} 查询导出任务
GET /app-api/muse/downloads/{credentialId} 下载导出包

章节确认接口只表示 AI Chapter Parse Result 审阅通过并进入 Knowledge Draft 处理,不写正式知识。章节驳回必须写用户原因、当前 parse result revision 和审计,不删除原始导入文件。

Import task、import file 和 chapter context owner 是 contentParse Job 和 Chapter Parse Result owner 是 aiKnowledge Draft owner 是 knowledge。Parse Job 必须绑定 workId、发起人、Content 上下文引用、source snapshot、authorization snapshot、解析配置版本、Runtime Permission Envelope 和重试组。批量确认以章节为事务边界,允许部分失败;响应必须返回 confirmedChapterResultIdscreatedDraftIdsfailedChaptersskippedChapterspartialFailure=true/false、失败错误码和下一步动作。某章失败不得回滚已成功章节,也不得把跨章节批量确认变成不可解释的单事务写入。

导入上传必须绑定 owner、用途、大小、MIME、hash、扫描状态、source snapshot、authorization snapshot、保留期和清理策略扫描 blocked / failed 的文件不得创建 Parse Job。下载凭证必须携带来源传播版本和授权快照来源 revoked / recalled / blocked / unauthorized 或授权过期时返回 SOURCE_BLOCKEDSOURCE_NEEDS_RECHECKPRECHECK_EXPIRED,不能继续下载。

4.10 个人中心

方法 路径 说明
GET /app-api/muse/profile 个人资料
PATCH /app-api/muse/profile 修改资料
GET /app-api/muse/account/entitlements 权益和配额
GET /app-api/muse/account/usage 用量摘要
GET /app-api/muse/account/new-api-binding 当前用户 New-API 网关用户绑定摘要
POST /app-api/muse/account/new-api-binding/recheck 发起网关用户绑定重验
GET /app-api/muse/account/balance-snapshots 余额和权益快照摘要
POST /app-api/muse/account/quota-requests 发起本人套餐或余额同步请求,返回 requestId 和 correlationId
GET /app-api/muse/account/quota-requests/{requestId} 查询额度请求状态、correlationId 和失败原因
GET /app-api/muse/account/integration-calls/by-correlation/{correlationId} 查询本人外部调用去重、重试和归属状态
GET /app-api/muse/account/purchases 购买记录
GET /app-api/muse/account/licenses 授权记录
GET /app-api/muse/account/publish-records 发布记录
GET /app-api/muse/account/security-events 安全事件摘要
GET /app-api/muse/account/security-events/{eventId} 安全事件详情,返回事件类型、发生时间、来源 IP、设备信息、影响范围和处理建议
POST /app-api/muse/account/security-events/{eventId}/acknowledge 确认/处理安全事件,标记用户已知晓或已采取措施
POST /app-api/muse/account/export-tasks 创建个人资料、账户记录或安全事件导出任务
GET /app-api/muse/account/export-tasks/{taskId} 查询个人中心导出任务
GET /app-api/muse/account/downloads/{credentialId} 下载个人中心导出包

个人中心是 read model 和跳转入口,不拥有作品、知识、市场资产或 AI 任务事实。

个人中心账户接口只返回当前用户可见的摘要和下载凭证,不暴露 New-API token、provider authority、供应商路由、底层成本账本、完整 Prompt/Response 或私有审计字段。correlationId 查询只能查本人可见调用,重复请求必须返回同一重试组和归属状态,不能重复扣减、重复补偿或重复归属。

安全事件详情接口(GET /app-api/muse/account/security-events/{eventId})响应字段:

字段 类型 说明
eventId string 安全事件 ID
eventType enum login_anomaly / credential_expired / sensitive_export / access_denied_burst / device_change / permission_escalation
severity enum info / warning / critical
occurredAt datetime 事件发生时间
sourceIp string 来源 IP 地址
deviceInfo object 设备信息摘要UA、平台、地理位置
affectedScope string 影响范围描述
description string 事件描述
suggestedActions array 建议处理措施列表
acknowledgedAt datetime 用户确认时间,未确认为空
acknowledgedAction string 用户确认时选择的处理措施

安全事件确认接口(POST /app-api/muse/account/security-events/{eventId}/acknowledge)请求字段:

字段 类型 要求
commandId string 幂等键
action enum acknowledged / password_changed / session_revoked / false_positive
note string 可选,用户备注

约束:

  • 安全事件只能由事件所属用户查看和确认。
  • 确认操作是 append-only不删除安全事件记录。
  • action=session_revoked 时,后端应联动 session 管理服务使相关会话失效。
  • 安全事件确认写审计。

5. 通用错误码

错误码 语义 前端建议
UNAUTHENTICATED 未登录或登录失效 重新登录
FORBIDDEN 无接口或资源权限 展示无权限或申请授权入口
RESOURCE_NOT_FOUND 资源不存在或不可见 返回列表或刷新
VALIDATION_ERROR 请求字段不合法 定位字段并提示
REVISION_CONFLICT Block revision 冲突 展示冲突恢复信息和当前 revision
DATA_REVISION_CONFLICT 动态字段数据 revision 冲突expectedDataRevision 不匹配),语义覆盖所有 owner 命令中的 expectedRevision / expectedDataRevision 冲突场景 展示当前 dataRevision 和冲突字段,引导用户刷新后重试
QUOTA_EXCEEDED 账户配额已用尽,例如 AI 调用次数、存储空间、知识库数量等 展示当前配额和升级/购买入口
BUDGET_EXCEEDED 单次任务或会话预算超限,例如 token 预算、调用次数预算 展示预算限制和调整建议
SCHEMA_STALE 调用方持有的 MetaSchema 版本已过期 刷新 Schema 和投影后重试
FIELD_DEPRECATED 动态字段已废弃或不再允许保存 显示迁移提示或隐藏保存入口
PROJECTION_STALE 用户可见投影版本已过期 重新拉取投影和字段数据
STATE_CONFLICT 当前状态不允许该动作 刷新对象状态和可用动作
SOURCE_NEEDS_RECHECK 来源需重验 引导重验或替换来源
SOURCE_BLOCKED 来源 actionPolicy 为 blocked例如 revoked / recalled / blocked / owner_missing / unauthorized 禁用确认、绑定、生成或导出动作,并展示原因归因
QUALITY_BLOCKED 候选质量或合规阻断 展示风险和重生成/修改入口
FEATURE_DISABLED feature gate 关闭 隐藏或禁用对应入口
PRECHECK_REQUIRED 缺少 handoff/precheck 返回来源空间刷新预检
PRECHECK_EXPIRED handoff/precheck 已过期或已消费 重新发起预检
MARKET_HANDOFF_INVALID handoff 不存在、过期、已取消、已消费或目标 owner 不匹配 返回市场刷新状态并重新发起
CORRELATION_CONFLICT correlationId 对应的外部调用语义不一致 阻断重复请求并展示当前归属状态
IDEMPOTENCY_CONFLICT 幂等键与请求语义不匹配 阻断重复提交并提示刷新
TASK_FAILED 异步任务失败 展示失败原因、重试或取消
PARTIAL_FAILURE 批量操作部分成功、部分失败 展示逐项结果和可重试项
UPSTREAM_UNAVAILABLE New-API、检索、文件或通知服务不可用 展示稍后重试,不暴露密钥或内部响应
API_VERSION_DEPRECATED 请求的 API 版本已废弃X-API-Version header 指定的版本已过期) 展示迁移指引,升级到最新版本

错误响应 data 可以按场景携带 currentRevisioncurrentStatecurrentSchemaVersioncurrentProjectionVersioncurrentDataRevisionrequiredPrecheckTypesourceStatusactionPolicyreasonAttributionscorrelationStatusretryablejobIdpartialResultsnextActions 等可恢复字段,但不得返回密钥、完整 Prompt/Response、私有正文全文或越权来源全文。

6. 非目标

  • 不在本文件复制 Yudao system/infra/pay/bpm 的全部内置接口。
  • 不使用旧版统一入口作为阶段 7 Muse API 入口。
  • 不把管理后台和用户端合并成同一套前端 API。
  • 不允许前端通过隐藏按钮承担安全职责。
  • 不允许 AI 或管理员接口绕过用户主权写 Canonical。

7. 关联阅读

  • 后端工程结构:后端-02-工程结构与模块职责.md
  • 关键流程:后端-03-关键流程实现与接口契约.md
  • Schema后端-04-统一数据库Schema-v1.md
  • 前端工程结构:前端-01-工程结构与核心依赖.md
  • 状态机:架构-04-状态机与约束清单.md