Files
cmautobuy/docs/task/150-蝦皮店铺图片筛选.md

3.7 KiB
Raw Permalink Blame History

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

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / 商品目录数据接入后续
  • 状态:已完成
  • 日期:2026-08-11
  • Gitea 工单:#150

背景与目标

蝦皮数据页已经展示店铺和主图,但原工具条只能按业务状态及商品 ID/标题查询。 采购员无法快速查看资料完整的商品,也不能定位缺少店铺或图片、需要补数据的商品。 本任务增加两个可组合的三态筛选,并保证分页和操作返回不丢失条件。

最终方案

在顶部工具条的状态筛选后依次增加“店铺、图片”两个原生下拉框,每个均为 “全部 / 有 / 无”三态。没有使用复选框,因为未勾选无法区分“全部”和“无资料”; 没有增加弹窗或 JavaScript,沿用公共工具条 flex-wrap 在窄窗口自然换行。

GET 参数使用 shop=has|missing、image=has|missing。handler 负责把未知值归一为 “全部”,repository 的统一 shopeeFilterClause 同时供列表和 COUNT 使用,并将 NULL、 空字符串和纯空白都视为“无”。service 把两个条件纳入 IsFiltered;分页、详情 URL、 保存/采集返回和删除表单均保留全部条件。筛选无结果时提供清除入口。

改了哪些

  • admin/repository/shopee.go:扩展筛选对象并集中增加店铺、图片 SQL 条件。
  • admin/service/shopee_list.go:增加三态选项、参数归一和筛选状态识别。
  • admin/handler/web/shopee.go:读取、透传并在写操作返回时保留新参数。
  • admin/templates/shopee/list.html:增加两个下拉框、空状态和删除表单隐藏条件。
  • admin/templates/shopee/detail_modal.html:保存、采集表单保留店铺和图片条件。
  • admin/service/shopee_list_test.go、admin/handler/web/pagination_test.go、admin/main_test.go:增加组合筛选、参数、URL、状态条和模板测试。
  • docs/admin/05-ui-specification.md:记录工具条顺序、三态语义和状态保留规则。

验收结果

验收标准 结果
工具条顺序为状态、店铺、图片、商品 ID 通过
店铺和图片均支持全部/有/无 通过
NULL、空字符串和纯空白正确归入“无” 通过
两条件可互相组合并叠加关键词 通过
未知参数回退全部且默认列表不变 通过
列表和 COUNT 共用 SQL 条件,分页总数一致 通过
分页、详情、保存和采集返回保留条件 通过
无结果显示清除筛选入口 通过
固定 Go 1.23 build/test/vet 通过 通过

测试

  • 执行的命令:在 admin/ 使用 GOTOOLCHAIN=go1.23.0 执行 go build ./...、go test ./... -count=1、go vet ./...。
  • 结果:全部通过;git diff --check 通过。
  • 生产部署:以提交 0ad44c2 构建 Linux amd64 二进制,SHA-256 为 4522bd0b040dbb888d543079f5c3b14c49c233a64dd133527bb0eb6b09d54233;部署前备份 位于 /opt/cmautobuy/backups/autobuy-before-0ad44c2-20260811T060223Z-notablespaces.sql.gz, gzip 校验通过且权限为 600。生产服务已切换到 /opt/cmautobuy/releases/0ad44c2/, systemd、MySQL schema v10、本机监听和公网 HTTPS 登录页检查均通过。
  • 没验证到的部分:未使用生产账号登录后在真实浏览器以 1366×768 和窄窗口人工截图验收; 布局复用已经支持换行的公共工具条,模板结构和键盘标签顺序已由代码与测试核对。

相关提交

  • c39f5a7 增加蝦皮店铺图片筛选
  • 0ad44c2 归档任务 #150,也是本次生产部署基线