From 03d3cb5ac95cb73c68114d0c5be7c4b7060d1059 Mon Sep 17 00:00:00 2001 From: chengma Date: Fri, 14 Aug 2026 17:26:07 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E4=BB=BB=E5=8A=A1=20#228?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/228-admin部署最新版本4d6ee8c.md | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 docs/task/228-admin部署最新版本4d6ee8c.md diff --git a/docs/task/228-admin部署最新版本4d6ee8c.md b/docs/task/228-admin部署最新版本4d6ee8c.md new file mode 100644 index 0000000..87e3b16 --- /dev/null +++ b/docs/task/228-admin部署最新版本4d6ee8c.md @@ -0,0 +1,78 @@ +# 228 Admin:打包部署最新版本 4d6ee8c 到生产服务器 + +- 类型:部署 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 / Admin 生产部署 +- 状态:已完成 +- 日期:2026-08-14 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/228 + +## 背景与目标 + +生产服务此前仍运行提交 `a14c2bf`,本地最新已提交基线为 `4d6ee8c`。本次把包含 AI 服务商配置、AI 规格候选匹配、SYB 批量 AI 匹配、AI HTTP 兼容及后续数据维护代码的最新 Admin 发布到 `185.216.248.75`,继续通过 `https://buy.833729.com` 提供服务。 + +生产数据库已是 schema v22,旧生产二进制 `a14c2bf` 不再适合作为重启回退版本,因此同时准备支持 v22 的 `557c996` 作为快速回退 release。 + +## 最终方案 + +- 在系统临时目录分别建立 `4d6ee8c` 和 `557c996` 的 detached worktree,构建过程与主工作区未提交的 Client 文件完全隔离。 +- 两个版本均使用固定 Go 1.23.0 完成全量测试、静态检查和 Linux amd64 静态构建。 +- 发布前连续三次、切换前再一次确认运行中的 SYB 同步和 AI 匹配批次均为 0。 +- 使用生产业务账号生成 `--no-tablespaces` 单事务逻辑备份,设置权限为 `0600`,完成 gzip、表数量和 SHA-256 校验。 +- 上传目标和回退二进制,核对本地、暂存和最终 release 的 SHA-256;两个 release 均复用稳定配置和数据软链接。 +- 停止 systemd 后原子切换稳定二进制链接。目标版本启动或本机登录页探测失败时,部署脚本自动切换到 `557c996`;本次目标版本健康检查通过,未触发回退。 +- 部署后核对 release、进程、监听、schema、运行中批次、AI 配置、启动日志、本机及公网 HTTP 和最新静态资源。 +- 未修改生产配置、AI 密钥、数据库业务数据或任务状态,未触发同步、AI 匹配、采集、采购、下单或付款。 + +## 改了哪些 + +- `/opt/cmautobuy/releases/4d6ee8c/`:新增并启用目标 release。 +- `/opt/cmautobuy/releases/557c996/`:新增 schema v22 兼容快速回退 release。 +- `/opt/cmautobuy/cmautobuy-admin`:稳定链接从 `a14c2bf` 原子切换到 `4d6ee8c`。 +- `/opt/cmautobuy/backups/autobuy-before-228-20260814T092057Z-notablespaces.sql.gz`:新增部署前完整业务库备份。 +- `docs/task/228-admin部署最新版本4d6ee8c.md`:新增本次部署归档。 + +上传暂存区、两个本地 detached worktree 和临时构建二进制已经清理;目标、回退 release、旧 release 和数据库备份保留。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 发布包只来自固定提交 `4d6ee8c`,不包含主工作区未提交文件 | 通过 | +| 目标和回退版本通过固定 Go 1.23.0 测试、vet 与 Linux amd64 构建 | 通过 | +| 发布前无运行中 SYB 同步或 AI 批次,数据库备份可读取 | 通过:四次均为 0;备份权限 `0600`,gzip 校验通过 | +| 本地、上传和 release 二进制 SHA-256 一致 | 通过 | +| 稳定链接指向 `4d6ee8c`,旧版本与 v22 回退版均保留 | 通过 | +| systemd、监听、schema 和启动日志正常 | 通过:active/enabled,监听 `127.0.0.1:18080`,schema v22 | +| 本机和公网 HTTP、最新 AI 静态资源正常 | 通过 | +| 未修改凭据和业务数据,未触发真实业务动作 | 通过 | + +发布物与备份: + +- 目标二进制:27,730,072 字节,SHA-256 `446e5903ec7768684bf30fcfdd9f0b46530b68d505ab23360f7b2c08d0ff3d5f`。 +- 回退二进制:27,730,072 字节,SHA-256 `4f28d42a28bcc4c3ff0085303e754f108f2136928bf1e4ae8767b8076a9cd4b0`。 +- 数据库备份:4,676,057 字节、30 个建表段,SHA-256 `689ce015cfd5b28fda36f58eae17f68b638db70340be36665e6aaf443e41656e`。 +- 部署后服务 PID 为 3898,启动时间为 2026-08-14 17:22:53(UTC+8)。 +- 本机根路径返回 303、登录页返回 200;公网根路径返回 303、登录页返回 200、未登录访问 AI 设置返回 303。 +- 公网 `app.js` 已包含 `setupAIMatchCreate`,本机 CSS 已包含 AI 匹配进度弹窗标识。 +- schema 仍为 v22;运行中的 SYB 同步和 AI 批次均为 0;已启用的 `gpt-5.5` 配置仍保持连接测试成功。 +- 新进程启动后 Client 领取轮询继续返回 204。 + +## 测试 + +- 执行的命令: + - 两个隔离 worktree 分别运行 `GOTOOLCHAIN=go1.23.0 go test ./... -count=1` 和 `go vet ./...` + - 两个版本分别运行 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags='-s -w'` + - 生产运行态检查、`mysqldump --no-tablespaces`、`gzip -t`、SHA-256、release 安装和原子切换 + - `systemctl`、`ss`、schema 与运行中批次 SQL、`journalctl`、本机及公网 HTTP、静态资源标识检查 +- 结果:所有自动化测试、构建、备份、发布和健康检查通过,未触发自动回退。 +- **没验证到的部分**:未使用生产账号登录后人工操作 AI 设置或批量 AI 匹配;未实际创建 AI 匹配、采集或采购任务,未执行 Client 真机下单或付款;未实际触发回退,只验证了回退 release、哈希和自动回退路径。 + +## 遗留问题 + +旧 release `a14c2bf` 不兼容当前 schema v22,不能作为普通应用回退目标。需要快速回退时使用 `/opt/cmautobuy/releases/557c996/cmautobuy-admin`;只有需要恢复旧数据库结构时才同时恢复本次数据库备份,该操作会覆盖备份时间之后的业务数据。 + +## 相关提交 + +- `4d6ee8c`:本次生产目标代码基线。 +- `557c996`:本次 schema v22 兼容快速回退代码基线。