# 174 顺运宝单条采集客户端选择 - 类型:缺陷 - 父级大工单:#14 - 所属 MVP / 版本:#15 - 状态:已完成 - 日期:2026-08-12 - Gitea 工单: ## 背景与目标 顺运宝列表的批量创建采集任务支持指定客户端,但从商品详情或列表“下一步”进入详情后,单条创建和重新创建采集任务没有客户端选择,任务只能保持未分配。此次统一两个入口的能力,让采购员既可以指定当前账号可见的客户端,也可以继续使用默认的任意客户端领取方式。 ## 最终方案 - 顺运宝商品详情加载当前账号可见的客户端,并在创建、重新创建采集任务的表单中展示客户端下拉框。 - 下拉框默认选择“不指定(任意客户端可领取)”,指定时显示客户端名称、编号和状态,并用辅助文字解释分配效果。 - 单条入口复用批量创建的服务方法,以单个顺运宝记录编号调用,统一执行客户端可见性、处理阶段、重复任务和任务分配校验。 - 不修改数据库结构、客户端领取接口以及顺运宝批量创建任务的既有行为。 ## 改了哪些 - `admin/handler/web/others.go`:详情接口加载可分配客户端;单条创建改用支持 `client_id` 的统一服务方法。 - `admin/templates/syb/detail_modal.html`:增加执行客户端选择、默认不指定选项和分配说明。 - `admin/service/shopee_pdd_test.go`:验证默认未分配、指定可见客户端和拒绝不可见客户端。 - `admin/syb_interaction_template_test.go`:验证详情模板的客户端选择及提示内容。 - `docs/admin/05-ui-specification.md`:补充顺运宝单条采集任务的客户端选择规范。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 详情中的创建和重新创建采集任务均展示当前账号可见的客户端 | 通过 | | 客户端默认不指定,任务可由任意符合条件的客户端领取 | 通过 | | 指定客户端后任务只分配给所选客户端 | 通过 | | 不可见客户端不能通过构造请求完成分配 | 通过 | | 单条与批量入口共用服务校验,既有批量行为不变 | 通过 | | Go 测试、静态检查和构建通过 | 通过 | ## 测试 - 执行的命令: - `GOTOOLCHAIN=go1.23.0 go test ./service -run 'TestCreateSybPddCollectTasksForUser_(同一PDD商品去重|指定可见客户端|拒绝不可见客户端)' -count=1` - `GOTOOLCHAIN=go1.23.0 go vet ./...` - `GOTOOLCHAIN=go1.23.0 go build ./...` - `GOTOOLCHAIN=go1.23.0 go test ./... -count=1` - `git diff --check` - 结果:目标服务测试连接临时 MySQL 8 数据库通过;全量测试、静态检查、构建和补丁格式检查均通过。 - **没验证到的部分**:未在生产数据上实际创建采集任务,避免产生业务任务;生产部署后仅执行服务和页面健康检查。 ## 相关提交 - `f693d2a` 修复顺运宝单条采集客户端选择