# 158 Admin:采集采购列表展示 PDD 店铺和客户端名称 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#15 / Admin 六模块统一列表体验 - 状态:已完成 - 日期:2026-08-11 - Gitea 工单: ## 背景与目标 采集采购列表原来没有 PDD 店铺,客户端列直接显示稳定客户端 ID。 采购员无法快速核对商品来源店铺,也不容易通过人工设置的设备名称判断执行设备。 ## 最终方案 任务列表继续以 `tasks.pdd_goods_id` 和 `tasks.assigned_client` 保存的稳定标识关联 当前档案,不向任务表冗余复制可变名称。查询当前未删除 PDD 商品的 `shop_name`, 并查询客户端当前 `name`。 列表在目标后显示 PDD 店铺;客户端优先显示名称,悬停提示同时包含名称和 ID。 店铺缺失显示 `—`;客户端名称或档案缺失时回退稳定 ID,未分配显示 `—`。 详情分别展示 PDD 店铺、客户端名称和客户端 ID。长文本复用表格截断样式和 `title`,保持 1366×768 下可横向滚动。 ## 改了哪些 - `admin/repository/task.go`:列表关联 PDD 店铺和客户端名称;增加详情展示上下文查询。 - `admin/service/task.go`:增加店铺占位、客户端名称优先及 ID 回退显示规则。 - `admin/templates/task/list.html`:增加 PDD 店铺列,客户端显示名称并提供完整提示。 - `admin/templates/task/detail_modal.html`:分别显示客户端名称、客户端 ID 和 PDD 店铺。 - `admin/service/task_test.go`:覆盖正常关联、客户端改名、关联缺失和详情展示。 - `admin/main_test.go`:补充模板列、详情字段和空状态列数约束。 - `docs/admin/05-ui-specification.md`:更新采集采购列表与详情规范。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 采集和采购任务按 PDD 商品显示当前店铺,缺失显示 `—` | 通过 | | 客户端优先显示名称,关联缺失回退 ID,未分配显示 `—` | 通过 | | 长名称使用截断和完整 `title`,不强行压缩表格 | 通过 | | 任务详情分别显示 PDD 店铺、客户端名称和客户端 ID | 通过 | | 客户端重命名后显示当前名称,稳定 ID 保持不变 | 通过 | | 筛选、分页、统计、权限和删除逻辑未改变 | 通过 | | 未修改数据库结构和 Admin/Client 接口 | 通过 | | Go 1.23.0 build、test、vet 通过 | 通过 | ## 测试 - 执行的命令: - `$env:GOTOOLCHAIN="go1.23.0"; go test ./service ./repository . -run 'TestListTasksView|TestGetTaskDetail|TestTaskPage' -count=1` - `$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1; go vet ./...` - `$env:GOTOOLCHAIN="go1.23.0"; go test ./service -run 'TestListTasksView_显示PDD店铺和客户端名称并保留ID提示|TestListTasksView_关联缺失时店铺占位且客户端回退ID' -count=1` - 结果:针对性测试和 Admin 全包构建、测试、静态检查通过。 - **没验证到的部分**:未在真实浏览器 1366×768 下人工检查特别长的店铺和客户端名称; 模板静态测试已覆盖截断类、完整 `title` 和空状态列数。 ## 相关提交 - `df1287f` feat: 展示任务PDD店铺和客户端名称 (#158)