Drama 开发与平台复用指南
Drama 与 Studio、Commerce 的共享技术栈、代码归属、Platform 接口、任务恢复及分批接入清单
Drama、Studio、Commerce平级消费独立 OceanWay Runtime,分别保留产品规则和数据作用域。Runtime目标工程runtime/oceanway-runtime尚未创建;产品UI可先同一Next.js应用部署,公共运行时独立归属。Platform 是三款产品共同的身份、调用授权、钱包、计费和商业权威。开发 Drama 时,应先复用这些边界和已有模块,再实现漫剧领域;平台尚未交接的能力保留明确端口和不可用状态。
适用对象是Drama与Platform/Runtime集成开发者。2026-10-15更新: 原文10-14源码路径与分步接口状态保留历史;新开发按Runtime目标架构和接入顺序执行,早期Drama-first已被替代。本文以现行决策、平台核心 PRD和漫剧标准 1.7.0为依据。新目标不表示已完成迁移;身份、计费、商业规则和接口类型继续在各自唯一源维护。
开发前先确定的约束
- 独立运行时、平级产品。 产品采用Next.js与PostgreSQL,经SDK/领域适配接入Runtime;可同工程部署,公共引擎不长期归属Studio。Drama 当前 Vite、独立 Node 服务和 File 存储用于保留原型行为与验收参考,不能演变为另一套生产平台。
- 同一平台身份与钱包。 Drama 不注册第二个平台账号,不持有余额、支付或权益核销权威,不绕过 Platform 调用网关。产品服务凭据只能证明产品和动作权限,不能替任意用户创建收费调用。
- 公共代码独立。 当前
shared/是抽离来源;新通用行为归Runtime,Drama仅提供上下文、领域工具与结果接收适配。剧本、分集、分镜、候选与采纳属于Drama,不import Studio内部模块、不直接写Runtime表,不搬原型执行器或本地预算。 - 一次真实调用关联一次原操作。 模型预留和结算由 Platform 完成。只持原请求凭证的 Worker 只能恢复;持 Platform Run 授权才可以继续调用,每次由 Platform 自动选择适用资源并核对当时余额或权益。模型成功后保存或解析失败,只恢复原结果,不重新生成或在 Drama 再扣费。
- Studio先消费,领域随后验证。 当前仅Studio为已交付创作产品;先证明Runtime独立与首消费闭环,再选择Drama或Commerce。Drama候选切片为文档→分镜→视频段候选→选择下载,最终剪辑交外部工具;仅使用已正式交接的媒体与Run授权,不预设Drama/Commerce开工顺序。
上述约束关联 PL-001/002/004/005/008/013/014/021、T-04/05/06/12/13 和适用 AC-01/02/04/05/07/11/15/16;不另建第二套需求编号。
系统组成与数据归属
| 对象 | 权威归属 | Drama 的处理方式 |
|---|---|---|
| 用户、会话、平台与产品角色 | Platform | 保存稳定用户引用,服务端确认当前身份;不复制认证和授予平台角色 |
| 积分余额、资金流水、模型价、充值和支付 | Platform | 展示平台投影,调用正式接口;不从本地余额判定消费或自行算最终扣费 |
| 商品、活动、订单、订阅、权益与售后 | Platform | 保留 Drama 本域购买和运营界面,操作平台同一对象、版本和原订单 |
| 项目、剧本、分集、分镜、视频段、候选、选择 | Drama 领域 | 产品库持久保存,校验产品、用户、项目访问和版本 |
| 上传、素材版本、授权读取、长期结果保存 | 当前媒体Writer;目标经AssetPort分批交接Runtime媒体模块 | 产品定义权限/业务引用;受托登记保留product/owner与来源,每条记录只有一个Writer |
| Job/JobSet、Attempt、Agent/Workflow运行、执行快照与产物 | OceanWay Runtime;切换前沿原Writer | 经SDK/API读取和执行,不直写运行表;保留原租约与Operation关联 |
| 产品业务任务、候选与采纳回执 | Drama领域 | 产品事务持久提交、对象修订校验和outbox/幂等回执 |
| 后台Run授权 | Platform | 限定主体/产品/动作/模型/有效期;与Runtime执行实例分开关联 |
| 模型原操作、客户任务、执行与资金事实 | Platform | 产品保存 operation_id 和必要平台任务引用,以原操作查询与恢复 |
| 供应任务、上游凭据、渠道和采购成本 | 网关 | 产品不保存供应 Key,不直接操作供应任务或供应管理接口 |
| 全域业务摘要 | Platform 投影 | 产品通过可靠事件提供摘要;项目正文和素材权威仍留在产品 |
产品领域任务、Runtime Job/Attempt与Agent/Workflow实例、Platform Run授权/Operation、供应原任务分别持有自己的身份和状态,以稳定引用关联;一个taskId不能同时代表这些对象。更多规则见总体架构与共用任务与媒体。
现有代码如何复用
仓库和共享目录
| 位置 | 用途 | 采用方式 |
|---|---|---|
platform/oceanway-platform | Go/Gin/GORM 平台,PostgreSQL 与 Redis,Console/Admin | 通过正式 HTTP 契约调用,不跨库 SQL,不导入 Go 内部实现 |
products/oceanway-studio/web/src/shared/platform/ | 已有平台接入配置、客户端、身份与只读接入桥 | 审计当前限制后作为三产品平台接入的公共起点 |
products/oceanway-studio/web/src/lib/server/ | 现有 Agent、文本任务、媒体和持久任务实现 | 按已验收切片提取共用能力;现有本地身份、积分与渠道依赖须先解耦 |
products/oceanway-drama/packages/manju-document | 富文档校验、序列化、范围与指纹 | 优先复用算法与兼容读取,保留现有文档 schema |
products/oceanway-drama/packages/manju-contracts | Drama 原型领域与 HTTP 契约 | 保留领域语义;不能作为 Platform DTO 或已发布平台契约 |
products/oceanway-drama/packages/manju-http-client | 原型客户端、SSE、下载、精确请求恢复 | 复用传输行为与用例;Next.js 路由和平台 DTO 按实际接口迁移 |
operations/oceanway-design/design-system/ | 设计 token、品牌与 UI 规范源 | 采用已确认规范及版本化制品,不在产品复制第二份 token 真源 |
operations/oceanway-docs/content/docs/ | 产品、架构、接口语义和验收唯一正文 | 以现行正文为入口,归档和旧仓说明仅作历史参考 |
以下目录是10-14既有共享方案与当前抽离来源,保留源码定位用途;不再是新公共运行时的目标归属。新结构见独立Runtime目录与接入件:
web/src/
app/ 页面与 HTTP 入口;proxy 按可信 Host 分流
shared/
platform/ Platform 客户端与适配器,唯一发起 Platform 请求的地方
runtime/ 原请求状态机、生成服务、租约、幂等、恢复、outbox
agent/ 标准工具调用引擎、Run 授权、基础工具、上下文
media/ 上传、授权读取、结果保存、引用保护
documents/ 通用富文档能力
ui/ 基础控件、任务状态、金额格式化
products/
studio/ Studio 产品规则
drama/ 剧本、分集、分镜、视频段和候选规则
commerce/ Commerce 产品规则公共模块接收“产品、平台主体、创作资料”作用域三元组,只来自可信 Host 映射或持久化任务,没有默认值;它不是调用授权。products/* 彼此不能 import;shared/* 不能 import products/、app/ 或旧本地权威模块;lib、services、components 不能 import app/;只有 shared/platform 发起 Platform 请求。规则先以 ESLint warning 登记基线,稳定后升级 error。画布、提示词库在实际出现第二个产品复用时再提取。
新持久层只用PostgreSQL,不恢复文件数据库Provider。10-14直接设计schema的clean切片约定不适用于已上线任务/资产;Runtime抽离按版本兼容、原身份接管或排空,沿切换协议保护在途与未知单。生成任务显式保存调用权威,不能用 creator_profile_id IS NULL 推断。供应商协议、支付渠道、资金算法及旧本地账号/积分/退款代码不迁进共享层。
| 三产品共同需求 | 放入共用层 | 留在产品领域 |
|---|---|---|
| 生成内容与可恢复任务 | 平台委托、输入快照机制、原操作关联、租约和保存重试 | Studio 的画布流程、Drama 的分镜/视频段、Commerce 的工具或批次规则 |
| 素材复用 | 上传、不可变版本、授权读取、引用保护和来源追溯 | 哪些素材可进入本产品、怎样进入项目、用户怎样选中结果 |
| 编辑与助手 | 文档内核、可靠命令、SSE 和已交接的助手传输能力 | 各产品的提示词、上下文组装、修改建议和显式应用规则 |
| 用量与购买 | 平台商业客户端、单位显示、原订单恢复和业务事件投递 | 本域入口、获准商品展示、产品后台页面和业务汇总 |
业务 UI 不直接依赖供应协议或平台原始响应。公共客户端负责鉴权、传输、错误和原操作信息;领域适配器负责将结果登记为各产品的文档、素材或候选。
复用优先级
| 能力 | 现在可复用的内容 | 接入时必须替换或补齐 |
|---|---|---|
| 页面与工作流 | Drama 已验证导航、编辑、素材区、助手、生产准备与候选选择 | Next.js 路由与服务端持久化;逐步对齐设计规范 |
| 富文档 | 完整文档、派生文本、范围、修订、语义及内容指纹 | 新存储映射和迁移往返;不能把富文档压成纯文本 |
| 可靠命令 | requestId、预期修订、完整 payload、领域回执和冲突行为 | 生产数据库原子提交和原请求恢复 |
| 平台接入 | Studio 的服务端配置、身份客户端、受控 Host 与只读 BFF | 当前 Cookie/部署版本、产品动作和逐对象作用域;接入桥启用不等于创作身份切换 |
| 任务运行 | Run/Task/Attempt、输入快照、不可变来源、队列与租约行为 | 真实平台操作关联、Worker 授权与查询恢复 |
| 业务事件 | Drama 已有可信 Host、admission 和持久 outbox 增量 | 与迁入后的 PostgreSQL 事务及当前平台版本联合验收 |
| 模型 Provider | 文本输入快照、解析和业务结果登记行为 | 真实 Platform 适配器;图片与视频端口不能据本地夹具推导已接通 |
| 媒体 | 版本、来源、候选、播放下载和引用保护 | 生产对象存储、授权链接、原结果保存;测试视频不等于真实模型供给 |
| 资源核对 | 现有消费端口的职责划分 | Platform 自动选择当时适用余额或权益并按每次调用预留/结算;本地内存 reserve/settle/release 不迁入,不建立独立 Run 金额预算 |
| Canvas | Handoff 身份、版本、返回目标和登记规则 | 同工程公共画布真实往返与权限;原型预算/执行占位值不是公共协议 |
跨仓迁移完成前,以不可变契约制品交接;不依赖开发者机器上的相对源码路径、分支 URL 或复制 DTO。迁入同一个产品工程后通过内部模块共享实现,不拆多个 npm 包或独立服务。
Drama 已有行为参考的具体入口:
| 源码入口,相对于 Drama 仓库 | 迁移时保留的行为 |
|---|---|
packages/manju-http-client/src/transport.ts | 精确命令 JSON、固定上传 Blob、SSE 游标和下载行为;模型未知执行仍遵守平台只查原请求规则 |
packages/manju-service/src/lib/server/agent-run-store.ts | Run/Task/Attempt、输入指纹、原调用与平台操作分别关联 |
packages/manju-service/src/lib/server/manju-execution-fence.ts | AbortSignal、租约重验,旧 Worker 不得提交结果 |
packages/manju-service/src/lib/server/manju-host-adapter.ts | 可信上下文、项目访问和持久执行 admission;旧组织/workspace 模型不成为新增平台服务 |
packages/manju-service/src/lib/server/manju-platform-business-adapter.ts | 平台 identity、activity grant 及原事件投递适配 |
packages/manju-service/src/lib/server/manju-business-outbox.ts | 与业务对象同事务的事件、持久租约、退避和回执核验 |
packages/manju-service/src/lib/server/manju-provider-boundary.ts | 原调用回执、真实平台操作引用、文本 admission 边界;image/video registry 声明不等于实际接线 |
packages/manju-service/src/lib/manju-production-snapshot-contract.ts | 固定剧本、分镜、范围、提示词、参数和输入指纹 |
当前 Drama 业务适配器只允许指定的 oceanway_session Cookie,与平台可配置 Cookie 名存在接入限制;迁入共用客户端时按实际部署契约处理,不在各产品继续写死名称。
现有 platformBinding、ensureProjectBinding 和 workspace/tenant 类型保留旧共享 Project 模型。迁入时映射为产品内部项目与资料绑定,不要求 Platform 新建 Project、workspace 或组织服务。
现有 Studio 接入配置
以下变量用于已实现的接入桥与显式 Platform 文本链路。接入桥默认关闭,已有统一登录、创作资料、单次非流式 Responses 和原结果恢复分项,见 Studio docs/verification/platform-login-text-20261013/report.md;不能将启用开关当成全部媒体、Agent、创作与商业权威已切换。
| 变量 | 当前用途 |
|---|---|
OCEANWAY_PLATFORM_INTEGRATION_MODE | disabled 默认关闭,platform 显式启用接入桥 |
OCEANWAY_PLATFORM_API_ORIGIN | 平台 HTTP(S) origin,不带凭据、路径、查询或 fragment |
OCEANWAY_PLATFORM_SESSION_COOKIE_NAME | 唯一转发的平台 Cookie 名,默认 oceanway_session,与实际部署交接 |
OCEANWAY_PRODUCT_HOSTS_JSON | 精确 Host 到 studio/drama/commerce 的登记映射 |
OCEANWAY_PRODUCT_ORIGINS_JSON | 每产品受控 Origin,必须与登记 Host 一致 |
OCEANWAY_STUDIO_PRODUCT_KEY、OCEANWAY_DRAMA_PRODUCT_KEY、OCEANWAY_COMMERCE_PRODUCT_KEY | 各产品独立服务端凭据,实际动作仍由平台核验 |
OCEANWAY_ACTIVITY_REQUEST_TIMEOUT_MS | 当前桥请求超时,默认 10000ms;超时不自动发起新付费请求 |
Studio 新身份入口已采用可配置 Cookie、独立 creator_profiles 和平台主体,不虚构本地密码、套餐或余额。旧显式用户绑定仍按稳定资料保留,不自动合并;Drama 迁入后须复验本域对象与部署作用域。业务 outbox 的既有配置独立于接入桥,关闭桥不等于停止全部摘要投递。
平台身份与产品授权
请求链路
浏览器先访问产品服务端。服务端以已登记 Host 确定 drama,选择对应产品凭据,向 Platform 确认当前平台会话,再核验 Drama 对象访问。客户端传来的 userId、product、Run.userId 或存储 owner 命名空间都不能成为身份依据。
平台当前服务端产品凭据为:
X-Platform-Product-Key: <key_id>.<secret>
Cookie: <configured_session_cookie>=<current_user_grant>
X-User-Origin: <registered_drama_origin>
Content-Type: application/json这是产品后端到 Platform 的示意,不放入浏览器请求或前端包。只转发唯一指定的平台会话 Cookie,不透传整套 Cookie/Header;服务端核验浏览器 Origin,并由可信 Host 映射选择产品。X-User-Origin 仅在已通过产品凭据鉴权时受理。
| 接口 | 鉴权 | 用途 |
|---|---|---|
GET /api/platform/v1/identity | 当前平台会话 | 返回用户、SID、产品角色、平台角色和动作投影 |
GET /api/platform/v1/return-url | 受控返回目标校验 | 登录返回不能接受任意 URL |
POST /api/platform/v1/logout | 当前会话及 Origin | 撤销同一全局 SID,产品下一受保护请求重新校验 |
POST /api/platform/v1/sso/challenges、/sso/authorize,GET /sso/callback | 按各接口要求 | 受控跨主域交接;不是跨主域共享一个 Cookie |
身份响应中的 data.user.id 是平台用户引用,data.session.sid 是当前会话;产品用 product_roles 等投影判断界面可见性,服务端仍核动作和对象归属。平台管理员或产品运营角色不自动获得项目私密正文和媒体读取权限。
默认契约 Cookie 名为 oceanway_session;当前部署、测试实例可能采用独立 Cookie 名或 host-only 范围。交接时固定实际 Cookie 名、Domain、Path、API Origin、产品 Host/Origin、登录返回和跨域方案,不能仅因 Console 登录可用就宣布 Drama SSO 完成。域名由配置管理,Drama 正式子域名不在本文自行确定。
创作资料采用显式平台用户映射。旧本地用户如被项目、素材外键引用,保留其稳定资料 ID 后再解除认证与资金职责;不按同名邮箱或用户名自动合并。切号、退出和撤权清理旧查询缓存,长连接在继续释放私密数据前重验原用户和 SID。
三种调用授权和 Agent 配置
| 授权 | 允许的动作 | 限制 |
|---|---|---|
| 当前用户调用 | 当前会话下明确提交新单次调用 | 平台逐次核账号、产品、动作和对象;服务凭据不能单独代替用户 |
| 原请求凭证 | 定位、核对、读取、恢复和保存原请求结果 | branded 类型在编译期排除提交入口;恢复不能首次或再次派发 |
| Run 授权 | 产品凭据加 Platform 签发授权,在主体/产品/Run/动作/模型/有效期/并发范围内继续调用 | 产品只持授权编号和展示 Platform 返回;每次调用由 Platform 重新核资源,不绑定首发库存或独立金额预算;P2 尚待交接 |
执行上下文与 activityGrant 分别只说明作用域和授权业务摘要,都不能充当调用授权。Run 授权与浏览器会话无关:退出登录、修改密码和安全重置不撤销已授权 Run,Worker 继续执行不调用 revalidatePlatformCreator;用户重新登录后再获准读取进度和结果。账号停用、产品访问/凭据撤销、停止或授权到期阻止新调用;余额或权益不足时按 Platform 返回的原因暂停。
shared/agent/engine 实现标准工具调用循环、步数、停止和事件流,并根据 Platform 的资源不足原因暂停;grant 管 Run 授权编号,tools 调用共享生成服务,context 处理会话/引用/摘要。Drama 只提供 products/drama/agent/profile.ts、context.ts、tools.ts、apply.ts:提示词/Skill/默认值、按权限读项目、领域候选与用户确认后的预期修订写回,profile 不提供建议预算或默认金额预算。模型输出不可信,领域工具使用与界面命令相同的校验,注入文本不能越权写项目。工具从 Platform /me/models 与 invocation_status 选当前可调用模型,不写死清单,不迁旧规划列表或本地预算。
2026-10-14 用户明确这些消费判断应由系统内部完成。Platform 自动选择当时适用资源,按现行每次调用预留/结算与原操作恢复执行;Drama 不提供填写、确认、追加 Run 预算、总金额上限、钱包支出上限或付费偏好表单,不绑定首次发起时的余额/权益库存。发起前余额或权益不足提示原因,运行中不足则暂停并保留已有结果;用户补足后主动继续原 Run,由 Platform 再核资源,不自动重发 UNKNOWN。UNKNOWN 保持原调用资源占用,只核对原操作。
停止后进入“停止中”,不再提交新调用,等待在途图像/视频结算并保存,随后“已停止”,已有结果保留。所有金额只显示 Platform 精确值,未知显示“未知”,调用明细以 Console 为准。P2/P3 尚待实现和交接,当前只做上下文、事件、工具声明和纯本地夹具,不接真实 Agent 调用。普通 Platform 单次调用的既有付费设置及独立 Key 预算规则保持各自范围,本次不改写。
模型目录与文本调用
目录不是执行许可
| 路径 | 当前职责 | Drama 使用方式 |
|---|---|---|
GET /api/platform/v1/models | 公开销售模型目录 | 展示模型内容与能力,不能仅据出现于目录启用生成 |
GET /api/platform/v1/public/offering | 公开销售与价格投影 | 展示精确字符串金额、规格和单位,不据此计算最终账务 |
GET /api/platform/v1/me/models | 当前本人模型投影 | 可作为共享目录读取起点,不代替产品委托权限 |
POST /api/platform/v1/public/price-estimate | 匿名只读估价 | 不冻结、不授权执行,不代替实际消费预留 |
模型选择保存平台精确模型身份及适用规格;当前文本每模型一个渠道及明确接入绑定。产品不设置供应 baseUrl、apiKey 或 channelId,也不建立逐客户 Key 的模型白名单。客户有效 Key 可调用当前开放模型,账户、额度和调用限制仍由平台校验。
当前 PublicModel 的关键投影包括 id、model_name、model_type、supported_protocols、invocation_status 和 price。invocation_status=price_only 仅可列价;协议、价格和实际可调用组合分别校验。price 中的费率已经包含销售倍率,产品不能再次乘 sales_multiplier。明确配置的字符串 "0" 与缺价、unavailable、依赖用量估价的 usage_dependent 分开处理。
价格的 usage_schema 描述规格和计量输入,不是完整生成能力 schema。工具调用、结构化输出、参考图数量、首尾帧、图生视频和上下文限制都需要独立能力交接,不能从模型名或价目推断。
产品文本委托
Drama 单次文本目标复用 Studio 已验证的 POST /api/platform/v1/relay/responses,要求当前会话、model:invoke 产品动作和受控 Origin。当前仅支持纯文本、非流式请求,字段白名单不含 tools。已有受限 Chat 委托保留其历史范围,不能直接把公共 /v1 任意参数搬入产品请求。
最小请求示例只使用当前契约和解码实现共同支持的字段,模型名替换为该部署已交接的精确模型:
{
"idempotency_key": "drama-call-0001",
"business_task_id": "drama-task-0001",
"request": {
"model": "<published-text-model>",
"input": "请根据已确认输入生成分镜草稿。",
"stream": false
}
}用户和产品由会话及产品凭据推导,不发送任意用户扣费字段。原业务任务、幂等键与嵌套 request 不可变,费用与用量由 Platform 确认。工具调用、函数结果输入、参考图片、流式与文本中断依赖 P3,当前示例不表示这些能力已开放。
先持久保存业务请求、幂等键和完整输入,再提交。收到 X-Platform-Operation-ID 后尽快持久关联原操作;接入客户端需要区分首次原生 JSON/SSE、重复请求回读、202 execution_unknown 和错误。流开始之后的错误可能作为 SSE 事件返回,不能只检查 HTTP 200。
公共开发者路径 /v1/responses、/v1/messages 和 Gemini 原生路径,与产品委托是不同入口。原结果支持多协议,也不代表产品已经可以发起所有协议。Drama 工具调用和多步 Agent 新调用等待 P2/P3,不能借用户开发者 Key、摘要 grant 或无会话请求替代。
当前请求字段存在契约偏差,见下文“接口交接缺口”。不要把字段直接从 Swagger 表单扩散到产品参数面板。
唯一账务与非模型收费
模型调用已经在 Platform 内完成授权、预留、用量确认及结算。Drama 保留业务状态和费用引用,不再调用本地预算服务扣一次,也不为同一模型调用申请非模型预留。模型成功而解析失败、候选登记失败或素材保存失败,不等于应自动退款。
金额与单位分开处理:人民币使用整数分,内部 quota 使用平台整数单位,展示积分使用精确十进制字符串。产品只格式化 Platform 返回的精确费用,不计算或预估最终费用,不固定充值比例或单价;金额未知显示“未知”,调用明细以 Console 为准。
非模型收费仅用于已批准、已发布的独立收费项。Drama 标准明确最终剪辑在外部工具完成,不因存在收费接口而新增成片合成或下载收费。
| 动作 | 路径 | 产品凭据动作与要求 |
|---|---|---|
| 预留 | POST /api/platform/v1/operations | operation:create,当前会话与 Origin;服务器解析价格 |
| 确认开始 | POST /operations/{id}/start | operation:start,当前会话与 Origin |
| 补充预留 | POST /operations/{id}/supplement | operation:supplement,当前会话与 Origin;成功后才可扩大业务范围 |
| 查询 | GET /operations/{id} | operation:read,固定原产品及原操作 |
| 确认事实 | POST /operations/{id}/fact | operation:result,可信原事实;不能用于伪造模型用量 |
| 结算 | POST /operations/{id}/settle | operation:settle,原快照与实际数量 |
| 释放 | POST /operations/{id}/release | operation:release,确认未执行或明确失败;未知不能释放 |
表中缩写 /operations/... 的共同前缀是 /api/platform/v1。创建非模型操作的最小字段为 idempotency_key、business_task_id、kind: "non_model"、item 和整数 quantity;不要提交自行计算的费用。原操作动作分别使用自己的幂等身份,重复必须保持相同输入。
后台只处理原已授权操作,不能仅持产品凭据指定用户创建新消费。价格变化、登出或租约过期不重写已发生操作的原快照。账务规则见钱包与计费和权益。
原操作查询以及 fact/settle/release 是受限服务端能力,部分路由只有产品鉴权,没有浏览器 owner 校验。产品 BFF 暴露本人操作视图前必须重新校验用户与对象归属,不能将这些服务端路由裸代理给浏览器。
任务身份和原结果恢复
持久关联
以下是产品任务需要表达的语义,具体字段按既有领域类型和迁入后的 schema 映射,不是新增 Platform DTO:
| 信息 | 必须保留的事实 |
|---|---|
| 产品和主体 | 服务端确定的 drama、平台用户引用及项目归属 |
| 业务请求 | 原命令 requestId、完整 payload、指纹、预期修订及领域回执 |
| Run/Task/Attempt | 父 Run、业务任务、实际调用尝试与用户明确重试之间的关系 |
| 模型调用 | business_task_id、idempotency_key、精确模型及输入快照 |
| 平台关联 | 原 operation_id,适用时另保存平台媒体任务 ID |
| 恢复状态 | 执行、资金、产品结果保存分别保存;持久租约、重试时间和安全错误 |
| 业务摘要 | 原 activity grant、稳定 event ID、对象版本和 outbox 回执 |
网络重连或 Worker 接管沿用原 Attempt、payload 与幂等身份;用户明确发起新的生成才建立新业务尝试和新的调用身份。领域 requestId、HTTP 追踪请求 ID、平台操作 ID 和供应任务 ID 分开记录。
Drama 当前 Run 状态为 planning/running/paused/completed/failed/cancelled,Task 状态为 ready/running/completed/failed/cancelled;与平台执行状态和业务摘要状态分别映射,不统一改成同一个枚举。平台多个标识最大 128 字符,Drama 部分原型标识允许 160 字符;适配时用稳定映射并保存原编号,不能静默截断造成碰撞。
文本原结果接口
| 路径 | 授权及行为 |
|---|---|
GET /api/platform/v1/operations/{id}/relay/attempt | 产品 operation:read;查询原尝试元数据,不返回正文 |
POST /api/platform/v1/operations/{id}/relay/recover | 产品 operation:result;核对原检查点/可信回执,恢复原操作,不重新生成 |
GET /api/platform/v1/operations/{id}/relay/result | 本人当前会话加 operation:read;读取已保存原文本结果 |
POST /api/platform/v1/operations/{id}/relay/result/reconcile | 无会话 Worker 加 operation:result;绑定原业务任务和原幂等键读取 |
Worker reconcile 的请求:
{
"business_task_id": "drama-task-0001",
"idempotency_key": "drama-call-0001"
}该请求不能携带平台会话 Cookie,也不能含 user_id 等用户选择字段。读结果的 reconcile 不执行生成、结算、释放或退款;需要核对执行或资金时使用对应原操作恢复接口,两者职责分开。
结果在 data 中分别给出 execution_state、funds_state、result_state、status、ready。ready=true 才读取 response;当前 schema 包含原生 Chat、Responses、Claude、Gemini JSON 或完整已存 SSE 的表达,实际可读组合仍须核对部署版本。pending、unknown 可返回 HTTP 202;unsupported、unavailable 或正文不完整不得当成空文本成功。
Platform 的 result_state=saved 只表示平台保存了原结果,Drama 仍须记录自己的解析、素材或文档保存状态。成功结果保存失败时,Worker 读取原结果并幂等登记,保持原输入指纹与费用。
| 故障 | 正确动作 |
|---|---|
| 收到原 operation,但响应正文丢失 | 查原操作与原结果,不发起新调用 |
| 原 operation 尚未收到或未持久化 | 按已验证文本链路持久 envelope 走正式受限 locator;未交接媒体定位时保持 UNKNOWN,不能以列表空或 404 判断未生成 |
| 流断开或实际用量未知 | 进入待核对,保持原调用身份,不按零费用或失败重发 |
| Worker 重启或租约到期 | 接管原任务,查询原事实;租约过期不证明供应未执行 |
| 生成成功但产品保存失败 | 仅恢复原结果获取、校验、保存和登记 |
| 发起前余额或权益不足 | 展示 Platform 返回的不足原因,不提交新调用,不要求用户填写 Run 金额预算 |
| 运行中余额或权益不足 | 暂停并保留已有结果;补足后由用户继续原 Run,Platform 再次核验,UNKNOWN 不自动重发 |
| 用户退出登录 | 结束浏览器登录与私密读取,不影响已取得 Run 授权的执行与扣费;只有原请求凭证的 Worker 仍只能恢复,重新登录后读取结果 |
| 角色撤销或账号停用 | 产品访问被撤销或账号停用时阻止新执行;原请求只按授权核对和恢复,私密内容读取重新核权限 |
| 页面停止等待 | 只终止 HTTP 等待;停止 Run 和中断文本使用正式命令;图像、视频任务不可取消,已提交任务继续结算并保存 |
图片视频和共用媒体
平台媒体接口现状
当前平台媒体契约源是 docs/openapi/platform-media.fragment.json,已合入 platform.json:
| 当前入口 | 主体 | 能力与边界 |
|---|---|---|
/v1/platform/media/tasks | 用户 API Key | 客户媒体创建、状态、原请求关联、refresh 与输出读取 |
/api/platform/v1/media/tasks | 当前会话加本人 key_id | Console/Playground 媒体主体;不能当作 Drama 产品委托 |
/api/platform/v1/products/{product}/media/consumption-preview | 当前会话加产品 model:invoke | 可信产品媒体资源预检;不创建或授权生成任务 |
媒体主资源下包含 GET /requests/{request_id}、GET /{id}、POST /{id}/refresh 和 GET /{id}/outputs/{index}。GET 状态只读,refresh 查询原供应任务并恢复适用的原结算,不能新增生成。
Drama 的完整产品媒体提交、查询、结果读取和无会话恢复委托仍须交接。 现有客户接口不具备同样的产品主体和来源语义,不能绕到用户 Key 路径替代。当前真实媒体供给与可信计量/恢复仍有门槛,图片、音频各能力按单独验收开放;价格可见或预检成功不等于生成可用。
P1 要交接两种入口:当前用户调用凭据支持提交、按原请求找回、读取、refresh 和按序号读输出;只持原请求凭证的无会话 Worker 只能定位/核对原任务和读取原输出。复用现有媒体服务、原价格快照、唯一账务和恢复;不提供媒体取消接口或按钮。P1 未就绪只完成共享文本与 Drama 文档/分镜,视频段候选及选择下载等待交接。
当前媒体请求包含 request_id、精确 model、model_type、input、usage_budget 和 expected_price_version。input 已定义 prompt/specifications,但尚无完整参考资产、首尾帧或角色图契约;这些是 Drama 资产驱动生产的实际依赖,须随产品媒体委托补齐。平台状态响应通过原 operation_id 联查,outputs 当前提供 index/mime_type,由受限输出接口读取字节;产品不保存供应 URL 作为永久身份。
Drama 先保留生产媒体端口、任务快照和结果登记边界,并明确不可用状态。现有本地视频生成器具有测试媒体、音轨、尺寸、时长和 local provenance 约束;不能换一个外部 URL 就宣布生产适配完成。
长期素材的处理
- 产品服务端确认用户、产品、项目及上传资格,创建受限上传记录。浏览器不持有存储长期密钥。
- 上传完成后校验媒体类型、字节、尺寸/时长、存储引用和来源,再登记素材版本。未完成校验的上传不是可用资产。
- 模型参考输入使用受限引用或该协议支持的受控媒体内容,不把存储密钥交给平台、网关或供应商。
- 平台生成成功后,产品共用媒体模块获取原输出并登记长期素材,保存稳定引用、原任务、输入指纹与候选关联。
- 保存失败只恢复同一个输出的读取与登记。是否复制物理对象、保存期限、原输出定位和部分成功计量以正式交接为准;供应临时 URL 不能充当永久资产。
- 播放、下载和重新签发短期链接都重新校验作用域。删除业务引用、物理对象和停止 Run 分别处理,图像、视频任务不可取消;仍被候选、作品或在途任务引用的媒体不能提前清理。
产品视频输出遵循漫剧标准:结果先登记候选,正式选择由用户完成;下载原媒体后在剪映等外部工具剪辑。网关完成、平台结算、素材保存和用户选中分别表达,不能合并成一个“成功”。
全域摘要和可靠业务事件
Drama 保留项目和素材权威,Platform 聚合全域使用与消费。产品业务事务同时写入 outbox,Worker 获得平台持久回执后确认投递;断线、重启、重复或乱序投递不新增生成和资金动作。
| 接口 | 用途与鉴权 |
|---|---|
POST /api/platform/v1/activity-grants | 当前用户授权加产品 activity:write,建立原业务任务摘要授权 |
POST /api/platform/v1/activity-grants/reconcile | 无会话后台按持久父 grant 建立受限子摘要授权,不授权新收费模型调用 |
POST /api/platform/v1/activity-events | 当前用户授权加产品 activity:write,提交业务摘要 |
POST /api/platform/v1/activity-events/reconcile | 无会话后台沿原 grant/操作投递事件 |
GET /api/platform/v1/product/records | 当前会话加产品 activity:read;服务端固定本产品,不使用可移除筛选器冒充隔离 |
当前事件基本字段是 event_id、business_task_id、activity_type、state、version、occurred_at;可关联 parent_run_id、activity_grant_id、真实 operation_ids、产品 source_call_ids 和 result_count。类型目前为 agent_run、generation、upload、import、save,不能自行新增 export 等枚举;导出可先保留本域审计,平台摘要扩展按契约交接。
occurred_at 使用 Unix 秒,version 单调增加。source_call_ids 是原 Run/Attempt 等产品编号,不是收费操作;没有真实平台模型操作的上传和保存不得伪造 operation_ids。摘要授权不是模型执行授权,后台多步 Agent 的下一次付费调用需要单独的正式授权依据。
平台按可信产品和 event ID 去重,再按对象版本更新。重复回执中的 adopted=false 要结合原事件身份与回读处理,不自动等于失败。后台发送前重验当前允许的产品凭据与原可信 admission,outbox 不保存 Cookie 或产品 Key。
一次 Agent Run 可以有规划、优化、生成多个模型操作,但仍是一条父业务任务。业务任务数、模型调用数、结果数量、标准价、实际积分支出和次数权益核销分别展示;费用未知不填零,读取失败不显示“未使用”。剧本正文、完整提示词、聊天记录、密钥和私密签名 URL 不进入全域摘要。
订阅资源和产品运营
三产品可以保留自己的套餐、活动、本域用量和后台运营页面。商品版本、订单、支付、履约、权益以及资金事实仍由 Platform 统一持有,产品不复制一份余额、订单或资源库存。
| 维度 | 含义 | 示例 |
|---|---|---|
owner_product | 谁运营商品或活动 | Drama 专项包归 drama |
sales_surface | 从哪个入口购买或参与 | 用户可能从 Console 购买 |
| 权益适用范围 | 可以在哪些产品、模型、规格消费 | Drama 专项或明确发布的跨产品共享额度 |
operation.product | 实际消费发生在哪里 | 在 Drama 生成时归 drama |
当前产品商业路由使用 /api/platform/v1/products/{product},产品路径必须与凭据作用域一致:
| 路由后缀 | 当前用途 | 产品动作 |
|---|---|---|
GET /subscriptions/templates | 当前可售模板 | subscriptions:read |
POST /subscriptions/quote | 原商品版本报价 | subscription:create |
POST /subscriptions/orders | 创建或回读原订单 | subscription:create |
GET /me/subscriptions | 本人本产品运营归属的订阅 | subscriptions:read |
GET /admin/subscriptions/records | 本域订阅记录 | entitlements:read,另核员工动作及归属 |
GET/POST /admin/subscriptions/templates | 本域模板查询与 CAS 保存 | subscriptions:read/write,另核员工动作 |
POST /admin/subscriptions/templates/{id}/publish、/pause | 本域发布与暂停 | subscriptions:write,另核员工动作及 Origin |
产品订阅列表按运营 owner 过滤,不等于所有 Drama 可用资源:其他产品运营的共享订阅可能也适用 Drama,需另有最小适用资源投影,不把外域完整订单带进来。共享余额可以明确展示为全域值,本域消费必须调用受限本域查询。
只读消费预检不冻结资金,也不是执行许可;真正调用由 Platform 自动选择当时适用资源并重新原子核验。钱包不足时可能仍有适用次数或订阅资源,不用本地余额直接拒绝。发起前资源不足提示,运行中不足暂停并保留创作上下文和已有结果,按获准商品或 Console 充值入口补量后由用户继续原 Run;不自动重发 UNKNOWN。通用用量订阅、专项资源和功能资格分别展示,未验功能不能当会员权益售卖。
支付回跳不证明到账,支付成功不证明权益已交付;未知订单沿原订单查询,产品不重建第二订单。首期人工售后、现金退款和积分调整按平台规则分别办理。完整规则见产品运营和商业整体方案。
共享设计和用户界面
Drama 保留标准 1.7.0 已验证的导航、连续文档、资产区、助手和候选选择流程,迁移时逐步采用 OceanWay 的品牌、token、基础组件和状态规范。Studio 当前组件库与 Drama 原型不同,共享技术栈不要求立即重做全部页面。
设计源是 Design 仓库与工程设计规范。新公共 UI 按已确认的 shadcn/OceanWay 规范组织,同工程复用;跨仓采用明确版本制品,不直接引用本机 Design 相对源码。保留正式 Logo,不另建主题 token 权威。Design 内个别 Drama 页面仍保留独立项目描述,其视觉内容可参考,部署架构以现行合仓决策为准。
Design 当前 @oceanway/design-tokens 与 @oceanway/ui 两包仍为 private=true、版本 0.0.0,发布脚本阻断直接发布,不能当作已可安装的正式跨仓依赖。已有 OceanWorkspaceShell、素材/媒体浏览器、Agent 会话、OceanDramaEditor 和分镜卡片可评估复用,生成状态机和持久化仍由产品实现。采用前需交接版本化制品;Drama 稳定中性生产界面不因共享组件而整体继承 Studio 历史动态背景或材质。
建议先统一平台登录跳转、401/403/服务故障、任务状态、原操作恢复提示、金额单位、媒体授权过期和购买结果组件。加载、空数据、未支持、无权限、资源不足、部分成功、执行未知、可恢复保存失败、Run 停止中/已停止与结果过期要能区分;未支持不能呈现成零数据,不提供图像/视频取消。
开发时需要保留的公共端口
以下是产品工程内部的职责设计建议,不是已经发布的 HTTP 路由或可直接复制的 DTO。优先整理已有实现,避免为三个产品各写一套。
| 公共端口 | 输入和输出职责 | 现在的处理 |
|---|---|---|
| 身份上下文 | 可信 Host、平台会话、平台用户映射、当前作用域和权限 | 复用 Studio shared/platform,补对象和部署验证 |
| 模型目录 | 精确模型、能力、规格、价格与可用状态 | 读取平台投影;缺产品能力明确关闭 |
| 文本执行与恢复 | 原业务请求、原幂等身份、原 operation、原生结果 | 复用已验证非流式产品 Responses 和原请求定位/恢复;工具/参考图/流式/中断等 P3 |
| 媒体执行与恢复 | 固定输入快照、产品委托、任务状态和原输出 | 等 P1;不迁原型测试 Provider,不实现媒体取消 |
| Agent 与 Run 授权 | 配置、标准工具循环、授权编号、Platform 资源不足原因、暂停/继续、停止与事件流 | Drama 第一份配置;不提供 Run 金额预算,真实执行等 P2/P3,当前只做不付费的准备 |
| 业务任务仓库 | Run/Task/Attempt、状态、租约、冲突、幂等回执 | 提取通用机制,Drama 状态规则留本域 |
| 媒体仓库 | 上传、版本、授权、来源、引用、长期保存 | 同工程共用实现,每次调用保留产品与对象范围 |
| 文档内核 | 完整文档、范围、序列化和指纹 | 迁入已验证 manju-document 行为,不迁入旧平台归属 |
| 事件投递 | 事务 outbox、grant、版本、回执与重投 | 复用已实现机制并验真实事务,不能旁路业务事务 |
| 资源与商业客户端 | 本域与适用资源投影、原商品/订单、获准运营 | 使用正式受限接口;缺适用资源和活动能力须明确未支持 |
| 产品内部 Handoff | 来源产品、项目、素材、输入版本、返回目标和用户授权 | 先落实同工程 Canvas;跨产品共享须显式授权与引用 |
三产品后端使用同一平台客户端,允许每个产品独立的凭据、Host 映射和动作白名单。新增产品不应修改资金算法;接入新模型由 Platform/网关维护,产品只消费已发布能力。新产品共享素材、跨产品 Handoff 或增加业务事件类型,需要正式权限和兼容契约,不能靠“同仓”自动开放。
当前接口交接缺口
以下缺口影响实际开发,沿既有平台任务处理。实现中留出适配位置,缺口解决前不要建立替代认证、钱包或直连模型路径。
| 缺口 | 对 Drama 的影响 | 接收条件与既有追踪 |
|---|---|---|
| 实际 Cookie、域名、返回目标和部署版本 | 平台已登录仍可能无法识别产品用户 | 固定运行配置,登录返回、退出/切号、撤销及跨域具名通过;T-04/13 |
| P1 产品媒体委托与可信供应事实 | 图片/视频真实执行和 Worker 获取原结果尚不能按产品链路承诺 | 当前会话加产品凭据提交/原请求定位/读取/refresh/按序号输出;原凭证 Worker 只核对和读取;唯一账务、UNKNOWN 不重发、不取消;T-06/G-07/13 |
| P2 Run 授权与自动资源核对 | 当前没有独立于会话的后台下一次付费调用依据,Agent 真实执行阻塞,仍待实现 | Platform 内部签发/读取/停止及继续原 Run;授权限定主体/产品/Run/动作/模型/有效期/并发,不绑定首发库存或独立金额预算;Platform 逐调用自动选择适用资源并按现行预留/结算核对,不足返回原因/暂停保留结果,补足后用户继续;Console 进行中 Run/Platform 实际费用/状态/停止入口,UNKNOWN 原调用占用;T-04/05/06/07/08/13 |
| P3 产品 Responses 支持 Agent | 当前纯文本、非流式、无 tools,不能实现标准工具循环与文本中断 | tools/tool_choice/函数结果、参考图片、流式和正式文本中断;P3 未就绪已发文本完整执行计费,停止只阻止后续调用;T-06/07/13 |
| 原 operation 丢失时受限定位 | 已验证文本 locator 可复用;媒体和 Drama 新领域的接线仍需联验 | 原业务任务/幂等 envelope 不可变,拒绝跨用户/产品、不重新派发;T-04/06/13.5 |
| 产品适用资源投影与文本预检 | owner 订阅列表无法表达其他来源但 Drama 可用的共享额度 | 返回最小适用资源与窗口,实际预留重新核验,不泄露外域完整订单;T-12/13 |
| 专属活动和本域经营聚合 | 不宜照搬全域邀请和 Console 全域列表 | 正式本域活动/资格/领取/回执及聚合接口,四维归属、去重和权限验收;T-11/13 |
| 公共运行模块与对象存储交接 | Studio 旧任务可能仍依赖本地认证/积分,测试媒体不能作生产结果 | 明确旧依赖退出、真实 PostgreSQL 事务、对象授权、保留和保存恢复;产品阶段 AC-16 |
| 设计包正式制品 | 现有 UI/token 包尚不是可安装的跨仓版本 | 明确发行、许可、版本与来源指纹;合仓内共用组件和 Design 规范各保留唯一源 |
请求字段和响应需要对齐的项目
2026-10-13 工作树核对发现以下偏差,应在正式交接时同时修正 OpenAPI、实际解码、生成类型与 HTTP 测试;本节不改变产品需求。
| 位置 | 当前偏差 | Drama 接入约束 |
|---|---|---|
RelayRequest | OpenAPI 列有 temperature、top_p、惩罚参数、seed、stop、user、max_completion_tokens;产品请求 Go 类型将这些字段标为 json:"-",严格解码拒绝 | 最小闭环暂只发送上文共同支持字段,不宣布这些参数已开放 |
产品 Relay 的 billing_preference | Go 解码字段存在,当前 RelayRequest OpenAPI 未声明 | 按实际单次调用契约对齐,不扩散为 Run 付费偏好表单;新 Agent 由 Platform 自动选择资源,普通 Platform 单次调用既有设置保持 |
CreateOperation.billing_preference | OpenAPI 声明,但非模型创建控制器未解码该字段 | 不把此字段传进当前非模型最小请求;平台补齐或修正契约 |
| 产品文本响应 | 首次可为原生 JSON/SSE,回读可为操作对象,未知为 202;不是单一成功 envelope | 客户端分别解析,并持久保存响应头原 operation;部署版本逐项验证 |
| 原文本结果多协议与 SSE | 当前 schema 和本地实现已有扩展,历史非流式 Chat 证据范围较窄 | 验当前产品 HTTP 与部署组合,不把旧单协议证据扩大 |
现行源码依据是 Platform service/platform_relay.go、controller/platform_relay.go、controller/platform_operations.go、controller/platform_original_text_result.go 与 docs/openapi/platform.json。偏差被修正后更新本节,不维持永久例外或让产品绕过严格解码。
分批开发和验收
| 批次 | Drama 与共用层交付 | 平台接口及完成条件 |
|---|---|---|
| 1 身份和对象 | 建立 shared/platform 与任务/媒体公共端口;迁入入口、最小创作资料映射、服务端 ProductContext;项目/文档/素材/任务逐对象校验 | 实际会话、Origin、Host、产品凭据及动作固定;跨用户/产品、撤权、切号、未知 Host 拒绝 |
| 2 单次文本和原结果 | 显式单次生成分镜草稿,原输入和任务持久化,原 operation 保存,原结果进入候选 | 当前非流式产品 Responses 适用型号;一次派发和一次账务;响应丢失、Worker 重启及保存失败恢复 |
| 3 本域记录和摘要 | 领域事务与 outbox 同提交;稳定 grant/event/version,父任务与真实操作联查 | Drama 本域和 Console 全域同任务同费用;重复、乱序、离线重投不多计数或记账 |
| 4 生产媒体 | 共用上传、视频段与原媒体任务、长期保存、候选登记,再交付用户选择与下载 | P1 和供给已交接;UNKNOWN 不重发、不取消,页面关闭/退出后继续结算保存,过期链接重授权,部分成功及保存恢复 |
| 5 Drama Agent | 第一份产品 Agent 配置,标准工具循环、候选和确认写回 | P2/P3 交接后才接真实调用;发起前不足提示/运行中不足暂停保留/补足后继续原 Run、退出继续/停止无新调用、在途媒体完成保存、UNKNOWN 原调用占用及注入/越权测试 |
| 后续 资源购买和运营 | 可用资源、本域订阅、原订单、活动及本域后台;通用 UI 复用 | 平台商业权威、当前员工动作、原单一次履约、跨产品共享资源竞争和撤权验证 |
| 后续 Commerce、Studio 与旧权威退出 | Drama 完成后 Commerce 使用单工具配置,随后 Studio chat/画布迁入;旧目录移动单独纯移动切片 | 删除旧 Commerce BFF、Agent 和本地权威;同一请求不能新旧双写、双扣或双履约;原型仓库完成迁移后归档 |
每批关联现有 PL/T/AC 的具名子项,记录实际部署/契约版本、通过场景和剩余范围。父任务不因一个切片完成而整体关闭。保留漫剧标准中的完整文档、用户选择候选和下载流程,平台接入不得改掉原业务要求。
最低联验包含:同用户 API 与 Drama 共用钱包、一次请求重复提交不重复执行、流或响应中断不重新付费、未知操作只核对、跨用户/产品拒绝、撤权后不新执行、生成成功但保存失败可恢复、事件事务回滚不漏发/多发、重复乱序不回退版本、媒体下载字节/来源可核对、仍被引用对象不提前删除。
交接材料与规范入口
给 Drama 开发者的每次接口交接至少包括:平台 API Origin 与部署版本、Cookie/域名与受控返回方案、Drama Host/Origin 和凭据动作、不可变 OpenAPI 制品及 SHA-256、实际开放模型/协议/规格、原调用与恢复示例、错误和未知处理、具名联验结果。Secret 通过受控配置交付,不进入本文、契约包或日志。
2026-10-13本机核对:Studio接入桥、业务事件及Commerce共享BFF已固化为本地提交 e18d1e6;Drama、Commerce仓库仍有未提交开发增量,不能只用各自Git HEAD表示本次接口内容。当前代码可供设计和联调,但本地提交不证明正式部署;对外接入需要固定契约制品和实际部署版本,转发快照通过manifest表达来源与指纹,不当作发布承诺。
| 主题 | 唯一正文或实现入口 |
|---|---|
| 总体决定和边界 | 现行决策、总体架构 |
| 平台产品与接口语义 | 核心 PRD、平台 API、接口设计 |
| 身份和商业 | 身份、钱包、权益、产品运营 |
| 三产品公共能力 | 共用任务与媒体、Studio 平台对接 |
| Drama 产品行为 | 标准 1.7.0、技术接入 |
| 设计复用 | 工程设计规范、Design 仓库 |
| 接口与真实注册 | Platform docs/openapi/platform.json 及相关 fragment,router/platform-router.go、router/platform-commerce-router.go、controller/platform_usage_records.go、controller/platform_media.go |
| 原型行为与增量 | Drama packages/manju-document、packages/manju-service/src/lib/server/、验收状态;旧 Core/Contracts 归属按现行决策替换 |
| 缺口和证据 | 平台任务、追踪、缺口、证据 |
现有 Drama docs/handoff.md、原型接入说明及部分 Design 页面保留了重建前的 Core/Contracts、平台 Project/IAM 或独立项目描述。采用其中的交互、版本和可靠提交行为时,领域归属与部署拓扑按本页链接的现行规则;不恢复已冻结的多仓平台方案。