Admin:蝦皮数据增加店铺和图片三态筛选 #150

Closed
opened 2026-08-11 12:00:49 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:需求(Admin 列表筛选)
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / 商品目录数据接入后续
  • 阶段:蝦皮数据维护体验
  • 状态:待验收

要解决什么

商品目录接口已经导入蝦皮主图和店铺名,但蝦皮数据页目前只能按状态和商品 ID/标题筛选。采购员无法快速查看资料完整的商品,也无法定位缺少店铺或图片、需要补数据的商品。

做什么 / 不做什么

  • 做:在顶部工具条的“状态”和“商品 ID”之间增加“店铺、图片”两个三态下拉框;每个支持全部/有/无,并可与现有状态、关键词组合;后端 SQL 分页筛选、总数、空状态、分页、详情弹窗和写操作返回完整保留条件。
  • 不做:不新增数据库字段或索引;不改商品目录导入逻辑、图片预览、详情内容、Client 四接口;不增加 JavaScript、高级筛选弹窗或自动提交。

怎么做

  • admin/repository/shopee.go:扩展 ShopeeFilter,集中解析 shop=has|missing、image=has|missing 对应的非���/空字段条件;列表和 COUNT 继续共用 shopeeFilterClause,未知值在 service/handler 边界归一为空。
  • admin/service/shopee_list.go:新增选项、标签和参数归一函数;IsFiltered 覆盖两个新条件。
  • admin/handler/web/shopee.go:读取并透传两个参数,分页、详情和状态条 URL 保留条件;状态条有任一条件时显示筛选结果总数。
  • admin/templates/shopee/list.html:在状态后增加有明确 <label> 的两个原生 <select>;默认“全部”,工具条沿用现有 flex-wrap,在 1366×768 单行、窄窗口自然换行。
  • 写操作重定向隐藏字段同步增加两个条件,详情弹窗内的表单也保留条件。
  • 增加 repository/service/handler/template 回归测试,更新 docs/admin/05-ui-specification.md。

验收标准

  • 顶部顺序为“状态 → 店铺 → 图片 → 商品 ID”,店铺和图片均有全部/有/无三态。
  • 有店铺/无店铺按 shopee_shop_name 非空/空筛选;有图片/无图片按 image_url 非空/空筛选。
  • 两个新条件可互相组合,并可与状态、商品 ID/标题搜索组合。
  • 未知参数回退“全部”,不会报错;默认 URL 的结果与改动前一致。
  • 列表和 COUNT 共用筛选条件,20 条 SQL 分页、越界处理和底部总数正确。
  • 翻页、双击详情、保存/删除/采集等返回列表时保留全部筛选条件。
  • 无结果时显示筛选空状态并提供清除条件入口。
  • 1366×768 工具条不拥挤,窄窗口自然换行,键盘可按标签顺序操作。
  • 固定 Go 1.23 build/test/vet 通过,数据库结构和 Client 四接口不变。

怎么验证

从 admin/ 使用固定 Go 1.23 执行 build/test/vet;自动化构造空值、NULL 和非空店铺/图片数据,覆盖单条件、组合条件、未知参数、COUNT/分页及 URL 保留;浏览器在 1366×768 和窄窗口检查工具条顺序、换行、空状态及分页。

实施记录

  • 工具条增加店铺、图片两个原生三态下拉框,顺序为状态→店铺→图片→商品 ID;复用现有 flex-wrap,无新增 JS/CSS 特例。
  • SQL 对 NULL、空串和纯空白统一判空,列表与 COUNT 共用 shopeeFilterClause;支持四类条件组合。
  • 分页、详情、保存/采集返回和删除表单保留新条件;无结果提供清除入口。
  • 固定 Go 1.23 build/test/vet 全部通过;真实浏览器 1366×768 视觉检查和生产部署未执行。
  • 实现提交:c39f5a7
  • 归档提交:0ad44c2
  • 归档:docs/task/150-蝦皮店铺图片筛选.md
## 基本信息 - 类型:需求(Admin 列表筛选) - 父级大工单:#14 - 所属 MVP / 版本:#15 / 商品目录数据接入后续 - 阶段:蝦皮数据维护体验 - 状态:待验收 ## 要解决什么 商品目录接口已经导入蝦皮主图和店铺名,但蝦皮数据页目前只能按状态和商品 ID/标题筛选。采购员无法快速查看资料完整的商品,也无法定位缺少店铺或图片、需要补数据的商品。 ## 做什么 / 不做什么 - 做:在顶部工具条的“状态”和“商品 ID”之间增加“店铺、图片”两个三态下拉框;每个支持全部/有/无,并可与现有状态、关键词组合;后端 SQL 分页筛选、总数、空状态、分页、详情弹窗和写操作返回完整保留条件。 - 不做:不新增数据库字段或索引;不改商品目录导入逻辑、图片预览、详情内容、Client 四接口;不增加 JavaScript、高级筛选弹窗或自动提交。 ## 怎么做 - `admin/repository/shopee.go`:扩展 `ShopeeFilter`,集中解析 `shop=has|missing`、`image=has|missing` 对应的非���/空字段条件;列表和 COUNT 继续共用 `shopeeFilterClause`,未知值在 service/handler 边界归一为空。 - `admin/service/shopee_list.go`:新增选项、标签和参数归一函数;`IsFiltered` 覆盖两个新条件。 - `admin/handler/web/shopee.go`:读取并透传两个参数,分页、详情和状态条 URL 保留条件;状态条有任一条件时显示筛选结果总数。 - `admin/templates/shopee/list.html`:在状态后增加有明确 `<label>` 的两个原生 `<select>`;默认“全部”,工具条沿用现有 flex-wrap,在 1366×768 单行、窄窗口自然换行。 - 写操作重定向隐藏字段同步增加两个条件,详情弹窗内的表单也保留条件。 - 增加 repository/service/handler/template 回归测试,更新 `docs/admin/05-ui-specification.md`。 ## 验收标准 - [x] 顶部顺序为“状态 → 店铺 → 图片 → 商品 ID”,店铺和图片均有全部/有/无三态。 - [x] 有店铺/无店铺按 `shopee_shop_name` 非空/空筛选;有图片/无图片按 `image_url` 非空/空筛选。 - [x] 两个新条件可互相组合,并可与状态、商品 ID/标题搜索组合。 - [x] 未知参数回退“全部”,不会报错;默认 URL 的结果与改动前一致。 - [x] 列表和 COUNT 共用筛选条件,20 条 SQL 分页、越界处理和底部总数正确。 - [x] 翻页、双击详情、保存/删除/采集等返回列表时保留全部筛选条件。 - [x] 无结果时显示筛选空状态并提供清除条件入口。 - [x] 1366×768 工具条不拥挤,窄窗口自然换行,键盘可按标签顺序操作。 - [x] 固定 Go 1.23 build/test/vet 通过,数据库结构和 Client 四接口不变。 ## 怎么验证 从 `admin/` 使用固定 Go 1.23 执行 build/test/vet;自动化构造空值、NULL 和非空店铺/图片数据,覆盖单条件、组合条件、未知参数、COUNT/分页及 URL 保留;浏览器在 1366×768 和窄窗口检查工具条顺序、换行、空状态及分页。 ## 实施记录 - 工具条增加店铺、图片两个原生三态下拉框,顺序为状态→店铺→图片→商品 ID;复用现有 flex-wrap,无新增 JS/CSS 特例。 - SQL 对 NULL、空串和纯空白统一判空,列表与 COUNT 共用 shopeeFilterClause;支持四类条件组合。 - 分页、详情、保存/采集返回和删除表单保留新条件;无结果提供清除入口。 - 固定 Go 1.23 build/test/vet 全部通过;真实浏览器 1366×768 视觉检查和生产部署未执行。 - 实现提交:c39f5a7 - 归档提交:0ad44c2 - 归档:docs/task/150-蝦皮店铺图片筛选.md
Author
Owner

实现完成,状态更新为待验收。

店铺和图片均支持全部/有/无,并可与状态、商品 ID/标题组合;分页、详情和写操作返回保留条件。Go 1.23 build/test/vet 全部通过。

提交:c39f5a7、0ad44c2。尚未部署生产。

实现完成,状态更新为待验收。 店铺和图片均支持全部/有/无,并可与状态、商品 ID/标题组合;分页、详情和写操作返回保留条件。Go 1.23 build/test/vet 全部通过。 提交:c39f5a7、0ad44c2。尚未部署生产。
Author
Owner

生产部署记录

  • 部署基线:0ad44c2
  • Linux amd64 二进制 SHA-256:4522bd0b040dbb888d543079f5c3b14c49c233a64dd133527bb0eb6b09d54233
  • 发布目录:/opt/cmautobuy/releases/0ad44c2/
  • 部署前备份:/opt/cmautobuy/backups/autobuy-before-0ad44c2-20260811T060223Z-notablespaces.sql.gz(gzip 校验通过,权限 600)
  • 服务状态:cmautobuy-admin active/enabled,仅监听 127.0.0.1:18080
  • 数据库:schema v10,自检通过,未产生新迁移
  • 公网检查:https://buy.833729.com/ 返回 303 到登录页,登录页返回 200
  • 启动日志:数据库已就绪、Admin 已启动,无 migration/fatal/panic

本地归档已同步更新,提交:c68efe1。

未验证:尚未使用生产账号登录后,在真实浏览器对蝦皮页面的店铺/图片组合筛选进行人工视觉验收。工单继续保持“待验收”。

## 生产部署记录 - 部署基线:`0ad44c2` - Linux amd64 二进制 SHA-256:`4522bd0b040dbb888d543079f5c3b14c49c233a64dd133527bb0eb6b09d54233` - 发布目录:`/opt/cmautobuy/releases/0ad44c2/` - 部署前备份:`/opt/cmautobuy/backups/autobuy-before-0ad44c2-20260811T060223Z-notablespaces.sql.gz`(gzip 校验通过,权限 `600`) - 服务状态:`cmautobuy-admin` active/enabled,仅监听 `127.0.0.1:18080` - 数据库:schema v10,自检通过,未产生新迁移 - 公网检查:`https://buy.833729.com/` 返回 303 到登录页,登录页返回 200 - 启动日志:数据库已就绪、Admin 已启动,无 migration/fatal/panic 本地归档已同步更新,提交:`c68efe1`。 未验证:尚未使用生产账号登录后,在真实浏览器对蝦皮页面的店铺/图片组合筛选进行人工视觉验收。工单继续保持“待验收”。
Author
Owner

用户于 2026-08-12 明确验收通过。已确认本地归档 docs/task/150-蝦皮店铺图片筛选.md 存在,现关闭工单。

用户于 2026-08-12 明确验收通过。已确认本地归档 `docs/task/150-蝦皮店铺图片筛选.md` 存在,现关闭工单。
ila closed this issue 2026-08-12 10:32:01 +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#150