Files
cmautobuy/docs/task/213-精简蝦皮筛选并改为分类搜索.md
T
2026-08-13 11:48:46 +08:00

51 lines
3.0 KiB
Markdown

# 213 Admin:精简蝦皮筛选并改为分类搜索
- 类型:需求
- 父级大工单:#206
- 所属 MVP / 版本:#207
- 状态:已完成
- 日期:2026-08-13
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/213
## 背景与目标
蝦皮数据页叠加了店铺有无、图片有无、数据范围、业务店铺、店铺名称等多个控件,并同时显示两个店铺列,与“SYB 店铺名就是蝦皮店铺名”的实际业务不符。本任务精简常用筛选,让采购员按明确字段搜索,同时保留软删除恢复和未登记数据处理能力。
## 最终方案
常用工具条保留状态筛选,增加“分类 + 关键词”:分类固定为商品 ID、商品名称和店铺名。商品 ID 使用精确匹配,商品名称和店铺名使用转义后的包含匹配;服务端只走固定白名单分支,不把请求值拼成 SQL 列名。列表只显示一个来源店铺列。
“数据范围”改为管理员独立“回收站”入口;“未登记商品”使用店铺管理页进入的 `unlinked=1` 内部视图,并显示当前范围与清除入口。翻页、详情弹窗、批量采集、删除和恢复的回跳统一保留 `q`、`search_field`、`status`、`deleted`、`unlinked` 和页码。
## 改了哪些
- `admin/repository/shopee.go`:实现白名单分类搜索、未登记和回收站范围,移除旧筛选 SQL。
- `admin/service/shopee_list.go`:增加搜索分类解析,精简列表视图和筛选状态判断。
- `admin/handler/web/shopee.go`:切换查询参数并完整保留列表上下文。
- `admin/templates/shopee/list.html`、`detail_modal.html`:精简工具条和店铺列,增加回收站、未登记提示及隐藏状态字段。
- `admin/static/js/app.js`:更新模块状态参数白名单。
- `admin/handler/web/pagination_test.go`、`admin/service/shopee_list_test.go`、`admin/main_test.go`:覆盖分类匹配、特殊字符、未登记范围和状态保留。
- `docs/admin/05-ui-specification.md`:更新最终交互规范。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 页面不再显示店铺/图片/数据范围/业务店铺/店铺名称旧筛选 | 通过 |
| 分类仅提供商品 ID、商品名称和店铺名 | 通过 |
| 商品 ID 精确匹配,名称类包含匹配且正确转义特殊字符 | 通过 |
| 分类参数使用白名单,未知值回退商品 ID | 通过 |
| 列表只显示一个店铺列 | 通过 |
| 管理员仍可通过独立回收站恢复软删除数据 | 通过 |
| 未登记入口、翻页、详情和写操作回跳保留有效上下文 | 通过 |
## 测试
- 执行的命令:在 `admin/` 执行 `$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1`,随后执行 `go vet ./...` 和 `git diff --check`。
- 结果:Go 1.23.0 构建、全量测试、vet 和差异检查全部通过。
- **没验证到的部分**:未在浏览器中执行人工视觉验收;模板构建、路由、查询和状态保留由自动化测试覆盖。
## 相关提交
- `313e9f9` 收敛店铺管理和蝦皮分类搜索