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

MG-02-008 代码提取与迁移

状态:建议稿;来源审计已完成,本轮没有复制实现代码。源文件、SHA-256 与处置方式见 source-map.json。

两个基线,分别记录

项目本次审计基线用途
旧视频网关/Users/wangzihao/Projects/new-api-new-oceanway;6484b5971ccb6c9c76ed78b6dfa2fe338bd992b0可用视频代码来源
来源仓 originhttps://github.com/Oceanway-AI/oceanway-text-gateway.git实际来源定位;不根据本地目录名猜远端仓名
当前媒体网关332a8ddac3d13ba295aab51053099c3f3d17806a任务、原生接口、安全存储及兼容数据基线
当前开发位置pic-vps 的任务 worktree后续原生源码开发;本轮只改文档

旧仓工作目录有未提交文档,不能复制。审计读取 git show <固定 commit>:,不读取未提交目录作为来源快照。后续提取固定 commit 和文件哈希,保留原作者、许可、Source-Repo/Commit/Paths/Adaptation;改编文件可缩小函数范围,但来源仍明确。

源仓 LICENSE 为 AGPL v3,已检查的源文件头写明 v3 或后续版本及 QuantumNous 版权。本次只记录路径/哈希和行为摘要。后续直接引入代码须保留适用版权、许可证和修改说明,更新目标许可/第三方清单,并核对依赖许可;不能把源文件头删除后标记成新写的 MIT 代码。UI 与 Go 代码均适用逐文件来源记录。

提取清单

以下路径相对于固定来源仓根目录。表中给核心文件,关联测试与字段支持文件在 JSON 中逐项列明,共 58 个。

模块核心 Source Paths直接复用内容改编/舍弃内容
渠道表单web/default/src/features/channels/hooks/use-channel-mutate-form.ts;web/default/src/features/channels/lib/channel-form.ts;web/default/src/features/channels/components/drawers/channel-mutate-drawer.tsx字段校验、表单状态、协议/认证条件项API、会话换成独立网关;旧组/配额/权重与确认链去除
型号/参数/报价model/video_supply_catalog.go;model/video_capability.go;controller/video_supply_route.go规格解析、时长/素材/音频预设、价格规范化、发现映射接入本仓 Supply/repository;不搬旧路由数据库/GORM 领域
型号维护 UIweb/default/src/features/video-supply-routes/supply-model-dialog.tsx;web/default/src/features/video-supply-routes/discovery-dialog.tsx;web/default/src/features/video-supply-routes/types.ts表单字段关系、目录差异、型号规格编辑一处编辑/一次保存;拆大组件,不复制销售 SKU 入口
选路案例model/video_supply_catalog_test.go;model/video_supply_route_test.go参数约束/规格选择的案例和可复用纯函数同层随机、Weight、Ability、客户组、渠道亲和度排除
Wangpairelay/channel/task/wangpai/adaptor.go提交/查询/响应和错误解析RelayInfo/Gin/旧钱包替换为原生 adapter 契约
MetaJing/Omegarelay/channel/task/metajing/adaptor.go;relay/channel/task/omega/adaptor.go协议差异、状态和结果定位保持未知受理分类,去除客户账务依赖
ArtBox/MegaBY/AIZHW/StarFramerelay/channel/task/sora/adaptor.go;relay/channel/task/sora/adaptor_contract_test.go同一源文件中的四个 Profile 分支与请求转换、结果解析按真实协议明确注册;不凭站名做通用 Sora 推断
标准请求与素材dto/video.go;dto/openai_video.go;dto/video_error.go;service/video_reference_material.go请求规范、错误解析、素材角色处理复用本仓标准输入和安全素材服务,不引入 Gin 上下文
测试持久任务controller/video_supply_route.go 的 TestVideoSupplyModel;web/default/src/features/video-supply-routes/supply-test-dialog.tsx固定供给测试进入普通任务、恢复查看的产品逻辑旧“查询未完成后创建”需改数据库原子操作;不能当并发幂等保证
任务/快照model/task.go;model/task_submission_state_test.go;service/task_request_snapshot.go;controller/task.go状态案例、有限快照、按需详情权限/存储接本仓;过滤秘密,不复活旧客户用户表逻辑
结果 UIweb/default/src/features/usage-logs/components/dialogs/video-preview-dialog.tsx;web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx;web/default/src/features/usage-logs/components/columns/task-logs-columns.tsx控制播放、打开失败回退、详情加载/展示使用平台授权结果,不把上游签名 URL 直接渲染
轮询/费用service/task_polling.go;service/task_billing.go 的选定函数与测试明确终态、结果链接刷新、费用证据和事件案例不搬客户 quota 扣减/退款;本地退款不等于上游退款
明确不提取model/video_supply_sku.go;web/default/src/features/video-supply-routes/supply-sku-dialog.tsx只用于识别边界销售 SKU、售价/钱包、旧用户归属与旧路由权重排除

Source-Paths 必须具体到文件/函数;不能只写“参考 new-api”。直接可用的字段校验、转换和组件代码优先提取;依赖旧平台的边界通过薄适配改编。不要用“重新实现同样行为”取代可用代码,也不要为了一字不改把整个旧平台搬进来。

当前渠道覆盖审计

9 渠道/95 供给来自既有 MG-NEWTOKEN-01 记录,属于最后记录的配置库存;本轮未读取业务库做实时盘点。连接/目录或代码存在均不能宣称已通过真实生成验收。

当前渠道已定位来源提取后必须核对
Wangpai独立 wangpai adaptor 与测试请求/素材转换、错误受理事实、结果鉴权与实际费用
Omega独立 omega adaptor 与测试images/references Profile、轮询、结果获取
MetaJing独立 metajing adaptor 与轮询测试提交未知、结果 ID/签名刷新、终态/费用证据
4SToken共享 sora 协议族是候选来源以保存的实际 Profile、地址与请求契约核对,不能由站名断言同协议
ArtBoxsora 中 Artbox Profile单图别名、ratio/aspect_ratio、音频、结果多字段及真实素材要求
MegaBYsora 中 Megaby Profile禁用首尾帧字段、显式参考素材、合法分辨率/比例/时长;优先修复现有协议缺口
AIZHW/造梦sora 中 AIZHW Profiletask_id、时长/size 别名冲突、首尾帧与参考素材互斥、错误/费用解析
StarFramesora 中 StarFrame ProfileJSON 要求、请求映射与查询;与本仓独立 starframe adapter 对照选择
NewToken固定旧快照未发现对应来源;本仓 internal/provider/newtoken沿用已开发原生实现,价格/规格和真实能力仍待验证

运行渠道/凭据接入不扩展到旧归档 6 渠道;相关历史按 08 覆盖。其他来源 adapter 也不因为“全部相关代码”自动成为首轮新增业务。按当前九渠道实际使用协议逐项覆盖。来源没有的 NewToken 不标记成已从旧仓提取。

当前仓保留的基础与需替换的行为

保留并整合成熟实现:Go/chi、PostgreSQL、Redis 可恢复队列、幂等/Attempt/CAS/租约、信封凭据、能力匹配、安全素材读取、结果转存、OpenAI/ModelArk API。数据兼容比旧前端页面结构重要。

需要重整:管理会话只存内存导致刷新失效;参数/采购资料与执行成本分开保存;多次确认与发布步骤;生成列表缺少实际结果/详情;同步供给测试只返回证据、媒体不进入普通结果链;各协议差异和错误受理事实不完整。具体实现以比较审计为依据,不把“成熟”当不准改的理由,也不以“重做”删掉安全与正确性基础。

依赖剥离的验收

提取的纯函数/组件保留来源;旧 Gin context、RelayInfo、GORM DB、quota、用户组、静态渠道类型编号和旧 session 通过原生接口隔离。UI 使用本仓请求客户端和组件体系,不能留下 /api/channel/* 或旧平台地址。Provider 函数只接收标准请求、供给/凭据快照和任务标识,返回受理、状态、错误与费用证据。

依赖检查禁止运行时读取旧库/旧认证或调用旧管理 API;不导入完整 new-api 主程序/模块来换取几个视频函数。source-map 的参考/排除文件不能在统计里冒充已提取代码,逐文件记录实际处置和验证。

数据与运行迁移计划

迁移在文档定稿后另立任务,先做隔离演练。当前已迁入目标服务的凭据不重复从旧平台提取;同时只读迁入旧平台全部历史,来源/完整性见 08。旧库不写入,原地归档运行配置、旧两桶和其他应用不改;相关历史可复制为只读档案。

  1. 盘点目标渠道、供给、凭据版本、标准模型、任务/Attempt、费用、对象引用和在途任务。配置计数只是证据之一,须核对身份、参数、报价、状态和映射。
  2. 生成可审阅的旧 ID → 新逻辑分组/规格/版本映射,明确等价依据。保留稳定 task/request/output ID 或兼容映射,不靠名称去重;重复项先列出冲突。
  3. 在隔离原生数据库/Redis 中执行前向迁移,验证 FK、幂等唯一约束、金额、引用、已归档状态与未知任务。源/目标密钥不进入 Git、日志、证据 JSON 或终端输出。
  4. 生产迁移前完成数据库备份与恢复演练,固定源提交、Migration 与配置版本。凭据保持可解密;新增版本不删除在途引用。历史原对象不移动/删除;可受控复制可读文件到目标保留范围,不把新签名当新生成。
  5. 暂停接收新的生成,按版本隔离或受控排空 Worker,再迁移并切到新 release。任何时候同一任务只由一套执行 Owner 处理;不能新旧 Worker 同时提交。
  6. 恢复时优先查询已受理任务、核对 Unknown、继续原结果转存;不重新提交历史任务。新能力默认停用,已有启用资格只有证明版本语义未变且证据兼容才可保留。
  7. 灰度配置/调用方切换需另行明确范围。代码合并、数据库迁移、部署、真实供给验证和切流分别记录,不合并成一个“完成”。

数据库迁移仅前进。回退应用必须证明旧 release 能读新增结构;否则保留新 DB 和兼容修复,不能直接回滚数据或覆盖备份来丢失新任务。旧 release、旧记录及在途引用保留至恢复窗口结束;历史永久保留;临时文件清理不破坏历史引用。

On this page