4.4 KiB
4.4 KiB
269 Admin:部署档口逐件回写与原始 SKU 匹配版本
- 类型:部署
- 父级大工单:#14
- 所属 MVP / 版本:#15 / Admin 生产部署
- 状态:已完成,待用户验收
- 日期:2026-08-18
- Gitea 工单:#269
背景与目标
把 #250 多件档口入库码逐件回写和 #259 原始 SKU 确定性匹配发布到生产 Admin,继续通过 https://buy.833729.com 提供服务,并安全处理相应 MySQL 追加迁移。
最终方案
- 最初固定提交
a989e0d隔离构建并上传。生产预检发现数据库已被此前运行中的本地 Admin 记录为 v28,但source_sku_raw使用中间版本的默认排序规则,最终结构自检拒绝启动;稳定链接此时没有切换,旧服务继续运行。 - 按追加迁移原则在 #259 增加 v29,不改写 v28:把既有字段统一为
VARCHAR(500) COLLATE utf8mb4_bin NULL,字段已正确时不改数据。最终固定提交改为7175af5并重新隔离验证、构建、上传和校验。 - 切换前确认 SYB 同步、AI 匹配及档口入库码排队/回写均为 0。两条
assigned/claimed采购任务是 8 月 12–13 日遗留状态,对应 Client 已长期未上线,不属于正在执行的任务。 - 创建生产数据库单事务逻辑备份,验证权限、压缩包和建表段。目标二进制在
127.0.0.1:18081预检成功并执行 v29,登录页返回 200。 - 再次确认后台空闲后停止 systemd,原子切换稳定链接并启动。发布后验证 release 哈希、systemd、监听、schema v29、后台状态、Nginx、本机及公网 HTTP。
- 配置、数据和 AI 密钥继续放在 release 外并由现有链接/环境文件复用;没有读取或输出凭据,也没有触发真实业务动作。
改了哪些
/opt/cmautobuy/releases/7175af5/cmautobuy-admin:新增并启用最终生产 release。/opt/cmautobuy/cmautobuy-admin:从d79e5c4原子切换到7175af5。/opt/cmautobuy/backups/autobuy-before-269-20260818T073254Z.sql.gz:新增部署前生产备份。- MySQL schema:从已存在的 v28 升级至 v29,
source_sku_raw统一为utf8mb4_bin。 - 未启用的候选 release
a989e0d和上传暂存文件已删除;前一生产 released79e5c4保留,但不兼容 schema v29,不能单独回切。
验收结果
| 验收标准 | 结果 |
|---|---|
发布物来自固定提交 7175af5,Go 1.23.0 测试、build、vet 通过 |
通过 |
| 部署前后台任务空闲,数据库备份完整 | 通过 |
| 本地、上传及最终 release 哈希一致 | 通过 |
| v29 迁移成功且原始 SKU 字段为二进制排序规则 | 通过 |
systemd active/enabled,仅监听 127.0.0.1:18080 |
通过 |
| Nginx、本机和公网登录页、静态资源正常 | 通过 |
| 新二进制包含 #250、#259 页面/错误标识 | 通过 |
| 未修改配置或触发真实业务动作 | 通过 |
发布结果:
- 二进制:28,131,480 字节,SHA-256
c14b1a92736d7e83459038b1957b835bd8d12a1108289e5788ca3f66c6468ac6。 - 数据库备份:5,101,261 字节、权限
0600,SHA-2567d36990b8db734cde9890f4d7ad4a648080b0fd5f3cd84bb498c978bf82fd832,包含 32 个建表段。 - 新进程 PID 为
21314,启动时间2026-08-18 15:39:51 CST。 - 本机根路径 303、登录页 200;公网根路径 303、登录页 200、
app.js200。 - 发布后 SYB、AI、档口入库码活动任务均为 0,启动日志中的 fatal、panic 和迁移错误均为 0。
测试
- 执行的命令:隔离 worktree 中使用 Go 1.23.0 执行
go test ./... -count=1、go build ./...、go vet ./...;Linux amd64 静态构建;服务器执行mysqldump、gzip -t、sha256sum、独立端口预检、schema/字段查询、systemctl、ss、nginx -t、journalctl、本机与公网curl。 - 结果:最终构建、备份、v29 迁移、切换和发布后检查全部通过。
- 没验证到的部分:未使用生产账号登录后执行 Excel 重新导入、顺运宝匹配或真实多件回写;未触发同步、AI 匹配、采集、采购、下单或付款;未实际恢复数据库备份。
遗留问题
前一 release d79e5c4 最高只支持旧 schema,不能在 v29 数据库上单独启动。若必须回到该版本,需要同时恢复本次备份,这会覆盖备份时间之后产生的数据。
相关提交
b685d2cfix: 追加原始SKU字段兼容迁移 (#259)7175af5本次生产目标代码基线