Admin:顺运宝数据增加店铺列和店铺搜索 #151

Closed
opened 2026-08-11 14:18:35 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:需求(Admin 数据迁移与列表筛选)
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / 顺运宝采购工作台后续
  • 阶段:顺运宝货运单检索
  • 状态:待验收

要解决什么

顺运宝货运单接口返回货运单级 shopName。当前同步只把该字段保存在 syb_orders.syb_data.stock.shopName 原始 JSON 中,未进入独立模型和数据库列,因此采购员无法在顺运宝列表查看或按店铺筛选。

2026-08-11 生产库只读核对:6358 条 syb_orders 均有非空 stock.shopName,共 39 个不同店铺。历史数据可以从原始 JSON 安全回填,无需重新同步。

做什么 / 不做什么

  • 做:MySQL schema v11 新增可空 syb_orders.shop_name;从有效 syb_data.stock.shopName 回填历史数据;后续同步 upsert 店铺;列表增加店铺列和独立店铺名模糊搜索;搜索可与处理阶段、订单号/商品标题组合;分页、详情和写操作返回保留店铺条件。
  • 做:同步维护 SQLite 历史迁移测试所需的当前 schema;更新数据模型、界面规范和自动化测试;构建后备份并部署生产。
  • 不做:不把店铺名覆盖到蝦皮商品主数据;不改变 Client 四接口、任务结构、采购安全规则;不���加 JavaScript、店铺管理或下拉字典。

怎么做

  • admin/repository/mysql_db.go:只追加 v11 迁移;字段使用 VARCHAR(500),迁移可重放;分批/单条 SQL 从合法 JSON 的 $.stock.shopName 回填,空白保持 NULL;结构和回填结果纳入 schema 自检。
  • SQLite 当前 schema 及单向迁移列清单同步增加 shop_name,历史迁移保持冻结。
  • admin/model/model.go、admin/service/syb.go:增加店铺字段;同步从合并后的货运单外层原始数据读取 shopName 并写入。
  • admin/repository/syb.go:参数化 LIKE 模糊匹配 shop_name,继续由同一个筛选 clause 服务列表与 COUNT。
  • admin/handler/web/others.go 和顺运宝模板:工具栏增加带 label 的店铺输入;表格在订单号后显示店铺并对长文本省略、保留 title;所有相关 URL/隐藏字段保留 shop。
  • 沿用现有 flex-wrap 和 table-wrap,不新增页面级 CSS/JS;宽表按项目规范横向滚动。

验收标准

  • schema v11 首次升级、重复启动和 v10→v11 升级均通过;历史有效 JSON 店铺正确回填,空白/无效 JSON 安全保持空。
  • 新同步和重复同步均写入最新 shop_name,同一货运单多条商品明细显示同一货运单店铺。
  • 顺运宝列表在订单号后显示“店铺”列,长店铺名不撑坏表格且可查看完整 title。
  • 店铺搜索支持去首尾空白后的模糊匹配,并可与处理阶段、订单号/商品标题组合。
  • 列表和 COUNT 共用筛选条件,分页总数一致;未知/空店铺参数等价于不筛选。
  • 翻页、同步、删除、详情、PDD 关联/采集、规格映射和创建采购任务后保留店铺条件。
  • 1366×768 可正常使用,工具条窄屏自然换行,输入框有显式 label,表格只在容器内横向滚动。
  • Go 1.23 build/test/vet、MySQL 8.4 _test 首建/重放/升级验证通过。
  • 生产部署前备份可读取;部署后 schema v11、历史覆盖数、服务状态和公网登录页验证通过。

怎么验证

从 admin/ 使用 GOTOOLCHAIN=go1.23.0 执行 go build ./...、go test ./... -count=1、go vet ./...。使用独立 MySQL 8.4、库名以 _test 结尾验证首次建库、重复迁移和 v10 升级;自动化覆盖 JSON 回填、同步 upsert、模糊与组合筛选、COUNT/分页和 URL 状态保留。生产部署前执行完整备份和 gzip 校验,部署后只读核对 schema、店铺覆盖数、systemd、监听端口、日志及 HTTPS。

风险和回退

  • MySQL DDL 隐式提交,因此 v11 每一步必须可重放,各迁移步骤、自检和版本记录均按顺序完成。
  • 普通 B-tree 索引不能有效优化 %关键词% 模糊搜索,本次不增加无效索引;当前 6358 行规模可接受。
  • 应用回退只能切回支持 schema v11 的构建;数据库级回退使用本次部署前备份。
## 基本信息 - 类型:需求(Admin 数据迁移与列表筛选) - 父级大工单:#14 - 所属 MVP / 版本:#15 / 顺运宝采购工作台后续 - 阶段:顺运宝货运单检索 - 状态:待验收 ## 要解决什么 顺运宝货运单接口返回货运单级 `shopName`。当前同步只把该字段保存在 `syb_orders.syb_data.stock.shopName` 原始 JSON 中,未进入独立模型和数据库列,因此采购员无法在顺运宝列表查看或按店铺筛选。 2026-08-11 生产库只读核对:6358 条 `syb_orders` 均有非空 `stock.shopName`,共 39 个不同店铺。历史数据可以从原始 JSON 安全回填,无需重新同步。 ## 做什么 / 不做什么 - 做:MySQL schema v11 新增可空 `syb_orders.shop_name`;从有效 `syb_data.stock.shopName` 回填历史数据;后续同步 upsert 店铺;列表增加店铺列和独立店铺名模糊搜索;搜索可与处理阶段、订单号/商品标题组合;分页、详情和写操作返回保留店铺条件。 - 做:同步维护 SQLite 历史迁移测试所需的当前 schema;更新数据模型、界面规范和自动化测试;构建后备份并部署生产。 - 不做:不把店铺名覆盖到蝦皮商品主数据;不改变 Client 四接口、任务结构、采购安全规则;不���加 JavaScript、店铺管理或下拉字典。 ## 怎么做 - `admin/repository/mysql_db.go`:只追加 v11 迁移;字段使用 `VARCHAR(500)`,迁移可重放;分批/单条 SQL 从合法 JSON 的 `$.stock.shopName` 回填,空白保持 NULL;结构和回填结果纳入 schema 自检。 - SQLite 当前 schema 及单向迁移列清单同步增加 `shop_name`,历史迁移保持冻结。 - `admin/model/model.go`、`admin/service/syb.go`:增加店铺字段;同步从合并后的货运单外层原始数据读取 `shopName` 并写入。 - `admin/repository/syb.go`:参数化 `LIKE` 模糊匹配 `shop_name`,继续由同一个筛选 clause 服务列表与 COUNT。 - `admin/handler/web/others.go` 和顺运宝模板:工具栏增加带 label 的店铺输入;表格在订单号后显示店铺并对长文本省略、保留 title;所有相关 URL/隐藏字段保留 `shop`。 - 沿用现有 flex-wrap 和 table-wrap,不新增页面级 CSS/JS;宽表按项目规范横向滚动。 ## 验收标准 - [x] schema v11 首次升级、重复启动和 v10→v11 升级均通过;历史有效 JSON 店铺正确回填,空白/无效 JSON 安全保持空。 - [x] 新同步和重复同步均写入最新 `shop_name`,同一货运单多条商品明细显示同一货运单店铺。 - [x] 顺运宝列表在订单号后显示“店铺”列,长店铺名不撑坏表格且可查看完整 title。 - [x] 店铺搜索支持去首尾空白后的模糊匹配,并可与处理阶段、订单号/商品标题组合。 - [x] 列表和 COUNT 共用筛选条件,分页总数一致;未知/空店铺参数等价于不筛选。 - [x] 翻页、同步、删除、详情、PDD 关联/采集、规格映射和创建采购任务后保留店铺条件。 - [ ] 1366×768 可正常使用,工具条窄屏自然换行,输入框有显式 label,表格只在容器内横向滚动。 - [x] Go 1.23 build/test/vet、MySQL 8.4 `_test` 首建/重放/升级验证通过。 - [x] 生产部署前备份可读取;部署后 schema v11、历史覆盖数、服务状态和公网登录页验证通过。 ## 怎么验证 从 `admin/` 使用 `GOTOOLCHAIN=go1.23.0` 执行 `go build ./...`、`go test ./... -count=1`、`go vet ./...`。使用独立 MySQL 8.4、库名以 `_test` 结尾验证首次建库、重复迁移和 v10 升级;自动化覆盖 JSON 回填、同步 upsert、模糊与组合筛选、COUNT/分页和 URL 状态保留。生产部署前执行完整备份和 gzip 校验,部署后只读核对 schema、店铺覆盖数、systemd、监听端口、日志及 HTTPS。 ## 风险和回退 - MySQL DDL 隐式提交,因此 v11 每一步必须可重放,各迁移步骤、自检和版本记录均按顺序完成。 - 普通 B-tree 索引不能有效优化 `%关键词%` 模糊搜索,本次不增加无效索引;当前 6358 行规模可接受。 - 应用回退只能切回支持 schema v11 的构建;数据库级回退使用本次部署前备份。
Author
Owner

实施进度

功能实现已提交:9d4d6fc feat: 增加顺运宝店铺筛选 (#151)。

已完成验证:

  • GOTOOLCHAIN=go1.23.0 go test ./... -count=1:通过
  • GOTOOLCHAIN=go1.23.0 go vet ./...:通过
  • GOTOOLCHAIN=go1.23.0 go build ./...:通过
  • 独立 MySQL 8.4 测试库执行 v11 历史数据回填与重放测试:通过

临时测试库与仅用于该测试库的授权已清理。下一步执行生产备份、部署及线上验证。

## 实施进度 功能实现已提交:`9d4d6fc feat: 增加顺运宝店铺筛选 (#151)`。 已完成验证: - `GOTOOLCHAIN=go1.23.0 go test ./... -count=1`:通过 - `GOTOOLCHAIN=go1.23.0 go vet ./...`:通过 - `GOTOOLCHAIN=go1.23.0 go build ./...`:通过 - 独立 MySQL 8.4 测试库执行 v11 历史数据回填与重放测试:通过 临时测试库与仅用于该测试库的授权已清理。下一步执行生产备份、部署及线上验证。
Author
Owner

实施完成,等待用户验收

  • 实现提交:9d4d6fc feat: 增加顺运宝店铺筛选 (#151)
  • 归档提交:79f103e docs: 归档任务 #151
  • 归档文档:docs/task/151-顺运宝店铺列和搜索.md
  • 生产版本:/opt/cmautobuy/releases/9d4d6fc/cmautobuy-admin
  • 发布前备份:/opt/cmautobuy/backups/autobuy-before-151-20260811-144048.sql.gz(gzip 校验通过,权限 600)
  • 生产验证:systemd active/enabled;MySQL schema v11;6,358/6,358 条顺运宝明细有店铺,共 39 个店铺;本机登录页和 https://buy.833729.com/login 均返回 200;近 10 分钟日志未发现数据库打开、迁移、panic 或 fatal 错误。

尚需用户人工验收:登录生产 Admin,确认顺运宝列表“店铺”列、店铺与订单号/处理阶段组合搜索,以及 1366×768/窄窗口布局。工单保持打开并标记“待验收”。

## 实施完成,等待用户验收 - 实现提交:`9d4d6fc feat: 增加顺运宝店铺筛选 (#151)` - 归档提交:`79f103e docs: 归档任务 #151` - 归档文档:`docs/task/151-顺运宝店铺列和搜索.md` - 生产版本:`/opt/cmautobuy/releases/9d4d6fc/cmautobuy-admin` - 发布前备份:`/opt/cmautobuy/backups/autobuy-before-151-20260811-144048.sql.gz`(gzip 校验通过,权限 600) - 生产验证:systemd active/enabled;MySQL schema v11;6,358/6,358 条顺运宝明细有店铺,共 39 个店铺;本机登录页和 `https://buy.833729.com/login` 均返回 200;近 10 分钟日志未发现数据库打开、迁移、panic 或 fatal 错误。 尚需用户人工验收:登录生产 Admin,确认顺运宝列表“店铺”列、店铺与订单号/处理阶段组合搜索,以及 1366×768/窄窗口布局。工单保持打开并标记“待验收”。
Author
Owner

用户于 2026-08-12 明确验收通过。已确认本地归档 docs/task/151-顺运宝店铺列和搜索.md 存在,现关闭工单。

用户于 2026-08-12 明确验收通过。已确认本地归档 `docs/task/151-顺运宝店铺列和搜索.md` 存在,现关闭工单。
ila closed this issue 2026-08-12 10:32:03 +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#151