# 影子 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` 表,保留日志和影子数据用于排查。