From 3af9bf245a10ba05d41ed74a9cb3451f70db5088 Mon Sep 17 00:00:00 2001 From: chengma Date: Thu, 13 Aug 2026 09:00:10 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=20#198?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../198-部署店铺准入并清理非允许SYB数据.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 docs/task/198-部署店铺准入并清理非允许SYB数据.md diff --git a/docs/task/198-部署店铺准入并清理非允许SYB数据.md b/docs/task/198-部署店铺准入并清理非允许SYB数据.md new file mode 100644 index 0000000..e0fdc6e --- /dev/null +++ b/docs/task/198-部署店铺准入并清理非允许SYB数据.md @@ -0,0 +1,70 @@ +# 198 Admin:部署店铺准入版本并清理非允许店铺 SYB 数据 + +- 类型:部署 / 数据维护 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 / 顺运宝同步店铺准入生产上线 +- 状态:已完成 +- 日期:2026-08-13 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/198 + +## 背景与目标 + +把包含 #196、#197 的最新 Admin 部署到生产,并按生产数据库中 12 个启用店铺, +删除 `syb_orders` 中不属于允许店铺的历史数据。清理必须有可恢复备份,并保证同步 +记录和其他模块数据不被删除。 + +## 最终方案 + +- 从固定提交 `e8c5293` 建立 detached 隔离工作树,固定 Go 1.23.0 验证并构建 + Linux amd64 静态二进制;本地和远端 SHA-256 一致。 +- 发布前三次检查生产运行中顺运宝同步均为 0。 +- 使用生产业务账号做单事务逻辑备份,权限设为 600,并验证 gzip 和 SHA-256。 +- 上传独立 release `e8c5293`,复用稳定配置和 data 软链接,原子切换 systemd。 +- 因生产 schema 在发布前已是 v14,旧 release `a4556b4` 只支持 v13,另外构建并上传 + `8a8fff8` 作为兼容 v14 的回退版本。 +- 只读预览确认启用店铺 12 个、待保留 3388 行、待删除 4938 行,待删行没有 + `task_syb_sources` 引用。 +- 短暂停止 Admin 防止并发同步,重新核对预览仍为 4938 后,在事务中执行带 + “启用店铺非空”保护的反向匹配删除;删除后再启动服务。 +- 清理仅修改 `syb_orders`;`syb_sync_runs` 和 `task_syb_sources` 数量保持不变。 + +## 改了哪些 + +- `/opt/cmautobuy/releases/e8c5293/`:新增当前生产 release。 +- `/opt/cmautobuy/releases/8a8fff8/`:新增兼容 schema v14 的回退 release。 +- `/opt/cmautobuy/cmautobuy-admin`:切换至 `e8c5293` 二进制。 +- `/opt/cmautobuy/backups/autobuy-before-198-20260813T005557Z.sql.gz`:清理前完整备份。 +- 生产 `syb_orders`:删除 4938 行非允许店铺数据,保留 3388 行。 +- `docs/task/198-部署店铺准入并清理非允许SYB数据.md`:本执行归档。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 固定 Go 1.23.0 验证、Linux 构建及远端哈希一致 | 通过 | +| 发布前无运行中同步,备份权限 600 且 gzip 可读 | 通过 | +| 当前 release 为 `e8c5293`,schema v14,服务和健康检查正常 | 通过 | +| 启用店铺非空并记录删除预览 | 通过:12 个,保留 3388,删除 4938 | +| 只删除不匹配允许店铺的 `syb_orders` | 通过:实际删除 4938 | +| 同步记录和其他模块数据未删除 | 通过:同步记录 8→8,任务来源 9→9 | +| 清理后不合规 SYB 行为 0 | 通过 | +| 未输出凭据、未触发外部业务操作 | 通过 | + +## 测试 + +- 执行的命令:固定 Go 1.23.0 的 `go vet ./...`、`go test ./... -count=1`; + Linux amd64 静态构建与 SHA-256;生产同步状态、备份、事务前后计数、反查、 + systemd、监听端口、日志、本机 HTTP 和公网 HTTPS 检查。 +- 结果:当前服务 active/enabled,监听 `127.0.0.1:18080`;本机根路径 303、登录页 + 200,公网登录页 200;`invalid_syb_orders=0`。 +- **没验证到的部分**:未使用生产账号登录后人工查看店铺管理页和顺运宝列表; + 未执行备份恢复演练;未发起真实顺运宝同步、采集或采购任务。 + +## 遗留问题 + +数据清理可通过本次完整备份恢复,但恢复会覆盖备份时点之后的生产变更,需停机并按 +灾备流程执行。后续新增或启用店铺不会自动恢复本次已删除历史数据,需重新同步日期范围。 + +## 相关提交 + +- `e8c5293` 本次生产发布基线