Admin:部署店铺准入版本并清理非允许店铺SYB数据 #198

Closed
opened 2026-08-13 08:53:09 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:部署 / 数据维护
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / 顺运宝同步店铺准入生产上线
  • 阶段:生产发布与历史数据治理

要解决什么

把包含 #196、#197 的最新 Admin 提交部署到生产,并在管理员配置好启用店铺列表后,删除生产 syb_orders 中不属于启用店铺的数据。部署会触发 MySQL v14;清理是不可恢复的数据变更,必须先备份、预览精确数量和店铺分布。

做什么 / 不做什么

  • 做:
    • 从固定提交构建 Linux amd64 Admin,固定 Go 1.23.0 验证。
    • 检查无运行中顺运宝同步,备份生产数据库并校验,再发布到独立 release。
    • 启动后确认 schema v14、systemd、监听端口、本机及公网健康检查。
    • 只读核对启用店铺列表,以及 syb_orders 保留/删除数量和按店铺分布。
    • 仅在启用店铺非空时,事务删除 syb_orders 中店铺为空或不在启用列表的数据。
    • 删除前后核对总数,保留备份路径和摘要。
  • 不做:
    • 启用店铺列表为空时绝不执行删除。
    • 不自动猜测应该保留的店铺,不删除 syb_sync_runs、蝦皮、PDD、任务或 Client 数据。
    • 不发起真实顺运宝同步、采集、采购或付款操作。

怎么做

  • 使用 detached 隔离工作树从固定提交构建,避免带入当前工作区其他未提交文件。
  • 发布前查询 syb_sync_runs.status='running';存在运行任务时停止发布。
  • 使用生产环境既有业务账号执行 mysqldump --single-transaction,备份权限设为 600 并通过 gzip -t。
  • 上传到 /opt/cmautobuy/releases/<commit>/,复用稳定配置和 data 软链接;切换失败时回退上一个兼容 release。
  • 清理 SQL 使用事务和参数化/表关联语义:只删除不存在对应 enabled=1 AND normalized_name=TRIM(syb_orders.shop_name) 的 syb_orders。
  • 清理前必须确认启用列表非空,并输出不含敏感信息的店铺名称、保留数、删除数;若为空则记录阻塞并等待用户配置或提供名单。

验收标准

  • 固定 Go 1.23.0 的 vet、test、Linux build 通过,二进制本地/远端哈希一致。
  • 发布前没有运行中的顺运宝同步,生产备份 gzip 可读且权限为 600。
  • 服务运行最新固定提交,schema 为 v14,systemd/端口/本机与公网健康检查正常。
  • 清理前启用店铺列表非空,并记录保留/删除数量和删除店铺分布。
  • 只删除不匹配启用列表的 syb_orders,保留店铺数据数量与预览一致。
  • syb_sync_runs 和其他模块数据未被删除。
  • 清理后重新执行反查,不存在店铺为空或不在启用列表的 syb_orders。
  • 不输出数据库密码、Cookie、Token,不触发外部业务操作。

怎么验证

  • 本地:GOTOOLCHAIN=go1.23.0 go vet ./... && go test ./... -count=1,Linux amd64 静态构建及 SHA-256。
  • 生产:备份校验、schema 版本、systemd、进程路径、监听端口、日志、本机 HTTP 和公网 HTTPS。
  • 清理:事务前预览、事务后总数守恒、反查不合规行数为 0,并核对同步记录总数不变。

风险和回退

  • 风险:若启用列表为空,反名单逻辑会命中全部 SYB 数据。因此这是硬停止条件,不能绕过。
  • 风险:删除 syb_orders 可能影响与任务的来源关系;执行前需只读核对相关外键和待删行是否被 task_syb_sources 引用,按实际约束决定是否先停止并回报。
  • 回退:发布失败回切上一兼容版本;数据清理通过本���操作前的完整数据库备份恢复。

完成记录

  • 状态:已实施、已归档,等待用户验收。
  • 生产发布:固定提交 e8c5293,当前二进制 /opt/cmautobuy/releases/e8c5293/cmautobuy-admin。
  • 数据备份:/opt/cmautobuy/backups/autobuy-before-198-20260813T005557Z.sql.gz;SHA-256 008253dd7239291f5aacd8e4113eee45b6547de3b65b628c47114a44cb66e2da。
  • 清理结果:删除非允许店铺 syb_orders 4,938 行,保留 3,388 行;清理后不合规行 0。
  • 关联核对:syb_sync_runs 8 行、task_syb_sources 9 行,清理前后均未变化;待删数据关联任务来源 0 行。
  • 服务验证:schema v14,systemd active/enabled,本机与公网登录页均正常。
  • 实现归档提交:3af9bf2。
  • 本地归档:docs/task/198-部署店铺准入并清理非允许SYB数据.md。
  • 未验证:登录后的页面人工视觉检查、备份恢复演练、真实同步/采集/采购;本次未触发这些外部业务操作。
## 基本信息 - 类型:部署 / 数据维护 - 父级大工单:#14 - 所属 MVP / 版本:#15 / 顺运宝同步店铺准入生产上线 - 阶段:生产发布与历史数据治理 ## 要解决什么 把包含 #196、#197 的最新 Admin 提交部署到生产,并在管理员配置好启用店铺列表后,删除生产 `syb_orders` 中不属于启用店铺的数据。部署会触发 MySQL v14;清理是不可恢复的数据变更,必须先备份、预览精确数量和店铺分布。 ## 做什么 / 不做什么 - 做: - 从固定提交构建 Linux amd64 Admin,固定 Go 1.23.0 验证。 - 检查无运行中顺运宝同步,备份生产数据库并校验,再发布到独立 release。 - 启动后确认 schema v14、systemd、监听端口、本机及公网健康检查。 - 只读核对启用店铺列表,以及 `syb_orders` 保留/删除数量和按店铺分布。 - 仅在启用店铺非空时,事务删除 `syb_orders` 中店铺为空或不在启用列表的数据。 - 删除前后核对总数,保留备份路径和摘要。 - 不做: - 启用店铺列表为空时绝不执行删除。 - 不自动猜测应该保留的店铺,不删除 `syb_sync_runs`、蝦皮、PDD、任务或 Client 数据。 - 不发起真实顺运宝同步、采集、采购或付款操作。 ## 怎么做 - 使用 detached 隔离工作树从固定提交构建,避免带入当前工作区其他未提交文件。 - 发布前查询 `syb_sync_runs.status='running'`;存在运行任务时停止发布。 - 使用生产环境既有业务账号执行 `mysqldump --single-transaction`,备份权限设为 600 并通过 `gzip -t`。 - 上传到 `/opt/cmautobuy/releases/<commit>/`,复用稳定配置和 data 软链接;切换失败时回退上一个兼容 release。 - 清理 SQL 使用事务和参数化/表关联语义:只删除不存在对应 `enabled=1 AND normalized_name=TRIM(syb_orders.shop_name)` 的 `syb_orders`。 - 清理前必须确认启用列表非空,并输出不含敏感信息的店铺名称、保留数、删除数;若为空则记录阻塞并等待用户配置或提供名单。 ## 验收标准 - [x] 固定 Go 1.23.0 的 vet、test、Linux build 通过,二进制本地/远端哈希一致。 - [x] 发布前没有运行中的顺运宝同步,生产备份 gzip 可读且权限为 600。 - [x] 服务运行最新固定提交,schema 为 v14,systemd/端口/本机与公网健康检查正常。 - [x] 清理前启用店铺列表非空,并记录保留/删除数量和删除店铺分布。 - [x] 只删除不匹配启用列表的 `syb_orders`,保留店铺数据数量与预览一致。 - [x] `syb_sync_runs` 和其他模块数据未被删除。 - [x] 清理后重新执行反查,不存在店铺为空或不在启用列表的 `syb_orders`。 - [x] 不输出数据库密码、Cookie、Token,不触发外部业务操作。 ## 怎么验证 - 本地:`GOTOOLCHAIN=go1.23.0 go vet ./... && go test ./... -count=1`,Linux amd64 静态构建及 SHA-256。 - 生产:备份校验、schema 版本、systemd、进程路径、监听端口、日志、本机 HTTP 和公网 HTTPS。 - 清理:事务前预览、事务后总数守恒、反查不合规行数为 0,并核对同步记录总数不变。 ## 风险和回退 - 风险:若启用列表为空,反名单逻辑会命中全部 SYB 数据。因此这是硬停止条件,不能绕过。 - 风险:删除 `syb_orders` 可能影响与任务的来源关系;执行前需只读核对相关外键和待删行是否被 `task_syb_sources` 引用,按实际约束决定是否先停止并回报。 - 回退:发布失败回切上一兼容版本;数据清理通过本���操作前的完整数据库备份恢复。 ## 完成记录 - 状态:已实施、已归档,等待用户验收。 - 生产发布:固定提交 `e8c5293`,当前二进制 `/opt/cmautobuy/releases/e8c5293/cmautobuy-admin`。 - 数据备份:`/opt/cmautobuy/backups/autobuy-before-198-20260813T005557Z.sql.gz`;SHA-256 `008253dd7239291f5aacd8e4113eee45b6547de3b65b628c47114a44cb66e2da`。 - 清理结果:删除非允许店铺 `syb_orders` 4,938 行,保留 3,388 行;清理后不合规行 0。 - 关联核对:`syb_sync_runs` 8 行、`task_syb_sources` 9 行,清理前后均未变化;待删数据关联任务来源 0 行。 - 服务验证:schema v14,systemd active/enabled,本机与公网登录页均正常。 - 实现归档提交:`3af9bf2`。 - 本地归档:`docs/task/198-部署店铺准入并清理非允许SYB数据.md`。 - 未验证:登录后的页面人工视觉检查、备份恢复演练、真实同步/采集/采购;本次未触发这些外部业务操作。
Author
Owner

生产执行结果

  • 发布基线:e8c5293(包含 #196、#197)。
  • 固定 Go 1.23.0 的 vet/test 通过;Linux amd64 二进制 SHA-256:e4cc0683c41a2081c6e0e533a2aa372b6714d3862daf571a5f91657970acd8e8,远端一致。
  • 另上传兼容 schema v14 的回退 release 8a8fff8;旧的 a4556b4 只支持 v13,schema 已为 v14 后不能作为重启回退版本。
  • 发布前三次检查运行中同步均为 0。
  • 生产备份:/opt/cmautobuy/backups/autobuy-before-198-20260813T005557Z.sql.gz,权限 600,gzip 校验通过,SHA-256 008253dd7239291f5aacd8e4113eee45b6547de3b65b628c47114a44cb66e2da。
  • 上线时数据库已是 schema v14,启用店铺 12 个。
  • 删除前:syb_orders=8326,允许店铺 3388,非允许店铺 4938;待删行关联 task_syb_sources=0。
  • 服务停止期间事务删除 4938 行。删除后:syb_orders=3388、不合规行 0;syb_sync_runs=8、task_syb_sources=9 均未变化。
  • 当前 release:/opt/cmautobuy/releases/e8c5293/cmautobuy-admin;systemd active/enabled;本机根路径 303、登录页 200;公网登录页 200。
  • 未触发真实顺运宝同步、采集、采购或付款。
## 生产执行结果 - 发布基线:`e8c5293`(包含 #196、#197)。 - 固定 Go 1.23.0 的 vet/test 通过;Linux amd64 二进制 SHA-256:`e4cc0683c41a2081c6e0e533a2aa372b6714d3862daf571a5f91657970acd8e8`,远端一致。 - 另上传兼容 schema v14 的回退 release `8a8fff8`;旧的 `a4556b4` 只支持 v13,schema 已为 v14 后不能作为重启回退版本。 - 发布前三次检查运行中同步均为 0。 - 生产备份:`/opt/cmautobuy/backups/autobuy-before-198-20260813T005557Z.sql.gz`,权限 600,gzip 校验通过,SHA-256 `008253dd7239291f5aacd8e4113eee45b6547de3b65b628c47114a44cb66e2da`。 - 上线时数据库已是 schema v14,启用店铺 12 个。 - 删除前:`syb_orders=8326`,允许店铺 3388,非允许店铺 4938;待删行关联 `task_syb_sources=0`。 - 服务停止期间事务删除 4938 行。删除后:`syb_orders=3388`、不合规行 0;`syb_sync_runs=8`、`task_syb_sources=9` 均未变化。 - 当前 release:`/opt/cmautobuy/releases/e8c5293/cmautobuy-admin`;systemd active/enabled;本机根路径 303、登录页 200;公网登录页 200。 - 未触发真实顺运宝同步、采集、采购或付款。
Author
Owner

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。
ila closed this issue 2026-08-13 15:56:43 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#198