历史 · 交付路线图与决策记录
重构前档案,仅供追溯,不作为新版本执行指令
历史档案 · 2026-09-11 重构前快照。 本文中的“当前”“已冻结”和实施顺序属于旧基线。新版本以现行总览和实施计划为准。
OceanWay 不应同时重写所有产品。本路线图同时描述“当前核心链路门禁”和“长期产品能力工作流”,两者不能混为同一条发布时间线:当前工程必须按固定门禁接通最小文本链路;身份、产品与企业能力可以并行设计,但不能越过核心门禁提前建立第二套 Run、账本、资产或模型事实源。
本页继续维护跨产品的长期能力路线和架构决策;已经正式拆出的多仓工作包、仓库依赖和发布证据规范见仓库实施计划。两者的固定关键路径必须一致,仓库页不得自行改变本页的不变量。
当前能力与目标差距
| 领域 | 当前实现基础 | 目标差距 |
|---|---|---|
| 站点 | 公共站、OceanWay Studio、AI 三个 Host 的独立 Surface 与跳转候选 | 上线 console.oceanway.tech、生产 DNS/TLS 验收与后续产品入口 |
| 身份 | 全局用户与 Session | Organization、Membership、Workspace、Project、Service Account、SSO |
| 模型 | 逻辑模型、渠道、web/api/internal 三类发布 Surface 与独立未发布状态 | Model Offering 生命周期、Family、数据政策与弃用契约 |
| 网关 | pic-vps 上的 UUMI/new-api 文本链路,以及已有 oceanway-media-gateway 实现基础 | 完成两个同级 Pool 的内部契约、工作负载身份、统一 Trace/成本与生产切流验收 |
| API | 旧 oceanway-vozeb 能力仍待迁移;独立 Contracts/API Edge/Core 的 V1 受控 Admission 基线已经验收 | Outbox Publisher 与 Ops Explorer 设计已冻结、运行时待实施;其后再推进 Metering/Settlement、Gateway 执行和 Console /ai 迁移,分布式限流、完整追踪和公网压测通过前不切公开流量 |
| 运维事件 | Core 已有事务 Outbox、run.created@1.0、wallet.reserved@1.0 与基础 Receipt 表 | 依照 ADR-030 配对发布 run.created@2.0 + wallet.reserved@2.0、可靠 Dispatcher、版本化投影、Observation Intake、私有 Query 与首版 Run Explorer |
| 钱包 | 精确积分批次、权益、预占、结算和账本候选 | Billing Account 所有权、组织预算、席位与企业合同 |
| 资产 | 稳定资产 ID、媒体登记和引用保护 | Workspace 所有权、Revision、Resource Registry 与 Asset Graph |
| Agent | Agent Run、子任务、SSE 恢复与项目交接基础 | Agent Revision、Run Principal、Execution Manifest、统一 Handoff |
| Canvas | 服务端项目、节点与生成链 | 共享 Canvas Runtime、Binding、固定 Revision 与产品嵌入 |
| MCP | 尚无完整领域 | Connector、Connection、Vault、Tool Grant、Gateway 与审批 |
| 内部管理 | 现有 /admin、生成运维、调用记录、财务对账、权限与 Audit API | admin.oceanway.tech、Workforce Session、全局检索、Error/Incident、统一对账与受控命令 |
| 企业治理 | 当前用户角色与审计基础 | 企业角色、成员撤权、策略、SSO/SCIM、DLP 与客户侧审计 |
“当前实现基础”包含仓库候选和明确标注的受控验收结果,不等于生产环境、真实上游或商业运营已经正式验收。
当前实施位置:受控准入已验收
- Contracts
0.2.0已由提交ce323954固定发布。 - Core 提交
f9e55b6的独立 CI Run33777925718与 API Edge 提交f97cf5f的独立 CI Run33774539995均已通过。 - Infrastructure 提交
e72e5f3固定了 gate 源提交9cc3c9c,正式证据为evidence/controlled-admission-e2e-9cc3c9c49b16-f9e55b6e56e4-f97cf5f27027.json。 - 该跨服务证据验证的是固定 Contracts Release、真实 HTTPS JWKS/RS256 Workload JWT、Edge/Core Socket HTTP 与独立 PostgreSQL 下的受控准入:默认关闭、
202/reserved、并发同请求收敛、幂等冲突、主要信任边界拒绝、Trace/持久化关联与 Secret 不进入响应或服务日志。事务回滚和更多领域拒绝分支由 Core 自身 PostgreSQL 集成测试覆盖。
当前工程阶段正式进入 Outbox Publisher(Core 组件名为 Dispatcher)与 Ops Explorer。其设计已由 ADR-030 和运维事件与读模型冻结,代码、固定 Contracts Release 与跨进程验收仍待实施。公网继续保持 PUBLIC_ADMISSION_MODE=disabled;Gateway 模型输出、Outbox 正式发布、Metering 和 Settlement 均未完成,因此该验收不能解释为端到端执行链或公开 API 已上线。
当前核心链路的固定实施顺序
该顺序与下一阶段保持一致,是当前实现的发布门禁,不是建议列表:
| 门禁 | 当前状态 | 通过后才能进入 |
|---|---|---|
| API Edge 受控准入 | 已通过;公网仍关闭 | Outbox/Ops 运行时实现 |
| Outbox Publisher + Ops Explorer | 设计已冻结,代码与跨进程证据待完成 | Metering/Settlement |
| Metering + Settlement | 目标契约已冻结,运行时待实现 | Text Gateway canary |
| Text Gateway canary | 待实现;固定一个 Organization、credits、Offering 与 Provider 路径 | 正式 Asset 登记 |
| Asset | 待实现 | Console /ai 与 Studio Writer 切换 |
| Console/Studio cutover | 待实现 | 扩大产品、租户与模型范围 |
Media Gateway 正式执行、图片/视频产品迁移、Canvas Runtime、完整 Agent/MCP、Drama、Commerce 与 FDE 均在最小文本链路通过后复用同一骨架扩展。现有 Media Gateway 实现基础可以并行整理,但不能让媒体执行先于 Text Gateway canary 进入 Core,也不能据此绕过 Metering/Settlement 门禁。
并行产品能力工作流
以下 W0–W7 描述长期产品与平台能力的依赖,不替代上面的当前核心实施顺序。某项工作可以并行完成需求、契约或迁移盘点;一旦涉及生产 Writer、客户费用、正式 Run 或 Asset,就必须等待对应核心门禁通过。
管理员与运维不是 W8,也不是业务功能全部完成后再补的大屏。ID、错误、审计和读模型从 W0 开始;独立 Admin Surface 在 W1 建立;统一 Run 后完成只读诊断;告警、Incident 和写命令再按证据逐步开放。
W0:冻结核心契约
在新增组织表和新工作台前完成:
- 统一术语与 ID 规则;
- 冻结
requestId、traceId、correlationId、operationId和领域稳定 ID 的不同语义; - Organization、Workspace、共享 Project 外壳;
- Resource Envelope、Revision 与 Relation;
- Run 状态机、Step、Attempt、RunAdmissionManifest 与每次 Attempt 的 AttemptExecutionManifest;
- Gateway Deployment、Execution Route、不可变
ProviderUsageEvidence/ProviderCostEvidence与 source ref,以及 Metering 独占的规范MeterEvent/ProviderCostFact; - OceanWay
Execution Attempt ↔ AttemptRouteBinding ↔ GatewayRouteSnapshot ↔ Provider Evidence契约;同一 Attempt 不换路,Operational Observation 只引用 Binding/Evidence,不生成 Fact 或驱动结算;Provider Task、Supply、Credential Version 和可选 Callback Receipt 保持网关内部私有; - 统一 Error Envelope、提交确定性、Gateway Diagnostic Observation 和 Telemetry 脱敏契约;
- 冻结 Public API Edge 的 22/43 字符 DeveloperCredential Grammar、强制幂等、
apiVersion="v1"、验证快照、工作负载身份,以及 flat 成功/nested 错误契约; - Billing Account、Meter Event、预算和账本边界;
- 领域事件信封、版本和幂等规则;
- Append-time Delivery Set、Applied Receipt、无标量连续游标的 Projection Progress、Operational Observation 与 Workforce Query Grant 边界;
- 权限 Scope、数据分类、MCP 风险级别;
- ADR 模板和架构 Owner。
- Admin Query 与 Admin Command 边界、Audit 和危险动作职责分离。
退出门禁:核心实体、状态机和不变量经产品、研发、财务与安全共同确认;不得由单个页面实现反向决定平台契约。
W1:统一身份与控制面
- 为现有用户创建个人空间、默认 Workspace 和 Billing Account。
- 引入 Enterprise Organization、Membership、Invitation、Workspace 与 Project。
- 建立统一应用启动器和组织/Workspace/Project 上下文。
- 建立
console.oceanway.tech客户控制层 Surface,作为应用、上下文、购买、治理和 FDE 私有交付的统一大厅。 - 在 Console 中建立可切换的 Developer 专业空间,复用全局组织上下文但使用独立的开发者任务导航。
- 所有新 API 解析统一 Request Context。
- 资产、任务和钱包页面始终展示所有者、付款方和产物归属。
- 保留当前客户站点登录能力,将 Console 接入同一 Customer Identity,并确定集中 IdP 的演进方案。
- 将
oceanway-vozeb固定为 OceanWay Studio 基座,停止新增归属 OceanWay Studio Host 的开发者产品能力。 - 将现有
/admin作为迁移基座映射到admin.oceanway.tech,建立独立 Workforce Client、Audience 与 Host-only Session。 - 企业客户管理员继续使用客户身份和 Organization 权限,不能换取内部后台 Session。
退出门禁:同一用户可在个人空间与两个企业组织间切换;任何列表、深链接、Run 和账本均无跨组织泄漏。
W2:计费账户与开发者身份
- 把现有“用户积分账户”泛化为 Billing Account。
- 现有个人余额、权益、订单和流水映射到个人 Billing Account。
- 增加 Workspace/Project/Member/Product/Agent/API 预算。
- 引入 Developer App、Environment 和 Service Account。
- 个人用户自动创建 Personal Space、默认 Developer App、
developmentEnvironment 与受限 Service Account;所有 Key 都作为 Credential 挂在该资源链上。 - 首个 API Edge 受控准入已按固定契约验收:
POST /v1/responses的 Raw Secret 只到 Edge,Edge 从 Core 读取请求级验证快照并本地 constant-time 校验,随后以apiVersion="v1"和短期 Workload JWT 调用 Core;Credential ID 是不可变版本身份,轮换创建新 ID 并撤销旧 ID。在真实执行和结算闭环前不开放公网。 - 将公开模型、文档、价格、状态和更新日志迁到
ai.oceanway.tech;将 Apps、Environment、Service Account、Credential、Playground、API 用量、请求日志与 Webhook 迁到console.oceanway.tech/ai;将机器调用迁到api.oceanway.tech/v1。 - 在
console.oceanway.tech完成统一购买中心、订阅授权和产品内升级回跳。
退出门禁:网页与 API 使用同一付款账户但不同认证方式;企业余额不足不会改扣个人余额;成员离职不破坏企业生产 Key。
W3:资源图与统一执行
- 建立 Resource Registry、AssetVersion、Relation 与权限感知索引。
- 为现有媒体、创作资产、Canvas 与生成记录补充 Workspace 所有权和稳定 Revision。
- 将现有 Agent/生成任务映射到统一 Run、Step、Attempt 与 RunOutput。
- 引入 RunAdmissionManifest、AttemptExecutionManifest、AttemptRouteBinding、GatewayRouteSnapshot、Transactional Outbox,以及 Request/Trace/Correlation/Operation 与领域 ID 协同关联。
- 先完成 PostgreSQL Outbox Dispatcher、Append-time Delivery Set、Applied Receipt、版本化 Operations Read Model、低敏 Observation Intake 和只读 Run Explorer;首期不引入外部 Broker,不用全局标量 Position 假装连续水位。
- 先按固定核心门禁完成 Metering/Settlement 与 Text Gateway canary,再登记首个正式 Asset;只有该链路通过后,才接入独立
oceanway-media-gateway,通过不透明gatewayTaskId验证提交幂等、原任务查询、冻结 Credential Version、未知状态对账和结果获取。其 Registry、Poller/Reconciler 与未来可选 Callback 均为网关内部模块。 - 建立开发者异步查询、正式 Asset 登记,以及
202/queued保持预占的闭环;终态按具结算资格的 canonical MeterEvent 计算目标净额,只有BillingFinalizationDecision封闭完整 Attempt×Charge Dimension 集合后才结算或释放,ProviderCostFact 不单独触发客户扣款。 - 泛化现有
projectHandoff为跨产品 Handoff。 - 全局任务中心读取统一 Run 投影。
- 建立只读 Operational Read Model、全局 ID 检索、Run Explorer、Error Fingerprint,以及 Text/Media Pool 独立健康视图。
退出门禁:先证明一次 API 文本 canary 可以从输入版本、模型部署、Run、费用到输出 Asset 完整还原;随后启用媒体时复用同一门禁,证明网页或 API 媒体生成在重放和重试下不会重复扣费或创建结果。
W4:Canvas、Agent 与 MCP 组合
- 从 OceanWay Studio 的无限画布工具中明确抽取共享 Canvas Runtime 契约。
- 建立 Agent、Agent Revision、Deployment 与“运行/查看定义”分离权限。
- 建设 MCP Connector、Connection、Credential、Tool Version、Tool Grant 与 Gateway。
- 建立 Context Package 和显式 Return Binding。
- 为外部发布、调价、删除和财务操作增加审批 Step。
- 允许 OceanWay Agent 以最小权限调用模型和 MCP。
退出门禁:Canvas/Agent 分享不泄露 Secret;撤销 MCP Connection 后新 Run 立即失败;高风险外部写操作可审批、幂等和审计。
W5:漫剧与电商接入
- 漫剧保留 Episode、Scene、Shot、Review 与 Composition 私有聚合。
- 电商保留 Product、SKU、Campaign 与 ChannelPublication 私有聚合。
- 两者只通过 Asset、Canvas Binding、Agent Run、MCP 和 Billing 使用共享内核。
- 建立“在 Canvas 打开”“发送回产品”“发布前审批”和全局任务回跳。
- 明确现有
/drama向独立漫剧工作台入口的迁移路径;正式名称、Host 和首期部署方式另行确认。
退出门禁:至少完成一条漫剧端到端链路和一条商品内容到渠道草稿链路,刷新、失败、重试、撤权和费用均可验证。
W6:企业与 FDE
- 企业 SSO、SCIM、Managed Identity 与条件访问。
- 企业席位、授信、合同额度、发票和高级预算。
- 数据外发策略、DLP、数据驻留和客户审计出口。
- FDE Engagement、Delivery Workspace、Milestone、Deliverable 与 Acceptance。
- 落实 FDE 双界面:
oceanway.tech/fde与/cases负责公开展示,Console 负责授权后的私有交付;console.oceanway.tech/delivery仅为首期建议路径,最终路由由 FDE 详细设计确认。 - 限时支持访问、交付移交和项目结束清理。
- CaseStudyRelease 的客户批准、脱敏、指标口径与撤回。
退出门禁:企业成员入职/离职、FDE 工程师临时访问、客户生产移交和公开案例发布均完成演练。
W7:开放生态
在内核运行稳定后再考虑:
- OceanWay MCP Server;
- SDK、CLI、Webhook 与事件订阅;
- Agent、Canvas Template 和 Connector 生态;
- 合作伙伴能力包;
- 市场交易与收益分成。
开放市场不是首期目标。没有版本、权限、计量、审核和下架机制前,不应把 Agent 或 MCP 做成公开市场。
横向管理员与运维交付线
| 阶段 | 交付内容 | 写操作边界 |
|---|---|---|
| A0 契约 | 关联 ID、错误、提交确定性、Gateway Observation、日志脱敏;盘点并冻结全部遗留 Mutation Route | 服务端 default-deny,遗留写入口不部署或拒绝,不能只隐藏按钮 |
| A1 Surface | admin.oceanway.tech、Workforce Session、只读信息架构与明确 Query Route allowlist | 仍不迁移写能力;只有 Domain Command、独立 Workload/Grant、幂等、审批与 Audit 验收后才逐项开放 |
| A2a 准入诊断 | PostgreSQL Outbox、版本化投影、精确 ID 检索与首版 Run Explorer | 只读,时间线严格停在当前可信边界 |
| A2b 运行诊断 | Error Center、Gateway/Asset/Billing 扩展、Audit UI 与运行指挥台 | 只读,不提供通用修复按钮 |
| A3 事故管理 | SLO、Alert、Incident、变更关联、Runbook | 仅开放暂停新调度等最小缓解命令 |
| A4 统一对账 | 执行、结果、资产、Usage 和账务信号;首期仅两种 Billing Reconciliation Case | 幂等领域命令、影响预览、审批与 Audit;新增 Case 来源先过契约准入 |
| A5 规模化 | OpenTelemetry、独立 Logs/Metrics/Trace 后端、容量和成本治理 | 根据真实故障域决定物理拆分 |
这条交付线与业务 Phase 并行推进。完整对象、页面和门禁见管理员平台与运维控制面。
数据演进原则
项目尚未正式上线时,优先直接采用新表和新所有权模型,不为未发布历史写复杂兼容层。需要保留的开发/候选数据按显式映射处理:
| 当前对象 | 目标归属 |
|---|---|
| User | Independent Identity + Personal Space |
| 用户余额与权益 | Personal Billing Account |
| 用户 API Key | Personal Space / 默认 Developer App / Environment / Service Account / Credential |
| Canvas Project | Personal Workspace 下的 CanvasDocument |
| 创作资产与媒体 | Personal Workspace 下的 AssetVersion |
| Agent/生成任务 | Run / Step / Attempt 投影 |
现有 /admin 账号与权限 | Workforce Principal、职责角色、JIT Grant 与迁移映射 |
| 调用记录与生成运维 | 运行记录、Run Explorer、Error Occurrence 与运维读模型 |
| 短剧项目 | Personal Workspace 下的 DramaProject + 共享 Project Binding |
企业数据从启用 Organization 后直接写入新模型。任何回填都需要数量、金额、资源哈希、引用和权限核对;账本不得通过“复制最终余额”替代原始可追溯分录。
架构决策记录
| ADR | 决策 | 状态 |
|---|---|---|
| OW-ADR-001 | oceanway.tech 公共宣传、canvas.oceanway.tech 创作、ai.oceanway.tech 公开开发者入口 | 已确认 |
| OW-ADR-002 | 一个自然人一个全局身份,企业协作使用 Membership | 已确认 |
| OW-ADR-003 | 层级为 Organization → Workspace → Project | 已确认 |
| OW-ADR-004 | Project 是跨产品目标外壳,产品聚合通过 Binding 关联 | 已确认 |
| OW-ADR-005 | 每个个人空间或企业 Organization 一个 Billing Account;Workspace/Project 只配置预算,企业合同额度作为该账户的资金或权益来源,不切换到其他付款账户 | 已确认 |
| OW-ADR-006 | 模型发布目标只有 web、api、internal 三类 Surface;unpublished 是独立发布状态,不是第四个 Surface | 已确认并有实现候选 |
| OW-ADR-007 | 跨产品引用固定 Revision,写回源产品必须显式 | 本文建议,待正式确认 |
| OW-ADR-008 | console.oceanway.tech 作为唯一登录后客户控制平台,承载全局上下文、Developer 专业空间、钱包购买、企业治理与私有交付;首期功能可以分阶段上线 | 已确认 |
| OW-ADR-009 | 父域 Cookie 是过渡方案,目标为集中 IdP + Host-only Session | 待安全与实施评审 |
| OW-ADR-010 | FDE 正式释义为 Forward Deployed Engineering | 待品牌确认 |
| OW-ADR-011 | UUMI/new-api 收敛为 Text Gateway Pool,不承载客户身份、钱包和产品目录 | 已确认 |
| OW-ADR-012 | 私有模型基础设施采用互不级联的 Text Gateway Pool 与 Media Gateway Pool 同级拓扑 | 已确认 |
| OW-ADR-013 | Media Gateway Pool 由独立 oceanway-media-gateway 单服务承载并直连图片/视频 Provider;Adapter、Task/Attempt、Poller/Reconciler、结果处理和可选 Callback 均为内部模块 | 已确认 |
| OW-ADR-014 | Media Gateway 不拥有或提供本地 User、CustomerGroup、DeveloperCredential、公开模型广场、OceanWay 用户售价、钱包、订阅、产品 Run 或正式 Asset;仅验证外部签发给 Workload Principal 的短期 Workload Credential | 已确认 |
| OW-ADR-015 | Gateway 只拥有不可变 ProviderUsageEvidence / ProviderCostEvidence 与 source ref;每个响应及 Gateway Observation 都必须分别返回 usageEvidenceAvailability 与 costEvidenceAvailability 严格判别联合,只有 available 分支携带对应 Evidence Ref/Schema Version/Digest Algorithm Version/Digest完整四元组,其他分支禁止全部 Evidence四元字段;Metering 是规范 MeterEvent / ProviderCostFact 的唯一 Writer,负责规范化、幂等、更正和对账;Observation 不能驱动结算;Provider 账号、Supply、Credential Version 与上游任务细节保持网关内部私有 | 已确认 |
| OW-ADR-016 | admin.oceanway.tech 作为 OceanWay 内部管理员与运维控制面,首期复用现有 OceanWay 管理后台代码基座 | 已确认 |
| OW-ADR-017 | 企业客户管理员与 OceanWay Workforce 使用不同身份、权限和 Session;Admin Host 使用独立 Workforce Client 与 Host-only Session | 已确认 |
| OW-ADR-018 | Admin 采用独立 oceanway-admin 仓库和一个后台外壳,先建设只读诊断;业务事实位于 Core,写操作统一通过 Admin Command Gateway 与领域 Service | 已确认 |
| OW-ADR-019 | requestId、traceId、correlationId/operationId 与领域 ID 各司其职;Telemetry 和运维读模型不作为业务事实源 | 已确认 |
| OW-ADR-020 | FDE 采用“oceanway.tech 公开展示 + Console 私有交付”双界面;私有交付默认不公开,案例只从独立授权快照发布 | 已确认 |
| OW-ADR-021 | oceanway-vozeb 收敛为 OceanWay Studio 代码基座,开发者产品模块完整迁出 OceanWay Studio 构建物 | 已确认 |
| OW-ADR-022 | ai.oceanway.tech 只承载公开开发者中心,api.oceanway.tech/v1 作为唯一公共机器入口 | 已确认 |
| OW-ADR-023 | Developer App → Environment → Service Account → DeveloperCredential 是个人与企业共用的开发者资源链;个人使用自动默认结构 | 已确认 |
| OW-ADR-024 | Console /ai 提供 API-only 用量与调用日志;Console 总览与 Billing 空间提供跨产品账务、钱包与 Run 聚合 | 已确认 |
| OW-ADR-025 | Developer 是一个逻辑产品和独立领域,但其登录后客户控制面并入 Console 的专业空间,不再建设第二套客户后台 | 已确认 |
| OW-ADR-026 | Public API 目标允许 DeveloperCredential 或 Console BFF 持有的 Playground Execution Grant;Service Account 是唯一 API 执行 Principal,Grant 由 Authorization/Policy Token Issuer 签发并保留 Customer User Actor。当前已验收纵切仅接受 DeveloperCredential,Playground Grant 尚未实现 | 已确认 |
| OW-ADR-027 | Oceanway-AI 已建立 14 仓 Polyrepo:Site、Developer Center、Console、Studio、Drama、Commerce、Admin、Core、API Edge、Contracts、Text Gateway、Media Gateway、Docs、Infrastructure;Core 领域不再逐域拆仓,迁移保留历史且禁止业务双写 | 已执行 |
| OW-ADR-028 | 实施采用 Contracts First;首个 Core 纵切为 PostgreSQL Run Admission,将租户、开发者访问、授权、API Offering、credits 预占、Run、不可变 Manifest、Outbox 与幂等结果原子提交 | 已采用,首个实现基线已验收 |
| OW-ADR-029 | 首个 API Edge 受控准入固定为 POST /v1/responses、22/43 字符 DeveloperCredential、强制 Idempotency-Key 与 apiVersion="v1";成功使用 flat Envelope,错误使用 nested error 与 underscore 代码;Credential ID 是不可变版本身份,Raw Secret 只到 Edge,Core 拥有验证快照、模型解析、Run Input 与业务事实;本阶段不开放公网 | 已采用,受控实现基线已验收且未开放公网 |
| OW-ADR-030 | Core Operations 唯一拥有 PostgreSQL Outbox Dispatcher、Applied Receipt、版本化 Operations Read Model 与私有 Query;Admin 只拥有 Workforce BFF/UI;Delivery Set 随 Event Append 同事务冻结,Event/Observation Source 数据库强制不可变;run.created@2.0 提供低敏准入快照,Edge Observation 保持 best-effort;Core Authorization 签发 Workforce Grant,特权查询 Audit fail-closed;首期不上外部 Broker | 已采用(文档基线),尚未实现/验收 |
| OW-ADR-031 | Execution 以不可逆事实关闭完整 Attempt 集;Gateway Dispatch Slot 防止 Bound/Rejected 双终态;Metering 形成唯一结算快照并以 Mandatory Event 唤醒 Billing;Billing 使用严格 Input Manifest 与 Execution/Metering/Gateway 三组 Receipt,只在本地事务终局,并以 Watermark/Catch-up Fence 保证迟到变化进入追加式 Transition/Exposure 与受控 Command Result | 已采用(目标契约),尚未实现/验收 |
每个 ADR 后续应补充背景、候选方案、选择理由、影响、回滚条件和批准人。表中仍标记“本文建议”的事项不能被实现团队当作已经授权的产品决定。
OW-ADR-027 的仓库职责、现有仓库处置、版本化契约、历史保留和 Cutover/Rollback 门禁见 Polyrepo 仓库拓扑与迁移治理。
OW-ADR-028 的首发契约、模块边界、事务范围、禁止双写规则与下一阶段固定顺序——API Edge → Outbox/Ops Explorer → Metering/Settlement → Text Gateway canary → Asset → Console/Studio cutover——见 Contracts First 与 Core 准入纵切。
OW-ADR-029 的 Credential Grammar、不可变 Credential ID 轮换、本地 Digest 验证、短期 Workload JWT、V1 幂等/Fingerprint、publicModelId 解析、Run Input、flat 202/reserved、nested 稳定错误和非公网门禁见 API Edge 受控准入与信任边界。该门禁已经通过,当前工程阶段是 Outbox Publisher 与 Ops Explorer;分布式限流、完整链路追踪与公网压力测试在公开切流前完成,不作为当前受控基线的已完成功能。
OW-ADR-030 的 Owner、PostgreSQL-first Delivery、Append-time Delivery Set、Lease Fencing、Applied Receipt、无标量连续游标的 Projection Rebuild、run.created@2.0、best-effort Observation、Core Authorization Grant 与 Audit fail-closed 边界见 Outbox Dispatcher 与运维读模型。它是已采用的实施文档,不是已经完成的运行能力。
OW-ADR-031 的 Run/Attempt 内容身份、Dispatch Slot、不可逆 Execution Closure、Settlement Input、三组 Validation Bundle、Billing 本地原子终局、严格经济身份和迟到补结边界见 执行、计量与账务终局协议。它是后续 Metering/Settlement 阶段的正式目标契约,不改变当前仍停留在 Outbox/Ops 实施阶段的事实。
当前门禁与后续待决策
当前 Outbox/Ops 门禁没有等待产品 P0 决策。以下边界已经冻结,不再作为开放问题:
- Project 是共享业务目标外壳,完整剧集、商品、Canvas 等内容仍由产品私有聚合拥有,并通过 Binding 关联;
- 每个 Personal Space 或 Organization 只有一个 Billing Account;Workspace、Project、成员、Agent 和 Service Account 使用预算约束,企业合同额度进入同一账户的资金或权益来源,不允许执行中切换付款账户;
- Provider 提交状态使用显式
not_submitted / submitted / provider_accepted / unknown等事实;unknown保留原任务并进入查询/诊断或 Incident,不翻译为失败、成功、零费用或未定义的 Reconciliation Case; - 用户取消意图与 Provider 已取消是不同事实。Media Gateway 首期不以 Cancel 为进入门禁;只有 Adapter 声明并能返回可验证结果时,后续才按 Capability 暴露 Provider Cancel。Callback 同样是后续按需能力。
下列选择只需在对应产品或治理能力进入实现前确认,不得阻塞当前 Outbox/Ops → Metering/Settlement → Text Gateway canary 顺序:
- 用户端长期使用“积分”还是引入多币种/额度展示;会计账本与产品余额如何命名。
- 跨 Workspace 支持授权引用、复制、转让中的哪些能力,首期默认是什么。
- Prompt、Knowledge、Agent Memory 是否作为 Asset 类型,还是独立资源域。
- MCP 写工具的审批默认值和企业可配置范围。
- 用户注销、企业法定留存、账本不可变与 Legal Hold 的优先规则。
新产品接入前还需确认:
- 漫剧独立入口和现有
/drama的迁移方式; - Console 首期在应用大厅与购买中心之外,同步上线资产总览、任务中心和企业成员管理中的哪些模块;
- 旧
ai.oceanway.tech/v1、OceanWay Studio Host/v1与开发者页面的关闭方式及兼容窗口; - API 媒体结果是否默认登记 Asset;
- 模型下线时已发布 Agent/Canvas 的替代策略;
- FDE 交付 IP、Agent、Prompt 和 Connector 的标准合同口径;
- 公共案例审批、指标证明和撤回机制。
内部运维上线前还需由组织与安全负责人确定:
- Workforce IdP、生产访问网络和设备策略;
- 值班 Owner、Incident Severity、升级与客户沟通责任;
- Telemetry 后端、采样、保留、数据区域和 Legal Hold 策略;
- 生产路由、敏感调试和财务处置的审批矩阵。
非功能目标
可用性、延迟、吞吐、租户公平性、RPO、RTO、数据驻留和成本告警必须在真实容量与合同级别确定,不能用无依据常数代替设计。首轮至少建立以下可测指标:
- 登录与组织切换成功率;
- 权限拒绝正确率与跨租户测试覆盖;
- Run 创建、排队、成功、取消和未知状态比例;
- Provider 成功率、延迟、费用与故障切换;
- Text/Media Pool 独立 SLO、Alert 和 Incident 时间线完整性;
- Reservation 未结算时长和对账积压;
- Asset 落盘、引用完整性和删除阻塞;
- MCP 调用、审批、失败与外部副作用;
- Workspace/Project/产品维度成本;
- Outbox、Gateway Observation、Telemetry 与运维读模型摄取新鲜度;
- 备份恢复与凭据撤销演练结果。
架构验收场景
发布一个阶段前至少覆盖:
- 个人用户加入企业后,个人与企业资产、钱包和 MCP 完全隔离。
- 企业成员只访问一个 Workspace,并受 Project 预算限制。
- Service Account 通过 API 生成媒体,登记 Asset 并在 Canvas 继续编辑。
- OceanWay Studio 的
/canvas只返回候选 AssetVersion / CanvasRevision,由漫剧领域确认写入 Shot;失败不会覆盖原版本。 - 电商 Agent 调用 MCP 创建渠道草稿,发布动作需要审批。
- 成员离职后 Session、Run Token、个人 Connection 立即失效,企业资产和生产 Service Account 保留。
- 上游超时、重复轮询或未来重复回调、Worker 重启和用户刷新不重复扣费或外部发布。
- FDE 客户只在 Console 访问获授权的私有 Engagement;交付物经授权、脱敏并创建独立 CaseStudyRelease 后才能进入公共案例。
- 客户提供一个 Public Request ID,值班人员可以在授权范围内还原 Run、Gateway、Asset 与 Billing 链,无法观测处明确显示未知。
- Provider 提交状态未知时不能盲目重试;保留同一任务并执行查询/结果恢复,账务只有满足
late_settlement_dimension | billing_finalization_run契约时才进入正式 Reconciliation Case。 - 未获得 JIT Grant 的客服不能查看客户 Prompt、媒体、Secret 或执行生产命令。
- 一个 Pool 或 Provider 故障不会把整个 OceanWay 标成不可用,恢复后能够扫描受影响任务、资产、账务和 Webhook。
- API Edge 只在请求生命周期持有 Raw Developer Secret,通过 Core 验证快照本地校验;Core、日志、Trace、错误和业务记录均不能恢复完整 Key。Credential 轮换创建新不可变 ID 并撤销旧 ID,旧 ID 不能通过原地修改验证材料重新启用。
非目标
现阶段不做:
- 为了“未来扩展”立即拆成大量微服务;
- 用一个万能 JSON 表承载所有产品;
- 允许产品直接读写其他领域数据库;
- 把每个预算做成独立钱包;
- 让网页、API 与内部模型共享未过滤列表;
- 自动跨组织复制资产或切换付款方;
- 在没有审批和治理前开放 Agent/MCP 市场;
- 为未上线旧数据建立长期兼容层。
- 让企业客户管理员进入 OceanWay 内部 Admin Host;
- 让控制面直连 Gateway 数据库、直接改 Ledger 或用 Logs/Trace 推断业务终态;
- 在关联、确定性、幂等、权限和审计尚未完成前建设通用“一键修复”。
文档治理
- 架构总览记录稳定原则,实施细节进入对应领域文档。
- 任何 P0 决策改变后同步 ADR、数据模型、API 和验收场景。
- 当前实现与目标态分开描述,候选测试不能写成生产事实。
- 发生重复架构争议时,先补充 ADR,再写代码。
- 每个新产品接入时补充自己的聚合根、共享引用、Run、账务和删除矩阵。