文档
03 平台04 媒体供应02_需求与工作包

MG-02-013 开发计划

状态说明:以当前有效边界为准。供应执行规则与历史实现证据保留;客户身份、售价、结算、全量旧跨仓契约及图像开放计划不代表当前验收范围。

1. 交付策略

项目从空仓库实现。开发里程碑用于控制依赖和验收,不代表生产运行多个版本。所有 P0 完成后进行一次生产入口切换;旧 new-api 不继续作为新网关的在线代理。

每个里程碑必须:

  • 有冻结接口和 Owned Paths;
  • 有对应验收编号;
  • 通过单元、组件或契约门禁;
  • 不依赖真实付费 Provider 才能运行 CI;
  • 未验证的 Supply 默认 disabled。

2. M0:设计基线、现网事实和复用审查

交付:

  • 当前仓库文档基线;
  • 生产公开接口、模型和真实请求 Fixture;
  • 当前 Channel、Provider、模型、能力和价格清单;
  • 最近 30 天请求量、并发和队列峰值;
  • 三个 S3/R2 桶和内容交付现状;
  • new-api Provider Adapter 复用清单;
  • new-api UI 组件和许可证复用清单;
  • 继续服务用户和新 Key 发放清单;
  • 验收矩阵模板。

退出:

  • 所有实际使用的图像/视频路径已知;
  • 首批生产 Public Model 和 Supply 矩阵已知;
  • 每个 Supply 的能力、价格、计费点和视频真人政策有证据或明确缺口;
  • H1 根据现网峰值复核;
  • 没有依赖废弃 model-schedule 的设计。

对应验收:

P0-CFG-001..007
P0-MDL-001..004
P0-LOAD-001..004 的目标冻结

3. M1:仓库骨架和平台基础

实现:

  • Go module、命令入口和配置加载;
  • Chi HTTP 生命周期、Request ID、错误信封和健康检查;
  • PostgreSQL Migration Runner;
  • Redis 和对象存储客户端;
  • UUIDv7 公共 ID;
  • 十进制金额;
  • 结构化日志、指标和 Trace;
  • Outbox 基础;
  • React 19 前端骨架和设计 Token;
  • CI、格式、Lint、单元测试和秘密扫描。

并行:

  • Agent A:Go/HTTP/Observability;
  • Agent B:PostgreSQL/Redis/Object Store;
  • Agent C:Frontend Shell;
  • Agent D:CI/Test Harness。

必须先合并的共享契约:

  • ID;
  • Error Envelope;
  • Media Type;
  • Money;
  • Config 接口。

退出:

  • API 和 Worker 可以启动、优雅关闭;
  • PostgreSQL/Redis 组件测试运行;
  • 前端登录壳和权限路由工作;
  • CI 不访问真实 Provider;
  • 秘密不会进入日志。

4. M2:用户、客户组、API Key 和使用记录骨架

实现:

  • 管理员和普通用户登录;
  • User、CustomerGroup、APIKey;
  • Key 一次性展示和安全哈希;
  • Public Model 权限;
  • 同步/异步并发与频率限制;
  • MediaRequest、Attempt、MediaOutput 基础;
  • 统一使用记录查询;
  • 管理审计。

并行:

  • Auth/User Backend;
  • Record Backend;
  • 用户与 Key UI;
  • 使用记录列表骨架。

退出:

  • P0-AUTH 全部通过;
  • 普通用户和管理员数据范围隔离;
  • 同步请求可以写入统一记录但不创建 AsyncTask;
  • UI 不出现个人资料、充值或聊天入口。

5. M3:Channel、模型发现和 Supply 配置

实现:

  • Channel 和 Credential Version;
  • Credential 信封加密;
  • Provider Adapter Registry;
  • Catalog/Price Discovery 接口;
  • 模型发现快照和差异;
  • Supply、ImageCapability、VideoCapability;
  • Cost Rule Version;
  • Supply 真实测试证据;
  • 单一配置向导;
  • Public Model、Binding 和模型广场基础。

首批只实现 Fake Catalog Adapter,随后按复用审查实现真实 Adapter。

退出:

  • P0-CFG、P0-MDL 全部通过;
  • 添加新 Channel 不需要第二套视频路由配置;
  • 单个 Supply 可独立测试、启停和计价;
  • 缺少价格/能力/证据不能生产启用。

6. M4:调度、成本、健康和容量

实现:

  • Image/Video 独立能力匹配;
  • stable_first 与 cost_first;
  • 按秒、按次、固定区间和价目表 Quote;
  • Channel/Supply 两级健康;
  • 错误分类;
  • 熔断、半开和恢复;
  • Channel/Supply Capacity Lease;
  • Public Model Dispatch Policy;
  • Supply Binding Role;
  • Degradation Rule 和 933→900 Fixture;
  • 路由模拟和决策快照;
  • 队列唤醒。

并行条件:

  • 调度输入输出和 Snapshot Schema 先合并;
  • Cost、Health、Capacity、Image Matcher、Video Matcher 可并行;
  • 最终 Scheduler Orchestrator 串行集成。

退出:

  • P0-SCH、P0-POL、P0-COST、P0-HLT、P0-DEG 通过;
  • 固定快照得到确定性选择;
  • 单 Supply 故障不影响同 Channel 其他 Supply;
  • 933→900 只按已发布规则发生。

7. M5:同步与异步图像

实现:

  • OpenAI 图像规范化;
  • 默认同步执行;
  • 同步总超时和一次透明换路;
  • 显式 Prefer: respond-async;
  • Image AsyncTask、Dispatcher/Poller;
  • 多输出和顺序;
  • URL/Base64;
  • 图像结果存储与内容交付;
  • 图像 API、模型广场和使用记录 UI。

退出:

  • P0-IMG-SYNC、P0-IMG-ASYNC 通过;
  • 同步图像不进入长队列;
  • 异步图像有平台 Task;
  • 图像代码不包含视频或真人能力。

8. M6:异步视频

实现:

  • OpenAI /v1/videos;
  • ByteDance ModelArk /api/v3/contents/generations/tasks 创建与单任务查询;
  • 统一 Video Request;
  • AsyncTask、Dispatcher、Poller;
  • 初次加一次换 Supply;
  • 20 分钟重试截止;
  • submission_uncertain;
  • 异步素材转存;
  • Provider 结果转存;
  • 任务查询兼容;
  • 能力降级响应;
  • 视频使用记录和任务详情。

退出:

  • P0-VID、P0-RET、P0-AST 通过;
  • 两种视频接口使用同一调度链;
  • 不存在第三次提交;
  • 内容错误不换 Provider;
  • Provider 成功但平台无结果时不显示成功。

9. M7:核心后台和告警

实现:

  • 数据看板;
  • 完整模型广场;
  • Channel/Supply 向导;
  • Public Model 编排和路由模拟;
  • 用户与客户组;
  • 统一使用记录详情;
  • Channel/Supply 健康;
  • 队列与容量;
  • 告警、确认和恢复;
  • 核心设置;
  • API 文档页面。

退出:

  • P0-UI、P0-LOG 通过;
  • 所有页面使用真实 API;
  • 生产构建没有 Demo 数据入口;
  • 角色、状态、降级和部分可用表达清晰;
  • 可访问性门禁通过。

10. M8:真实 Provider 适配器

每个 Provider 独立任务和 worktree,实现:

  • 模型发现;
  • 价格发现(支持时);
  • 图像或视频请求转换;
  • 提交/查询;
  • 错误分类;
  • 结果解析;
  • 脱敏 Fixture;
  • 真实测试证据。

首批范围按当前生产事实冻结,不按实现容易程度排序:

Omega
MetaJing
当前 new-api 图像 Provider
其他当前启用的图像/视频 Channel

同一 Provider 的不同 Request Profile 可以由不同任务实现,但共享接口必须先冻结。 当前停用和自动停用的媒体 Channel 只导入为 disabled Draft,不执行真实付费冒烟, 也不计入 production-ready 退出门槛。

退出:

  • 每个 production_ready Supply 通过真实 Provider 验收;
  • 没有从 new-api 复制旧调度依赖;
  • 复用来源和许可证完整;
  • 价格、收费节点和错误分类有证据。

11. M9:故障、负载和生产切换

执行:

  • 完整 Fake E2E;
  • PostgreSQL、Redis、Worker、Provider 和对象存储故障演练;
  • H1 和现网峰值 ×2 负载;
  • 安全扫描;
  • 配置导入演练;
  • 用户和新 Key 验证;
  • 域名和反向代理切换演练;
  • 回滚演练;
  • 生产冒烟。

部署目标为一台新的独立服务器和单机 Docker Compose。本里程碑必须产出可部署制品、 隔离环境报告和切换/回滚演练报告,但本轮不实际修改现网流量入口。

退出:

  • 所有 P0 通过;
  • 负载、故障和恢复报告签字;
  • 首批生产 Supply 全部有证据;
  • 告警可到达管理员;
  • 旧系统不再接受新的媒体创建请求;
  • 新旧异步任务边界清楚。

12. 多 Agent 实施批次

每一批遵循“共享契约先合并,再并行实现”:

Batch 1
  ID/Error/Money/Media Type
  HTTP Skeleton
  DB/Redis/Object Store
  Web Shell

Batch 2
  Auth/User/Key
  Records
  Channel/Credential
  Catalog Adapter Fake

Batch 3
  Supply/Capabilities/Cost
  Public Model/Bindings
  Health/Capacity
  Web Configuration

Batch 4
  Image Scheduler
  Video Scheduler
  Cost Engine
  Fallback Engine

Batch 5
  Image Execution
  Video Dispatcher/Poller
  Result Storage
  Public API

Batch 6
  Provider Adapters
  Admin UI
  Fault/Load
  Cutover Tooling

每批开始前由协调者创建 OMG 编号任务、Owned Paths、依赖、验收编号和测试命令。

13. 开发完成定义

任务完成需要:

  1. 只修改 Owned Paths;
  2. 实现正常和错误路径;
  3. 对应验收编号有测试;
  4. 运行任务规定门禁;
  5. 没有秘密和真实付费调用;
  6. 有清晰 Git commit;
  7. Agent worktree 干净;
  8. 提供 commit、测试、证据和风险;
  9. 集成分支通过完整门禁;
  10. 文档与代码一致。

On this page