From 0fad1b09bbd710010454c5dbcd50588985d3850a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Fri, 4 Sep 2026 23:14:53 +0800 Subject: [PATCH] =?UTF-8?q?docs(deploy):=20=E6=95=B0=E6=8D=AE=E5=88=86?= =?UTF-8?q?=E6=9E=90=E6=9D=BF=E5=9D=97=E9=A6=96=E9=83=A8=E7=BD=B2=E5=9B=9E?= =?UTF-8?q?=E5=A1=AB=E6=B3=A8=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- docs/DEPLOY.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md index 221e2a5..bc4a6f1 100644 --- a/docs/DEPLOY.md +++ b/docs/DEPLOY.md @@ -194,6 +194,38 @@ docker compose -f docker-compose.server.yml exec scheduler \ (类型变更类迁移在 MySQL 上锁大表写入,避开抓取窗口:北京 02:00 全量、 每 4h 增量;增量耗时约 15-30 分钟)。 +### 数据分析板块首部署附加步骤(一次性,2026-09-04) + +alembic 链自当前线上版本起新增 3 支迁移:`a7d3e9f1c2b4` msg_daily_stats +日汇总表、`f0a1b2c3d4e5` 分析板块四新表 + `message.fetched_at` 索引、 +`c3d4e5f6a7b8` 五表 `updated_at` 窄索引。 + +- **迁移随 `up -d --build` 自动跑**,平时无需手动。⚠️ 其中 + `ix_message_fetched_at` 要在 86 万行 message 表上建索引,约十几秒 + (InnoDB online DDL,量级同 c53f90b1e6a4)——**避开北京 02:00 全量抓取 + 窗口**执行升级:先停 scheduler 容器再 up,或白天低峰手动跑 + `sudo docker compose -f docker-compose.server.yml exec backend alembic upgrade head`。 +- 部署完成后在**夜间低峰**跑两条一次性回填,此后每 4h 的 analytics tick + 自动增量维护,不用再手动: + ```bash + sudo docker compose -f docker-compose.server.yml exec backend python -m app.sync.cli staff-daily-stats + sudo docker compose -f docker-compose.server.yml exec backend python -m app.sync.cli sensitive-scan --full + ``` + 前者全量重建 stat_daily_staff(分钟级);后者逐词扫全库并建扫描水位 + (高频词分钟级)。**首跑必须带 `--full`**:不建水位,增量扫描会拒绝扫库。 +- **顺序**:sensitive-scan --full 宜赶在调度器首次 4h analytics tick 之前; + tick 首次在进程启动 4h 后才触发,部署当天跑回填通常天然满足。万一 tick + 先到,也只是每 4h 记一条 ERROR 日志(analytics tick failed,无扫描水位), + 属预期提示非故障,补跑 --full 后即消失。 +- 升级收尾 `sudo docker compose -f docker-compose.server.yml restart frontend` + (让 nginx 重新解析 backend 容器 IP,防漂移后 502,同既有升级流程)。 +- 浏览器验收:登录后依次打开 `/analytics/dashboard`、`/analytics/churn`、 + `/analytics/unreplied`、`/analytics/sensitive` 四页;各页角标「数据截至」 + 在上述回填完成后才会显示。 +- 起步词库 6 词(私单/飞单/加私人微信/红包/转账/离职)由 sensitive-scan + 幂等自动补种,无需手插;后续加新词默认只扫增量,要扫历史消息需重跑 + `--full`。 + ## 8. 本地收尾(部署验证通过后) ```bash