Files
inquiry_robot/deploy/CUTOVER-TO-PROD.md
T

72 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 切流目标:新系统取代 `C:\yutongda`(方案 B)
决策日期:2026-09-12。
运行根(新正式):`E:\wwwroot`(`admin\current` / `agent\current`)。
现网旧根:`C:\yutongda`(切流完成前禁止删、禁止改其 `ops` 指针)。
对照合同:`prompt/13-环境对照.md`。本文件只写**执行顺序与禁区**。
## 目标态(切完之后)
| 项 | 值 |
|---|---|
| `YTD_ENV` | `prod` |
| 运行根 | `E:\wwwroot` |
| 主账 | 新 Java 主账(非 Jeecg),端口按切流日约定(可继续 8180 或改回 8080) |
| 智能体 HTTP | 合并进程(现 8910,切流后可改挂 8810 或保持 8910 只改 Nginx) |
| Worker | 唯一后台进程 |
| AIBOT | 仅新桥(现规划 8913);**旧 8813 必须先停** |
| 域名 / 企微 | 仍为 `ai.ytd-scm.com` / `1000010`(URL 不用改) |
| MySQL / PG / Redis / 桶 | **正式列取值**;新主账**不复用 Jeecg 表结构**,用新库或迁完再切库名 |
## 当前阶段(切流前)
已做:Nginx 回调/`inquiry-form`/`agent/health` → 8910;静态后台 → `E:\wwwroot\admin\current`。
未做:新主账 8180、Worker、真库、Graph/Redis、AIBOT 切流。
**切流前数据必须继续隔离**(新系统资源名:`inquiry_robot` / `inquiry_robot_runtime` / `inquiry_robot:` / 桶 `inquiry_robot`),禁止新进程写 `jeecg-boot` / `ytd_runtime` / `ytd:prod:` / `ytd-inquiry`。
不要再用 `ytd_test*` 命名。
## 阶段清单
### P0 — 新正式底座(仍隔离库)
1. 服务器安装 **JDK 17+**(已装:`E:\wwwroot\tools\jdk-17`,Microsoft OpenJDK 17.0.16;环境变量 `JDK17_HOME`。旧 Jeecg 仍用 `C:\yutongda\tools\jdk8`)。
2. 开通/确认新系统库账号:MySQL `inquiry_robot`、PG `inquiry_robot_runtime`、Redis db1 前缀 `inquiry_robot:`、桶 `inquiry-robot`(勿指 `jeecg-boot`)。
- Redis / MinIO 已在应用机配通;MySQL/PG 建库 SQL 在 `E:\wwwroot\ops\sql\`,需数据机管理员执行(现网 `ytd_jeecg` / `ytd_runtime` **无建库权限**)。
3. 部署并常驻:主账 `8180`、智能体 `8910`、Worker;后台静态已在 `admin\current`。
4. 主账:工单六态 + transition API;智能体改打 `BIZ_API_BASE_URL=http://127.0.0.1:8180`。
5. Redis 队列/幂等、PG checkpoint 接通。
6. 业务验收:建单 → 补问 → 报价 → 六态,不依赖旧 Jeecg 写路径。
### P1 — 切流日(取代现网进程)
须单独批准。失败则按现网流程回滚 `ai.conf` 与进程。
1. 备份:`ai.conf`、`E:\wwwroot\ops\active-release.json`、现网 `C:\yutongda\ops\active-release*.json`。
2. `.env` 改为 `YTD_ENV=prod`;库/Redis/桶继续用 `inquiry_robot*`(或甲方最终正式名);去掉告警 `[test]`。
3. Nginx:`/jeecgboot` 指到**新主账**(勿再指旧 8080,除非回滚)。
4. 停现网:旧智能体相关(8810 等)、**先停 8813**,再起新 AIBOT `8913` 并 `WECOM_AIBOT_ENABLED=true`。
5. 确认 8080 旧 Jeecg:按产品决定停或只读保留;**新后台只打新主账**。
6. 冒烟:企微收发、后台登录、建单、六态、健康检查。
7. 观察期后再处理旧目录归档(不要当天直接删 `C:\yutongda`)。
### P2 — 收尾
- TMS lock/release 按产品打开。
- 旧 release / 旧库只读归档。
- 发布脚本只写 `E:\wwwroot`,不再用现网累计发布器切活动指针。
## 硬禁止(直到 P1 批准)
- 新主账 / 智能体连接 `jeecg-boot`、`ytd_runtime`、Redis `/0` + `ytd:prod:`、桶 `ytd-inquiry`
- 与现网 **同时** 连接同一 AIBOT 长连接
- 删除或改写 `C:\yutongda\ops` 活动指针
- 把半成品 `YTD_ENV=prod` 却仍混用旧现网库密钥
## 回滚(P1 失败)
1. `ai.conf` 恢复切流前备份;硬重启 Nginx(避免 BOM / 卡死的 Restart-Service)。
2. 停 `E:\wwwroot` 新进程中已接管的部分;拉起现网对应进程。
3. 确认 `https://ai.ytd-scm.com/wecom/callback` 回到现网行为。