82 lines
4.2 KiB
Markdown
82 lines
4.2 KiB
Markdown
# 影子 V3.2 更新、检查和回滚
|
||
|
||
本次只修复影子 UTC 时间映射、影子告警保存和 CMD 导出。Legacy 仍负责实际业务,不是正式算法切换。本次不需要安装、升级或卸载数据库对象,也不修改全局 JVM 时区。
|
||
|
||
## 第一步:选好短暂停机时间
|
||
|
||
现场由这一份 WMS 程序继续运行 Legacy,重启会短暂中断 WMS 服务。请选业务空闲的维护窗口,不要在作业处理中直接重启。
|
||
|
||
只停止 IDEA 中 `C:\project\FT546WMS-SHANDOW` 对应的 **WMS**。不要停止 WCS、WCS 影子或其他 Java 进程,不使用 `taskkill /IM java.exe`。
|
||
|
||
## 第二步:记录旧版本并更新代码
|
||
|
||
在 CMD 中逐行执行:
|
||
|
||
```cmd
|
||
cd /d C:\project\FT546WMS-SHANDOW
|
||
git branch --show-current
|
||
git status --porcelain
|
||
git rev-parse HEAD
|
||
```
|
||
|
||
分支必须是 `test/ft546wms-shadow-v3-20260903`,第二条 Git 检查必须没有输出。否则停止更新,让服务器 AI 汇报现有改动,不覆盖、不清理文件。
|
||
|
||
确认后,逐行执行;任何命令失败都停止:
|
||
|
||
```cmd
|
||
git tag backup/ft546wms-before-v32-20260907 HEAD
|
||
git fetch origin
|
||
git pull --ff-only origin test/ft546wms-shadow-v3-20260903
|
||
git rev-parse HEAD
|
||
git status --porcelain
|
||
```
|
||
|
||
如果备份标签已存在,不覆盖它,先让服务器 AI 核对。更新后的提交号应与本次交付提交一致,工作区仍应干净。
|
||
|
||
## 第三步:在 IDEA 重新编译并启动
|
||
|
||
保持原 Run Configuration、端口、数据库、许可证和环境变量。不要新开第二个 WMS。执行 Build / Rebuild Project,成功后启动原 WMS 配置。
|
||
|
||
关键变量仍然是:
|
||
|
||
```text
|
||
FORTUCKY_SHADOW_ENABLED=true
|
||
FORTUCKY_ALGORITHM_MODE=SHADOW
|
||
FORTUCKY_ALGORITHM_DATABASE_WRITES_ENABLED=true
|
||
FORTUCKY_ALGORITHM_WAREHOUSE_ID=01
|
||
FORTUCKY_SHADOW_TIMEOUT_SECONDS=3
|
||
FORTUCKY_SHADOW_SNAPSHOT_MAX_AGE_SECONDS=60
|
||
FORTUCKY_SHADOW_QUIET_INTERVAL_MILLIS=1000
|
||
```
|
||
|
||
其他现有变量原样保留,不把这段当作整份环境变量的替代。不要添加 `-Duser.timezone=UTC`,不要放大快照有效期。
|
||
|
||
## 第四步:先确认采样,再累计测试时间
|
||
|
||
记录这次真正启动成功的北京时间和 UTC 时间。等现场自然发生正常业务,不制造、重放或重复提交出入库请求。让服务器 AI 按 `SHADOW_V3_SERVER_AI_EXPORT_PROMPT.md` 只读导出,将开始时间填为这次 V3.2 启动时间的 UTC 值。
|
||
|
||
检查以下证据:
|
||
|
||
- `ADMITTED` 在真实业务后增加;`ADMISSION_US` 只是检查次数,不代表采样成功。
|
||
- `INBOUND_COMPARE` / `OUTBOUND_COMPARE` 开始产生,包含快照时间、代次和输入诊断。没有某类业务时不能要求对应计数增长。
|
||
- `logs\shadow-diagnostics.log` 保存影子 WARN/ERROR,时间明确为 UTC。文件为空只表示本文件没有记录,不能单独证明影子可用。
|
||
- 快照同步时间和新写入的 `flushed_at` 使用 UTC。旧累计指标不清零;旧行在首次新刷新前仍可能保留旧的本地时间,不能把所有历史时间强行减八小时。
|
||
|
||
`EXPORT_OK` 仅表示文件导出成功。`NO_COMPARISONS` 表示本窗口尚无入出库比较,不能批准切换。空闲后第一笔请求因快照超过 60 秒而跳过仍可能正常;不要为增加样本而关闭过期或并发保护。
|
||
|
||
时间映射修复有本地回归测试,但现场还需确认刷新错误、业务频率等其他因素是否影响采样。开始产生有效样本之后再累计观察期,仍按连续七天、至少 100 个有效入库和 100 个有效出库比较及原性能门槛评估,不按程序开了几天直接切换。
|
||
|
||
## 出现问题时回滚
|
||
|
||
如果更新后影响现有使用,先停止这一份 WMS,WCS 不动。只在工作区干净时执行:
|
||
|
||
```cmd
|
||
cd /d C:\project\FT546WMS-SHANDOW
|
||
git status --porcelain
|
||
git switch --detach backup/ft546wms-before-v32-20260907
|
||
```
|
||
|
||
在 IDEA Rebuild Project 后,用原配置启动,恢复更新前代码。若有未提交改动或命令报错,停止操作,不用 reset/clean 强制覆盖。
|
||
|
||
另一种隔离方式是在维护窗口将原配置中的 `FORTUCKY_SHADOW_ENABLED` 改为 `false` 后重启 WMS,停止影子观察,Legacy 继续运行。两种方式均不回滚业务数据、不卸载 `alg` 表,保留日志和影子数据用于排查。
|