reports · post-mortem

万花筒 · 停摆终局快照

万花筒 视频渲染业务因不可抗力于 2026-06-03 停摆、2026-07-06 正式关停。本页是关停当日的完整状态记录:运营总账、时间线、审计、备份产物与善后清单。

1. 业务是什么

万花筒是一套祭祀 / 命理类定制视频的自动化渲染流水线:客户在 Windows 客户端选模板、填委托人信息提交订单,服务端调度 45 台租用渲染机(After Effects)+ 6 台 TTS 语音合成 GPU 机,成片自动上传 COS 交付回客户端,按点数计费。

技术栈一句话:腾讯云轻量服务器(Flask new_api.py :5000 收单调度 + admin_web.py :8888 管理后台)+ 轻量数据库 MySQL(main_db,24 张表)+ COS 两个桶(模板下发 / 成片交付)+ 外部渲染 / TTS 集群靠 HTTP 轮询抢单。代码全量在 GitHub 私有仓库 ranzi0000/wanhuatong

2. 运营总账

指标数值备注
运营周期2026-02-26 → 2026-06-03约 14 周(首单至产能停摆)
总订单561,633jobs 表全量
成功交付558,920交付率 99.5%
单日峰值11,507 单2026-05-28
客户体量1,254 账户(456 主账号)关停日存量
模板库125 个模板118 AE 工程 + 4 直出视频等
点数流水564,231 笔quota_ledger 全量
渲染集群45 渲染机 + 6 TTS 机租用,2026-06-03 全部离线

3. 停摆时间线

时间事件
2026-02-26第一笔订单,业务上线
2026-06-01 ~ 06-02最后的正常运营日:管理员照常开户、充点,单日仍有新客
2026-06-03 凌晨不可抗力停摆:45 台渲染机心跳、TTS、成片交付同时终止,此后再未恢复。当天下午管理员 hg / dz 登录后台查看
2026-06-03 ~ 07-05「半死」状态:服务端与客户端收单入口仍在运行,客户持续提交订单(每天 2~15 单)但无产能渲染,累计堆积 1,380 单
2026-07-04 / 07-06超管 admin 登录后台;07-06 物理删除 ll / dz / hg 三个内部账户(本人操作,已确认)
2026-07-06 12:47正式关停:wht-new-api 收单服务停止并禁用自启,客户端入口关闭。管理后台暂留(点数负债处理期间使用)

4. 管理员操作审计

审计主数据源是数据库内两张表:sys_logs(近 7 天)+ sys_logs_archive(7 天前全部历史,2026-02-28 起共 4,906 条),已随数据库全量备份一并留存。近 60 天管理员写操作的分布:

操作类型次数最后一次
登录管理后台3122026-07-06 11:45(admin)
财务充扣(critical)2692026-06-02 13:52
开通新子客户 / 主客户(critical)2682026-06-02 09:42
重置密码踢下线712026-06-02 17:01
修改可见标签 / 模板操作 / 节点维护等~1002026-05-31
物理删除账户(critical)32026-07-06 11:58(删 ll / dz / hg,本人操作)
审计盲区(留档备查)
  • 后台登录不记录来源 IP——sys_logs 无 IP 字段,admin_web 也没开请求日志。哪次登录来自哪里,系统层面无法追溯。
  • 纯浏览不留痕——管理员登录后查订单、看报表、导出数据均无记录;审计只覆盖写操作。
  • 被物理删除账户的关联数据随删除即时销毁,只存在于删除时点之前的数据库备份中(云端自动备份保留窗口约 7 天)。

其余留痕位置:quota_ledger(每笔点数变动,可与「财务充扣」交叉核对)、bk_edit_log(记账模块编辑史)、client_messages(管理员发的客户提醒)、服务器 logs/ 下的 NSSM 服务日志、Windows 安全事件日志(服务器本身的 RDP/SSH 登录)。以上全部包含在数据库备份或服务器磁盘内。

5. 系统最终状态(2026-07-06 关停时点)

项目状态
wht-new-api(:5000 收单)已停止 + 禁用自启(12:47)
wht-admin-web(:8888 后台)运行中,留给点数负债处理,服务器关停时一并下线
堆积未渲染订单792 单等渲染 + 588 单等 TTS(6-3 后提交,客户已扣点、永不交付)
点数负债由专人线下处理(数据在备份的 user_quota / quota_ledger 表)
渲染 / TTS 集群54 节点全部离线(最后心跳 2026-06-03 00:57)
交付桶 video-1406214096已被 1 天生命周期规则自动清空(0 对象)
模板桶 templates-1406214096638 对象 / 29.27 GB,对象清单已存档,桶按计划删除
数据库 main_db24 张表 / 约 1.7 GB,业务数据完整,已全量备份

6. 备份产物清单

备份目录:Mac ~/Backups/wanhuatong-final-20260706/

文件内容校验
main_db_final_20260706.sql.gzmain_db 全量导出(mysqldump --single-transaction,含表结构 / 数据 / 触发器),101 MBMD5 c9deab63b9cf79f762c8cd896e04572d;gzip 完整性通过;24/24 张表逐表行数与线上精确一致(含 383 万行 job_events)
rowcounts_live.txt导出时点线上全表行数基准
templates_bucket_inventory.tsv模板桶删除前的全部 638 个对象清单(大小 / 修改时间 / key)
恢复方式

任何 MySQL 8.x:gzcat main_db_final_20260706.sql.gz | mysql -u root -p 新库名。代码全量在 GitHub 私有仓库(服务器版与 git 一直保持同步),配合此备份可完整复原系统。

7. 基础设施与费用

资源规格 / 状态到期 / 费用
生产服务器(上海轻量 · Windows)49.234.180.69 · 4G 内存 · C 盘余 34 GB · 4-21 起连续运行2026-07-25 到期
轻量数据库(内网 10.0.0.4)MySQL 8.0.30 · 运行中约 ¥43/月
北京 relay 服务器(Ubuntu)82.156.120.246 · 其他业务在用2026-07-28 到期
腾讯云账户余额¥310.44(月消耗约 ¥160:服务器 ¥117 + 数据库 ¥43 + COS 不到 ¥1)
同机依赖警示

生产服务器上还跑着 baodan 报单中心(:80,活业务)和 order_system(:5001);轻量数据库里还有 baodan_dborder_db7-25 服务器到期前必须先决定 baodan 的去向(迁移或一并下线),到期不续费会连带杀掉它们。

8. 关停清单

已完成(2026-07-06)

  1. ✔ 停止并禁用 wht-new-api 收单服务(5000 端口已关,baodan / order 不受影响)
  2. ✔ main_db 全量备份 + 双重验证(gzip 完整性 + 24 表行数精确比对)
  3. ✔ 模板桶对象清单存档(删除前留证)
  4. ✔ 服务器状态 + 腾讯云余额 / 资源到期盘点
  5. ✔ 删除模板桶 templates-1406214096(29.27 GB)

待办(按时间紧迫度排序)

  1. 7-25 前决定 baodan 去向——迁走或一并关停,别让服务器到期误杀活业务
  2. 点数负债处理完成后,停掉 wht-admin-web,服务器到期不续费(或提前销毁)
  3. 轮换数据库 root 密码与 COS 密钥——明文残留在 6 台外部 TTS 租用机磁盘和 git 历史中;注意 template_cos 密钥若被其他项目复用需先排查
  4. 45 台渲染机 + 6 台 TTS 机停租,归还前清理磁盘上的 worker EXE、配置与密钥
  5. 企微告警机器人 webhook 停用
  6. 备份异地冗余:把 ~/Backups/wanhuatong-final-20260706/ 再复制一份到异地(COS 归档 / GCS / 移动硬盘任选)

万花筒 · 2026-02-26 ~ 2026-07-06 · 561,633 单 · 交付率 99.5%