基于产品/架构/流程/前端/后端五维度并行review,澄清并落地22项关键决策: 架构层:Governance按消费者归属拆散、MetaSchema独立模块、 Source传播改为事件驱动自治、去掉Candidate Decision Envelope 和needs_recheck中间状态、Neo4j决策为依赖RAGFlow GraphRAG 后端层:Entitlement统一为可变表+审计日志、API版本策略采用 X-API-Version Header、知识实体唯一键加scope字段 前端层:SSE实时通信(AI stream独立+事件统一)、正文持久化 IndexedDB安全网、Block粒度为场景/小节级 产品层:范围不变UX解决复杂度、知识确认默认自动+冲突时人工
55 KiB
后端-05:统一 API(接口) 契约-v1
- 版本:v8
- 更新日期:2026-05-24
- 目标读者:前端 / 后端 / 架构 / 测试
- 阅读时间: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 / ai;system 只做权限 |
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: true 和 Sunset: <date> 提示迁移 |
| 到期行为 | 到期后返回 API_VERSION_DEPRECATED 错误码,HTTP 410 Gone |
| 版本变更触发条件 | 响应字段删除、字段语义不兼容变更、枚举值语义变化 |
| 非破坏性变更 | 新增可选字段、新增枚举值、新增接口不触发版本升级 |
客户端集成要求:
- 前端 SDK 和 API 客户端必须显式传递
X-API-Versionheader。 - 后端网关层解析 header 并注入请求上下文,各模块 controller 按版本返回对应响应结构。
- 版本不匹配或已废弃时,响应 body 必须包含
currentVersion、supportedVersions和migrationGuide字段。
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、校验结果引用和影响预览引用。发布、激活、回滚、废弃和灰度调整都必须写操作日志和业务审计;失败时返回可恢复的 currentVersion、validationErrors、affectedProjectionCount 和 nextActions。
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 配置请求回填都必须记录 commandId、correlationId、调整原因、前后权益快照、操作者、审批或复核信息和幂等状态。权益审计日志不是 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 响应必须返回 sourceStatus、actionPolicy、blockedReasons、needsRecheckReasons(注:needsRecheckReasons 是 ActionPolicy 层面的补充信息,说明为何 actionPolicy=needs_recheck,不是 SourceStatus 枚举值)、reasonAttributions、sourceEvents、nextActions、currentSourceVersion、currentAuthorizationSnapshotId 和可选 jobId。sourceStatus 使用 SourceStatus:active、stale、revoked、recalled、delisted、blocked、owner_missing、unauthorized;actionPolicy 使用 SourceActionPolicy:allowed、read_only、blocked、needs_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 |
仅包含当前用户可见、可编辑、可搜索或可导出的字段策略,并标注 writeOwner 和 ownerCommand |
动态字段没有跨 owner 的通用写接口。/dynamic-fields/validate 只做校验和路由建议,不写入任何 Canonical fact;正式写入必须回到目标 owner API,例如规划写 PUT /works/{workId}/planning/{sectionKey},正文写 PUT /blocks/{blockId},知识写 Knowledge Draft / Local KB 命令,Agent 写 Agent 配置命令。Owner 命令必须校验 schemaVersion、projectionVersion、expectedDataRevision、字段 allowlist、来源状态和目标 owner 权限。Schema 过期返回 SCHEMA_STALE;字段已废弃返回 FIELD_DEPRECATED;投影过期返回 PROJECTION_STALE;字段试图写 Canonical fact 但没有 owner 命令时返回 FORBIDDEN 或 FEATURE_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 管控的动态字段写入时,
expectedSchemaVersion和expectedProjectionVersion必须校验;不匹配时分别返回SCHEMA_STALE和PROJECTION_STALE。 - 所有写入命令必须校验目标对象的
expectedDataRevision(或等价乐观锁字段);不匹配时返回REVISION_CONFLICT或DATA_REVISION_CONFLICT。 - 不涉及动态字段的纯正文或纯配置命令可以不要求
expectedSchemaVersion,但必须保留expectedRevision乐观锁。
4.4 作品规划
作品规划台面向作品设定、章节大纲、世界设定、角色关系、情节节拍和文风检查。规划正式数据由用户确认后进入 content owner;AI 只能产生 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_CONFLICT、SOURCE_NEEDS_RECHECK、SOURCE_BLOCKED、QUALITY_BLOCKED 或 PRECHECK_EXPIRED。
4.5 AI 候选
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /app-api/muse/ai/tasks |
创建生成、续写、扩写、润色、检测、规划任务 |
| GET | /app-api/muse/ai/tasks/{taskId} |
查询任务 |
| 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 |
丢弃候选 |
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 失败必须返回 blockedReasons、sourceStatusReasons、reasonAttributions、blockSourceAttributionPreview、currentRevision、currentQualityResultVersion、currentAuthorizationSnapshotId、requiredPrecheckType 和 nextActions。后端不得让 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,并显式传入 commandId、workId、targetOwner=knowledge、targetId、sourceType、sourceId、sourceVersion、authorizationSnapshotId 和 expectedBindingRevision。
资料上传、删除、重建索引、停用、恢复和发布提交都必须写审计。资料处理任务失败时返回 jobId、retryable、failedStage、blockedReason 和 nextActions;删除或停用资料必须触发来源事件,让绑定、检索、生成、导出和个人中心摘要进入 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 / shadow;preview_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=work或chapter时,必须校验用户对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_RECHECK、SOURCE_BLOCKED、PRECHECK_EXPIRED 或 REVISION_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(用于后续点击归因和推荐效果追踪)。推荐不暴露用户私有正文或知识内容作为推荐依据。
市场接口的返回必须区分 licenseStatus、installStatus、bindStatus、sourceStatus 和 nextAction。购买或安装成功只表示账户可用资产变化;绑定或使用必须由目标 owner 自己生成并消费预检后完成。
Market 只负责资产、授权、安装记录、发布申请、申诉、来源侧授权摘要、handoff token 和跳转审计。Market API 可以生成、查询、取消 handoff,但不能写作品正文、正式规划、Local KB、Agent Slot Binding、目标 precheck/session 或动态字段数据;目标 owner API 必须基于 handoff token 或授权摘要自行生成并消费 kbBindPrecheckId、agentSlotPrecheckId、workAssetUsePrecheckId 或签名消费凭证,并重新校验 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 是 content;Parse Job 和 Chapter Parse Result owner 是 ai;Knowledge Draft owner 是 knowledge。Parse Job 必须绑定 workId、发起人、Content 上下文引用、source snapshot、authorization snapshot、解析配置版本、Runtime Permission Envelope 和重试组。批量确认以章节为事务边界,允许部分失败;响应必须返回 confirmedChapterResultIds、createdDraftIds、failedChapters、skippedChapters、partialFailure=true/false、失败错误码和下一步动作。某章失败不得回滚已成功章节,也不得把跨章节批量确认变成不可解释的单事务写入。
导入上传必须绑定 owner、用途、大小、MIME、hash、扫描状态、source snapshot、authorization snapshot、保留期和清理策略;扫描 blocked / failed 的文件不得创建 Parse Job。下载凭证必须携带来源传播版本和授权快照,来源 revoked / recalled / blocked / unauthorized 或授权过期时返回 SOURCE_BLOCKED、SOURCE_NEEDS_RECHECK 或 PRECHECK_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 可以按场景携带 currentRevision、currentState、currentSchemaVersion、currentProjectionVersion、currentDataRevision、requiredPrecheckType、sourceStatus、actionPolicy、reasonAttributions、correlationStatus、retryable、jobId、partialResults、nextActions 等可恢复字段,但不得返回密钥、完整 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