diff --git a/docs/task/249-admin部署统一搜索清除按钮版本.md b/docs/task/249-admin部署统一搜索清除按钮版本.md new file mode 100644 index 0000000..cf95553 --- /dev/null +++ b/docs/task/249-admin部署统一搜索清除按钮版本.md @@ -0,0 +1,82 @@ +# 249 Admin:部署统一搜索清除按钮版本到生产服务器 + +- 类型:部署 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 / Admin 生产部署 +- 状态:已完成,待用户验收 +- 日期:2026-08-15 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/249 + +## 背景与目标 + +生产 Admin 原来运行 `7736ab7`,尚未包含 #248 的列表搜索清除按钮。本任务把固定提交 +`d79e5c4` 隔离构建并发布到 `185.216.248.75`,继续通过 +`https://buy.833729.com` 提供服务。 + +## 最终方案 + +- 在 Windows 系统临时目录建立 `d79e5c4` detached worktree,与主工作区未提交的 + Client 文件隔离。第一次验证命令误在仓库根目录执行,Go 在编译前即因找不到模块退出; + 随后改到隔离工作树的 `admin/` 目录,使用固定 Go 1.23.0 完成 vet、全量构建、全量测试 + 和 Linux amd64 静态构建。 +- 上传后核对本地、暂存和最终 release 的 SHA-256、文件大小和 ELF 类型;正式 release + 继续链接 `/opt/cmautobuy/config.yaml` 和 `/opt/cmautobuy/data`,没有复制或输出凭据。 +- 部署前确认生产仍运行 `7736ab7`,MySQL 8.4.8、schema v25,SYB 同步、AI 匹配、 + 档口入库码排队/回写均为 0。目标二进制先在不对公网开放的 `127.0.0.1:18081` + 使用生产环境启动,数据库自检和登录页检查通过后才进入切换。 +- 再次确认后台任务为 0,停止 systemd 后原子切换稳定二进制链接并启动。发布后核对 + release 哈希、5 个清除入口模板标识、schema、后台任务、systemd、监听、Nginx、 + 本机和公网 HTTPS。 +- 本次代码不包含 schema 变化,也不主动写业务数据,因此没有额外生成数据库备份。 + 前一 release `7736ab7` 同样支持 v25,发生启动或页面健康检查失败时可以只回切应用。 +- 部署过程没有触发顺运宝同步、档口入库码匹配/回写、AI 匹配、采集、采购、下单或付款。 + +## 改了哪些 + +- `/opt/cmautobuy/releases/d79e5c4/`:新增并启用目标 Admin release。 +- `/opt/cmautobuy/cmautobuy-admin`:稳定链接从 `7736ab7` 原子切换到 `d79e5c4`。 +- `docs/task/249-admin部署统一搜索清除按钮版本.md`:新增本次部署归档。 + +前一 `7736ab7` release 继续保留,可在不恢复数据库的情况下回切。服务器上传暂存文件和 +预检日志已删除,本地 detached worktree 已移除。已校验的 Linux 二进制暂时保留在系统 +临时目录 `cmautobuy-deploy-249-20260815-175451/artifacts`,不在仓库中且不含配置或数据。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 发布物只来自固定提交 `d79e5c4`,固定 Go 1.23.0 验证通过 | 通过 | +| 切换前 SYB、AI 和档口入库码活动任务均为 0 | 通过(两次核对) | +| 本地、上传暂存和最终 release 哈希一致 | 通过 | +| systemd active/enabled,只监听 `127.0.0.1:18080` | 通过 | +| schema 保持 v25,未执行数据库迁移或业务写入 | 通过 | +| 本机、公网页面及目标模板标识正常 | 通过 | +| 配置、密钥和业务数据保持,未触发真实业务动作 | 通过 | + +发布结果: + +- 目标二进制:28,012,696 字节,SHA-256 + `0c550bda3d6baf04a190877a2a4a22ad2c3ec55a7d6922dc43d8e9f25c05567d`。 +- 新服务 PID 为 `31437`,启动时间 `2026-08-15 17:58:09 CST`;启动日志中的数据库 + 就绪标识存在,fatal、panic 和迁移错误均为 0。 +- MySQL 服务端为 8.4.8,schema 为 v25;发布后的 SYB、AI 和档口入库码活动任务均为 0。 +- 本机根路径 303、登录页 200;公网根路径 303、登录页 200;Nginx 配置检查通过。 +- 发布物中蝦皮、PDD、采集采购、客户端和用户管理的 5 个清除链接标识全部存在。 + +## 测试 + +- 执行的命令: + - 隔离 worktree:`GOTOOLCHAIN=go1.23.0 go vet ./...`、`go build ./...`、 + `go test ./... -count=1` + - `GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags='-s -w'` + - 上传前后 `sha256sum`、`stat`、`file` + - 独立端口生产环境启动预检、生产运行态只读 SQL + - `readlink`、`systemctl`、`ss`、`nginx -t`、`journalctl`、本机和公网 `curl` + - 在最终二进制中核对 5 个清除入口模板标识 +- 结果:固定 Go 1.23.0 验证、静态构建、启动预检、切换及全部发布后检查通过。 +- **没验证到的部分**:未使用生产账号登录后逐个点击 5 个清除入口;未触发真实同步、 + AI 匹配、档口入库码匹配/回写、采集、采购、下单或付款;未实际执行应用回切。 + +## 相关提交 + +- `d79e5c4`:本次生产目标代码基线。