PLAT-04-011 迁移与切换
前端、产品账号钱包与历史客户的迁移边界和核对顺序
2026-10-13:实现推进与切换证据分开
当前工作树已有分片导入、完整快照身份/消失对象收敛、Key复制编辑/月窗口与安全策略、退出Key组/旧模型白名单、旧价及订阅窗口兼容调整;18个既有源码差异和7个已核新增迁移源码/测试与98f9已验证部署分开记录,精确范围见证据索引。下方10-12缺口为当时审计及执行顺序,现阶段不将这些工作统一描述为尚无实现,也不凭源码或旧9项基线回归关闭新功能。
后续按新源码补完整性/中断/收敛/凭据策略负例、真实规模和逐户/窗口/单位独立对账,接真实旧客户端/图片,最后关闭停写、追平、单写及保留切后新资金的回退。现有具名验证与最新98f9生产重评仍为各自切片,T-12/AC-15和全量承接la-vps2继续NO GO;没有因本次文档同步实施客户导入或切流。
2026-10-12:切换前调试与隔离验证顺序
T-12 / PL-020.R07 / AC-15.A07,联T-04/06/09/10。用户在la-vps2只读核查后要求先判断需要调试的范围,再构建测试环境。具名源码审计及后续环境/回归回执集中于平台 docs/verification/T-12/migration-debug-readiness-20261012/;生产存量仍引用同仓 T-12/la-vps2-readonly-20261012/ 的各自只读时点,不能当作停写快照。
按实际阻断顺序推进:
- 完整迁移工具:超过100万行和单档512MiB需有界分片/流式与完整性验证;补完整增量中的密码/邮箱变化、消失用户/Key/订阅的撤销收敛。不得截断历史、只调大上限或用稀疏delta冒充完整快照。
- 凭据与政策:补真实Key新策略的执行或明确阻断,并接通本人的展示/复制与真实鉴权、额度/IP/启停/删除,不能将合成占位符作为公开可用Key。退出迁移强制enabled Key组的退役依赖,旧组仅保留待遇/预算/历史依据。当前PRD全开放目录规则同样用于承接客户,旧模型列表不能恢复Key调用白名单。旧订阅抵扣与旧价保护范围分别核对,不据此禁止用获准资金调用其他开放模型。补8个未识别密码形式的受控兼容核验、85负债/1现金返利/15旧授权用户/3头像和资料映射;PD-12实际购买力/精度/保护范围仍需具名政策。
- 独立对账与客户路径:原余额/负债/冻结、订阅7/30天每窗上限/已用/锚点、Key预算/约束、返利原币种、订单及历史逐户核对,不以导入器期望值自证。用实际Responses/SSE、Chat与图片请求形状验旧客户端;当前图片供给及旧图片生成/编辑/工作台承接未完成,全域名切换不能静默退出图片路径。
- 单写及恢复:真实源停写、Redis计量持久化、最终追平、明确小批名单与路由、旧订单迟到回调归属、切后保留新支付/消费事实的回退或前向修复分别演练。fence人工证明、所有ready激活与新操作后安全拒绝rollback不能代替可用生产切换流程。
验证从独立本机PG18+Redis数据层和合成迁移回归开始;不复用已有开发数据库/凭据,源恢复库和目标库先为空,回归使用独立验证库。现有9项迁移回归是基线,不覆盖上述新增缺口;待对应修复后补具名负例、真实结构夹具和完整域独立对账。随后取得近期一致生产备份,在隔离PG18恢复并做全量+最终增量及重启/备份恢复/回退演练,最后才安排正式环境商户/供给/身份与维护窗口验收。当前用户授权构建测试环境不等于授权客户迁移、收费或正式切流。
本批TOTP/第三方身份渠道/用户特价/钱包冻结/Key月额度与用量/批量图片/未完成退款已核为0,保留条件夹具,不列为已有活跃存量;IndexedDB未核数量不能填0。675旧订单当前无在途,仍必须验切点产生的迟到通知与原单查询。任务与完整AC继续开放。
全局顺序见路线图。平台开发中可以提前做迁移审计和隔离演练,不提前删掉仍在使用的产品账号/钱包。
Console / Admin
迁入 React 前端 → 完成旧到新接口映射 → 平台会话/权限改接 → 逐页真实回读 → 去除 BFF、旧会话与 Core/Contracts 构建依赖 → 平台嵌入发布 → 入口切换 → 原仓库归档。
记录来源提交与保留内容,先留可回退快照。迁移目录不等于接口完成;原仓库归档前必须证明无运行依赖。
Studio 接入
平台阶段 2 首发通过后,在阶段 3 映射旧用户到平台 ID、迁移或关联账号、核对余额与价格、迁移 Key/会话策略和未完成任务,再把模型与非模型消费接到平台。用户/钱包主写入口切换必须有明确时间点,不能长期双写余额。
用户关联不能只按用户提交的邮箱自动合并;依据已验证身份与人工核对规则建立映射,冲突进入待处理。冻结、待结算、退款、赠送和历史价格分别核对,不能仅复制一个余额数值。旧 Key 和会话是否失效/重新签发须有迁移政策与通知内容,不能假设所有旧凭据自动兼容。
建议先隔离影子核对、再小范围切换;只有平台接入与恢复验收后才移除 Studio 自有账号、钱包、渠道和路由。产品任务/素材不迁入平台,只保存需要的用户与操作关联。
Drama / Commerce
阶段 4 合入 oceanway-studio 三子站应用,分别取得产品作用域角色与服务凭据。共用工程不等于共用来源标签;三产品任务与消费必须可区分。Drama 业务以标准 1.7.0(历史参考,不构成依据;现行 Drama 文档在 04_产品/drama)为准,后端按 Next.js 重写,不把旧 Node 服务直接变成平台模块。
sub2api 零售客户
阶段 5 单独制定购买力换算、旧价保护模型/期限、赠送和套餐规则。建立迁移批次、旧账户→平台账户映射、来源余额/单位、冻结及未结算事实、换算快照、实际入账与差异处理。
同一批次重跑不能重复充值。迁移前后按账户核对金额与价格待遇,小批验证通过再扩大。uumi 现有模型对接客户继续原业务,不加入此迁移。
共通完成条件
身份映射无冲突、余额/冻结/流水可解释、未完成任务可恢复、原凭据政策明确、入口切换有证据、重复迁移受唯一批次保护。回退时保留切换后发生的支付/消费事实,不能覆盖回旧导出余额。
受控sub2api批次工具及隔离演练已有本地实现,见下节;实际客户账户数据、生产停写/缓存切点及真实切换均未执行,不能把本地fence/activate状态视为源服务已停写。
2026-10-07:sub2api全部用户数据与权益承接专项
PL-020.R07、PL-016/PL-N05、T-12/T-10:用户指定旧项目/Users/wangzihao/Projects/sub2api-0.1.137-clean及la-vps2。完成源码/线上只读审计后,按多资源权益细则建立活跃对象与可查历史双层迁移;本轮没有导出个人数据、导入客户、停服务或切换写入口。不得把普通余额、周/月限额、现金返利和已发生媒体次数统一乘一个兑换率。
迁移清单须包含身份/认证作用域/密码哈希兼容与TOTP密钥策略、Key原值保密映射及全部约束/旧客户端协议、普通/负债/冻结余额、订阅原期限与7/30天窗口start/usage及cutoff有效配置/倍率、支付订单/退款快照、邀请关系与返利可用/冻结/历史/待审、已领取和默认赠送去重、消费与扣费dedup、未结批量媒体任务/对象、历史审计/用户头像与属性。旧赠金/已到账奖励已混入balance时仅迁历史不重发;user_platform_quotas是预算,provider grant表是去重标记,均非额外资产。
单次图片会话/结果在浏览器IndexedDB,须提供旧域受控导出/导入或同域过渡;批量对象与已删除Sora备份另核,不能宣称一次DB搬迁自动带走全部历史。来源缺失、单位冲突、软删除、负余额、现金承诺或未结任务进入差异清单,禁止吞掉、夹为0或改成永久积分。
导入保持source_instance/table/id映射、批次和原值/单位/兑换版本;重复导入/断点恢复不重复资产。原group限额0/NULL不限与平台预算0禁用/NULL不限分开;已用和上限共同转换且不迁移补满原窗口。若各模型新旧售价比例不同,单一兑换不能同时守恒,旧价保护或明确补偿需PD-12定稿。旧组/特价留为迁移证据,不暗改新角色、Key模型范围或路由。
隔离PG演练逐用户核余额/冻结、各资源与窗口剩余/重置、返利币种、订单去重/历史关联、身份Key归属和原任务恢复;切换时只保留一个资产主写入口,处理增量与在途任务。回退不能覆写已发生的新消费或支付。金额/权限/恢复与Console/Admin原对象查询成对验收通过且得到正式切换授权后才能小批迁移。
本地工具、隔离验收及仍阻断的运营项
平台cmd/platform-sub2api-migrate/与scripts/platform-sub2api-migrate.py默认仅本地,源/目标DSN通过专用环境变量及精确loopback数据库白名单;不自动读取生产、导入或切换。工具提供只读一致快照全域导出、加密档案/dry-run、完整批次导入和完整当前快照增量、逐户差异、具名fence/activate/rollback以及本地对象/浏览器封存。AES-256-GCM密钥不进仓库或日志;全域表/列/schema清单包括未知历史域,不能仅靠已知表allowlist证明全量。源实例/表/ID/行哈希及批次唯一,重复或中断不重复资产。数据量上限和不支持的关系类型显式阻断,不截断后报成功。
活跃余额走唯一钱包开账;负值保留原负债且阻断激活,旧冻结保全但未决任务未映射不得放行。订阅保原有效group配置、7/30天锚点和各窗已用;user_platform_quotas日/周为Asia/Shanghai自然日/周、月按原30天,Key总额/5小时/1天/7天为原基线独立预算;当前新增30天月窗口与安全策略按上方后续工作树切片交接。已到账奖励/provider赠送去重只归档,不复发。旧Key以专用HMAC保密lookup接实际鉴权,保留原启停、有效期、IP与预算/安全策略;旧组/模型列表只用于具名待遇及预算范围,当前全开放目录政策不能被恢复成旧Key模型白名单,后续兼容变更按上方切片验证。原password哈希兼容受控保留,旧session不迁成长效会话。
兑换用精确定点/有理数;统一比例需逐模型原/新售价依据,无法统一时使用经核对的旧价兼容快照,缺价格/范围依据阻断激活。CNY返利、TOTP/身份渠道、特殊权限和价格高级语义、源负债与未决冻结任务、对象/头像映射及历史归属不能只归档后宣称运营已恢复。丢失Sora备份和浏览器数据须核原来源;已有浏览器全量受控导出/封存导入片段与对象字节校验工具,不证明客户真实导出、新产品历史可读或丢失数据可恢复。
9项真实隔离PG迁移验证通过,涵盖全域加密/隐私、幂等与增量、窗口/预算、负债冻结、身份Key及本地启用/新消费回退阻断,见平台 docs/verification/T-12/entitlements-implementation-20261007/report.md。fence接受明确的人工复核证明,不替代生产停写、Redis清缓存或真实增量追平;回退检测新消费/支付事实,不覆写旧余额。生产源时区/快照/schema、真实转换、TOTP重加密、旧CNY返利存量、Sora/浏览器/对象及切点仍需授权演练和逐户核对,T-12/T-10与AC-12/15不整体结项。