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 只读接口:暂时不做 |
方案说明
为何选「归档 + 同名空表」
- 业务 SQL / bun 模型表名不变,改动集中在「功能下线」与少量边界校验。
- 1.0 历史留在同库
*_1_0,便于对账、客服、审计;比「仅备份后 TRUNCATE」更安全。 - 硬切场景下无需维护两套读写路径;若未来要长期双端并行,再评估
s2_*(当前不做)。 - 管理端暂不提供查
*_1_0的只读 API;需要时再加。
执行模式(示意)
-- 示例: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 版本核对序列归属与自增
注意:
- 有
REFERENCES users(user_id)等外键的表,归档后空表需重建等价外键。 - Identity / serial 需确认新表序列从 1 起或按需设置,避免与历史 ID 混淆(空起一般从 1 即可)。
- 迁移脚本须幂等或带
data_migration_runs/ 专用标记,防止重复 rename。 - 白名单表绝对不能 rename(见下文「保留原表」)。
邀请体系(粉丝码 only + 对外 uid)
1.0 并存两套路:
- CPS 分销(分销商申请、CPS 榜单/入口等)
- 粉丝码体系(
fans_code/inviter_fans,库内多为F前缀)
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_VIP;plans / 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_ledgers→tips_ledgers_1_0)。
A. 保留原表(不 rename、不清空)
A1. 账号体系
users(含fans_code、inviter_fans、inviter_user_ids等;关系数据保留,对外展示转 uid)roles、verifications、distributor_applies、third_loginsbank_cards、withdrawals、feedbacksinvite_logs、login_logs、operate_logssign_in_records、configswithdraw_face_checks、withdraw_face_check_snapshots
A2. 短剧媒资与观看侧(共用 1.0)
playlets、playlet_episodes、playlet_groupsplaylet_materials、subtitlesuser_playlet_ledgers、user_playlet_collects、user_playlet_episodesad_records、material_watch_historiesmovies(若仍作媒资引用;AI 聊天下线后不再走聊天逻辑)
A3. 系统配置 / 运营参数
tips_parameters、global_parameters、refund_parameters、wealth_parametersapp_page_parameters、app_popup_parametersshare_links、whats_app_links、user_whats_app_linksexperts、customer_services、announcementsdeposit_channels、withdraw_banks、withdraw_bank_channels、withdraw_channel_limitspay_bank_cards、versions、point_packsadvertisements(含福利页TYPE_WELFARE,保留)- 券模板(非机器人券规则):
coupons、support_coupons、double_coupons - 通知模板:
notifications - 已是 2.0 割接表(不动):
legacy_point_vaults、legacy_unlock_ledgers、legacy_unlock_adjustments、legacy_point_exchanges、legacy_exchange_quotas、data_migration_runs
B. 归档为 *_1_0 后重建空表(2.0 业务写入)
B1. 机器人(配置空起,含券规则,不迁 1.0)
robotsrobot_daily_income_ratesrobot_coupon_rulesrobot_coupon_codes、robot_coupon_send_stats
B2. 支持 / 收益 / 活跃
tips_ledgers、tips_income_ledgers、playlet_income_ledgersincome_claim_ledgers、playlet_views、playlet_tips_shelf_ledgersactive_value_ledgers、empiric_value_ledgers
B3. 订单与积分流水
orders、point_ledgers、point_frozen_ledgers- 统计 rollup:
point_ledger_daily_stats、point_ledger_total_stats、tips_ledger_daily_stats、fund_flow_daily_stats、fund_flow_total_stats、incremental_task_cursors user_stats、user_stats_details
B4. 优惠券用户态 / 发放态
coupon_codes、user_support_coupons、user_double_coupons
B5. 通知用户态
user_notifications、notification_reactions
B6. 弹幕(空起)
bullet_comments、bullet_comment_reports、bullet_comment_hiddens
B7. 2.0 保留活动(仅此两类,空起)
- 升级补贴:
upgrade_subsidies - 合伙人计划:
partner_pool_records、partner_divided_records(及相关仅服务合伙人的表,若有则一并空起)
C. 随功能下线:归档即可(可不重建,或重建但不接流量)
| 域 | 表 |
|---|---|
| VIP | plans、user_plans;vip_invite_activities |
| 福利任务 | tasks、user_tasks、task_plans、user_task_plans、task_videos |
| AI 聊天 | chat_prompts、chat_roles、chat_sessions、chat_messages、sensitive_words;chat_role_reports、chat_role_hiddens |
| 版权包 | copyright_packs、user_copyright_packs、copyright_materials、second_creations、copyright_pack_settlements、copyright_pack_deposits、cooperation_agreements |
| 非保留活动 | 宝藏计划 treasure_plan_*;抢购 flash_sale_*;拼团房 team_rooms*;33 挑战 challenge33* / help33*;ai_carnivals*;ai_x_subscription_*;invite_register_*;support_send_users;parenting_charity_applies;campaigns / issue_product_ledgers;mega_subsidies*;help_subsidies*;lottery_lists;斋月 ramadan* / prayer_*;周年 anniversary_*;deposit_match_*;官方群用户态 user_official_groups 等(官方配置表若算 A3 可留,用户态归档);rank_data / user_fake_rank_data*;channel_data;movie_tickets 等与下线活动绑定的表 |
下线域:必须改代码停 API/cron,不能只靠清表。
代码改造范围(按优先级)
P0 — 切库迁移
- 新增 migration:按 A/B/C 清单执行 rename +(B 类)CREATE LIKE;写入执行标记防重入。
- 预发完整演练:备份 → 跑迁移 → 冒烟核心路径。
- 文档化回滚:
DROP新空表 +RENAME xxx_1_0 → xxx(仅切库失败且尚未写入新数据时)。 - 不再跑
liquidate。
P1 — 功能下线与邀请改造
- VIP:
services/point/order.go、pay.go、plan.go;man plan;禁止PRODUCT_TYPE_VIP。 - VIP 解锁:清除
User.IsVip()对买剧/播放的特殊分支。 - 福利任务:
services/task/task.go及 man task;保留CheckRobotIncomeSettlement等结算(可挪到 playlet/point)。 - AI 聊天:
services/user/chat.go、man/chat.go。 - 版权包:
services/task/copyrightpack.go、man/copyrightpack.go。 - CPS / 分销用户侧:
services/cps、分销商申请/入口对客户端关闭。 - 邀请对外 uid:注册与用户端邀请相关 API(如
services/user/user.go、invite.go、粉丝/分享相关)入参出参统一 uid;内部 uid↔fans_code 转换一层即可。 - 非保留活动:对应 service/cron/man 入口全部停用(宝藏、抢购、拼团、33、嘉年华等)。
P2 — 回归与运维
- 机器人:后台重建
robots+robot_coupon_rules→ 客户端购买 → 收益 cron → 到期退本。 - 买剧:下单支付、扣点、新空表订单/流水;观看仍读媒资原表。
- 邀请:用 uid 注册/绑定;库内仍可见 F 码;用户响应无 F 码、无 CPS 入口。
- 升级补贴、合伙人:空表后主路径冒烟。
- 广告:首页 + 福利页 均正常。
- 弹幕:若产品开放,确认写的是新空表。
- 确认无 cron 仍扫描
*_1_0或误写归档表;暂不做管理端*_1_0只读接口。
明确不做
- 不为 2.0 业务表建
s2_*并行体系(本阶段)。 - 不把 1.0 机器人配置/券规则、tips/订单/流水迁入新空表。
- 不新建
users或拆账号库。 - 不迁短剧媒资;不迁 A3 系统配置。
- 不改粉丝码底层落库形态(保持 F 前缀等现有结构)。
- 不再执行
liquidate。 - 暂不提供管理端查询
*_1_0的只读 API。 - 除升级补贴、合伙人外,其余 1.0 运营活动不在 2.0 上线。
风险与注意事项
| 风险 | 缓解 |
|---|---|
| 误归档白名单表(users/媒资/配置) | 迁移脚本硬编码白名单 + code review + 预发校验「表仍存在且行数未变」 |
| 外键/序列重建失败 | 预发用真实库结构演练;迁移后 \d 核对 |
| 余额与流水观感 | 列表只查新 point_ledgers;1.0 在 point_ledgers_1_0;legacy 金库逻辑不变 |
| uid↔粉丝码转换遗漏 | 注册/分享/邀请全链路用例;禁止用户端再出现 F 码与 CPS 文案 |
| 活动下线不彻底 | 按 C 类活动清单关 API/cron;只留升级补贴与合伙人 |
| 下线不彻底(VIP/任务/聊天等) | P1 清单 + 接口黑名单测试 |
建议实施顺序
- 按本文 A/B/C 冻结表清单(活动去留已定)。
- 编写并预发跑通归档 migration。
- 合并功能下线 + 邀请 uid 改造 PR(可与 migration 同发或紧随其后)。
- 生产:停机或只读窗口 → migration → 配置机器人/券规则与必要运营数据 → 冒烟 → 开写。
- 观察期:监控购买/收益/退本/买剧/邀请注册;
*_1_0只读留库,管理端暂不接查询接口。
决策冻结状态
| 项 | 结论 |
|---|---|
robot_coupon_rules |
随机器人进 B,空起 |
| 弹幕表 | 进 B,空起(非随聊天进 C 废弃) |
| 2.0 活动 | 仅升级补贴 + 合伙人,空起;其余进 C |
liquidate |
已完成,不再安排 |
管理端 *_1_0 只读 API |
暂不做 |
| 邀请 | 仅粉丝码;对外 uid;落库可仍 F 码 |
关键路径速查
| 域 | 路径 |
|---|---|
| 模型 | models/*.go |
| 迁移 | migrations/ |
| 机器人/收益 | services/man/robot.go、services/playlet/tips.go、services/playlet/cron.go、services/task/common.go |
| 订单/VIP/买剧 | services/point/order.go、pay.go、plan.go |
| 福利任务 | services/task/task.go |
| AI 聊天 | services/user/chat.go、services/man/chat.go |
| 版权包 | services/task/copyrightpack.go |
| 邀请/粉丝 | services/user/user.go、invite.go、services/point/fans.go |
| CPS | services/cps/ |
| 升级补贴 / 合伙人 | models/lottery.go(UpgradeSubsidies)、models/partners.go、services/point/partner.go、services/man/partner.go |
| Legacy 余额 | models/legacy_point.go、playd/splay2_migration.go、services/point/legacy_point.go |
| 广告 | models/advertisement.go、services/man/advertisement.go |
| 弹幕 | models/chat.go(BulletComment*) |