splay2-表归档切库.plan.md
旧文件/splay2-表归档切库.plan.md · 15.1 KB · 2026-09-22 15:07:00
原始文件 下载

Splay 2.0 表归档切库与功能裁剪计划

背景与目标

1.0 已结束,在 1.0 基础上推进 2.0:去掉部分老旧能力,保留机器人、客户端购买(非 VIP)、买剧、收益周期/发放/到期退本金等核心链路。

切库策略(已定):不对业务表全面改名走 s2_*,而是对交易/用户态表做 同库归档 rename → 同名空表重建,业务读写路径尽量不动,降低改动面与破坏性。

与现有 legacy 割接的关系legacy_point_* / playd/splay2_migration.go 负责 1.0 余额入金库与个人等级,与本计划「业务表归档空起」正交,可并存;本计划不重复迁用户余额。cmd/liquidate 已执行完毕,切库窗口不再依赖清算步骤。


已确认决策

# 决策
1 账号体系表(含 users 及附属表)共用 1.0 原表,不归档、不清空
2 保留买剧;2.0 不保留任何 VIP 卡相关能力与逻辑
3 版权包 2.0 不保留;福利广告位保留Advertisement.TYPE_WELFARE 继续可用)
4 归档后新表 空库起步,不做 1.0→空表业务数据迁移;机器人配置不迁移(后台 2.0 重新配置)
5 短剧媒资系统配置继续使用 1.0 原表
6 切库方式:交易/用户态表 ALTER … RENAME TO xxx_1_0 + CREATE TABLE xxx (LIKE xxx_1_0 INCLUDING ALL)不用 s2_* 并行表方案
7 功能下线仍需改代码:VIP / 福利页任务 / AI 聊天 / 版权包 / CPS 分销展示与入口
8 邀请体系:2.0 只保留粉丝码体系;CPS 分销体系对用户侧下线。注册入参及所有用户端可见邀请标识统一展示/接收为 uid;底层落库与关系链仍可用 F 开头粉丝码,内部逻辑可不大改
9 robot_coupon_rules 随机器人空起(归档重建,不迁 1.0 规则)
10 弹幕相关表空起(归档重建;聊天下线后短剧侧若仍用弹幕则写新空表)
11 2.0 活动只保留:升级补贴(upgrade_subsidies)、合伙人计划(partner_*),均空起;其余运营活动全部下线(只归档、不接流量)
12 liquidate 已跑过,计划中不再安排清算步骤
13 管理端查 *_1_0 只读接口:暂时不做

方案说明

为何选「归档 + 同名空表」

执行模式(示意)

-- 示例:tips_ledgers
ALTER TABLE tips_ledgers RENAME TO tips_ledgers_1_0;
CREATE TABLE tips_ledgers (LIKE tips_ledgers_1_0 INCLUDING ALL);
-- 索引/约束/序列:LIKE INCLUDING ALL 后按 PG 版本核对序列归属与自增

注意:

邀请体系(粉丝码 only + 对外 uid)

1.0 并存两套路:

2.0:

行为
用户端 API / 展示 邀请人、分享码等一律用 uid(注册入参也收 uid)
落库 / 关系链 可继续写/查 F… 粉丝码与现有 inviter_fans / inviter_user_ids 结构,底层逻辑尽量不动
转换 入口:uid → 查用户 → 取/校验粉丝码再走原邀请逻辑;出口:粉丝码/内部字段 → 对用户只返回 uid
CPS 用户侧下线;services/cps、分销商相关入口停用或对客户端不可见(distributor_applies 等账号表仍保留在 A,仅停业务)

功能取舍

保留(逻辑基本不变,落库见分类)

功能 说明
用户/登录/实名/提现卡等 共用 users 及账号附属表
邀请(仅粉丝码) 对外 uid;对内仍可 F 码;CPS 用户侧下线
机器人管理与客户端购买 配置含券规则空起;购买/托管写空表后的 robots / tips_ledgers
收益周期、每日收益发放、到期退本金 cron / CheckRobotIncomeSettlement 等仍打原表名(已是空表后的新数据)
买剧 PRODUCT_TYPE_EPISODES;去掉 VIP 相关判断
短剧媒资浏览/支持玩法 媒资读原表;支持份额等用户态走归档重建表
弹幕 表空起后若产品仍开放,写新表;与 AI 聊天解耦
福利广告位 advertisements 原表保留,TYPE_WELFARE 继续下发
钱包余额 仍在 users;新流水写入空表后的 point_ledgers
升级补贴 upgrade_subsidies 归档空起后接 2.0
合伙人计划 partner_pool_records / partner_divided_records 等空起后接 2.0

下线(2.0 不做)

功能 处理
VIP 购买 / VIP 卡 下线 API 与 man 配置;订单禁止 PRODUCT_TYPE_VIPplans / user_plans 归档
VIP 解锁短剧 删除 IsVip() 免看/禁买剧等分支
福利页任务 下线 /v1/task/*/v1/user/task/* 等;任务相关表归档
AI 聊天 下线 chat API;chat_* / sensitive_words 等归档
版权包 下线 copyright 相关 API;版权包全套表归档
CPS 分销(用户侧) 下线 CPS/分销商用户入口;对外邀请统一粉丝码→uid
除升级补贴、合伙人外的运营活动 表归档;API/cron/man 入口下线

表分类清单

Bun 默认复数蛇形表名;下列以业务名为准。归档后缀统一:_1_0(例:tips_ledgerstips_ledgers_1_0)。

A. 保留原表(不 rename、不清空)

A1. 账号体系

A2. 短剧媒资与观看侧(共用 1.0)

A3. 系统配置 / 运营参数


B. 归档为 *_1_0 后重建空表(2.0 业务写入)

B1. 机器人(配置空起,含券规则,不迁 1.0)

B2. 支持 / 收益 / 活跃

B3. 订单与积分流水

B4. 优惠券用户态 / 发放态

B5. 通知用户态

B6. 弹幕(空起)

B7. 2.0 保留活动(仅此两类,空起)


C. 随功能下线:归档即可(可不重建,或重建但不接流量)

VIP plansuser_plansvip_invite_activities
福利任务 tasksuser_taskstask_plansuser_task_planstask_videos
AI 聊天 chat_promptschat_roleschat_sessionschat_messagessensitive_wordschat_role_reportschat_role_hiddens
版权包 copyright_packsuser_copyright_packscopyright_materialssecond_creationscopyright_pack_settlementscopyright_pack_depositscooperation_agreements
非保留活动 宝藏计划 treasure_plan_*;抢购 flash_sale_*;拼团房 team_rooms*;33 挑战 challenge33* / help33*ai_carnivals*ai_x_subscription_*invite_register_*support_send_usersparenting_charity_appliescampaigns / issue_product_ledgersmega_subsidies*help_subsidies*lottery_lists;斋月 ramadan* / prayer_*;周年 anniversary_*deposit_match_*;官方群用户态 user_official_groups 等(官方配置表若算 A3 可留,用户态归档);rank_data / user_fake_rank_data*channel_datamovie_tickets 等与下线活动绑定的表

下线域:必须改代码停 API/cron,不能只靠清表。


代码改造范围(按优先级)

P0 — 切库迁移

  1. 新增 migration:按 A/B/C 清单执行 rename +(B 类)CREATE LIKE;写入执行标记防重入。
  2. 预发完整演练:备份 → 跑迁移 → 冒烟核心路径。
  3. 文档化回滚:DROP 新空表 + RENAME xxx_1_0 → xxx(仅切库失败且尚未写入新数据时)。
  4. 再跑 liquidate

P1 — 功能下线与邀请改造

  1. VIPservices/point/order.gopay.goplan.go;man plan;禁止 PRODUCT_TYPE_VIP
  2. VIP 解锁:清除 User.IsVip() 对买剧/播放的特殊分支。
  3. 福利任务services/task/task.go 及 man task;保留 CheckRobotIncomeSettlement 等结算(可挪到 playlet/point)。
  4. AI 聊天services/user/chat.goman/chat.go
  5. 版权包services/task/copyrightpack.goman/copyrightpack.go
  6. CPS / 分销用户侧services/cps、分销商申请/入口对客户端关闭。
  7. 邀请对外 uid:注册与用户端邀请相关 API(如 services/user/user.goinvite.go、粉丝/分享相关)入参出参统一 uid;内部 uid↔fans_code 转换一层即可。
  8. 非保留活动:对应 service/cron/man 入口全部停用(宝藏、抢购、拼团、33、嘉年华等)。

P2 — 回归与运维

  1. 机器人:后台重建 robots + robot_coupon_rules → 客户端购买 → 收益 cron → 到期退本。
  2. 买剧:下单支付、扣点、新空表订单/流水;观看仍读媒资原表。
  3. 邀请:用 uid 注册/绑定;库内仍可见 F 码;用户响应无 F 码、无 CPS 入口。
  4. 升级补贴、合伙人:空表后主路径冒烟。
  5. 广告:首页 + 福利页 均正常。
  6. 弹幕:若产品开放,确认写的是新空表。
  7. 确认无 cron 仍扫描 *_1_0 或误写归档表;暂不做管理端 *_1_0 只读接口。

明确不做


风险与注意事项

风险 缓解
误归档白名单表(users/媒资/配置) 迁移脚本硬编码白名单 + code review + 预发校验「表仍存在且行数未变」
外键/序列重建失败 预发用真实库结构演练;迁移后 \d 核对
余额与流水观感 列表只查新 point_ledgers;1.0 在 point_ledgers_1_0;legacy 金库逻辑不变
uid↔粉丝码转换遗漏 注册/分享/邀请全链路用例;禁止用户端再出现 F 码与 CPS 文案
活动下线不彻底 按 C 类活动清单关 API/cron;只留升级补贴与合伙人
下线不彻底(VIP/任务/聊天等) P1 清单 + 接口黑名单测试

建议实施顺序

  1. 按本文 A/B/C 冻结表清单(活动去留已定)。
  2. 编写并预发跑通归档 migration。
  3. 合并功能下线 + 邀请 uid 改造 PR(可与 migration 同发或紧随其后)。
  4. 生产:停机或只读窗口 → migration → 配置机器人/券规则与必要运营数据 → 冒烟 → 开写。
  5. 观察期:监控购买/收益/退本/买剧/邀请注册;*_1_0 只读留库,管理端暂不接查询接口。

决策冻结状态

结论
robot_coupon_rules 随机器人进 B,空起
弹幕表 进 B,空起(非随聊天进 C 废弃)
2.0 活动 仅升级补贴 + 合伙人,空起;其余进 C
liquidate 已完成,不再安排
管理端 *_1_0 只读 API 暂不做
邀请 仅粉丝码;对外 uid;落库可仍 F 码

关键路径速查

路径
模型 models/*.go
迁移 migrations/
机器人/收益 services/man/robot.goservices/playlet/tips.goservices/playlet/cron.goservices/task/common.go
订单/VIP/买剧 services/point/order.gopay.goplan.go
福利任务 services/task/task.go
AI 聊天 services/user/chat.goservices/man/chat.go
版权包 services/task/copyrightpack.go
邀请/粉丝 services/user/user.goinvite.goservices/point/fans.go
CPS services/cps/
升级补贴 / 合伙人 models/lottery.goUpgradeSubsidies)、models/partners.goservices/point/partner.goservices/man/partner.go
Legacy 余额 models/legacy_point.goplayd/splay2_migration.goservices/point/legacy_point.go
广告 models/advertisement.goservices/man/advertisement.go
弹幕 models/chat.goBulletComment*