Page:
T-241
Pages
00-ai-start-here
01-vision
02-requirements
03-tech-stack
04-architecture
05-coding-rules
06-tasks
07-user-stories
08-interaction-checklist
Design
Home
Integrations-shunyunbao-contract
PPT
T-001
T-002
T-003
T-004
T-101
T-102
T-103
T-104
T-201
T-202
T-203
T-204
T-205
T-206
T-207
T-208
T-209
T-210
T-211
T-212
T-213
T-214
T-215
T-216
T-217
T-218
T-219
T-220
T-221
T-222
T-223
T-224
T-225
T-226
T-227
T-228
T-229
T-230
T-231
T-232
T-233
T-234
T-235
T-236
T-237
T-238
T-239
T-240
T-241
T-242
T-243
T-244
T-245
T-246
T-247
T-248
T-249
T-250
T-251
T-252
T-253
T-254
T-255
T-256
T-257
T-258
T-259
T-260
T-261
T-262
T-263
T-264
T-265
T-266
T-267
T-268
T-269
T-270
T-271
T-272
T-273
T-274
T-275
T-276
T-277
T-278
T-279
T-280
T-281
Task-Template
Tasks
agent-context
api
clean-state-checklist
current-state
routes
Clone
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
同步来源:
docs/tasks/T-241.md· commitafc651f75a3a
id: T-241 title: 优化 ERP 货运列表与商品详情展示 phase: 2 deps:
- T-240
status: DONE
created: 2026-07-29
context_ref:
c7e152awork_branch: null write_paths: - docs/tasks/T-241.md
- docs/current-state.md
- backend-api/internal/domain/freight.go
- backend-api/internal/repository/sqlite/freight_*
- backend-api/internal/transport/httpapi/freight_handlers.go
- backend-api/internal/transport/webui/**
问题 / 背景
当前货运列表只显示来源单号、店铺、原始状态、商品数量和更新时间,采购人员无法在进入详情前
识别商品;详情把 productThumb 作为文字引用显示,规格和 SKU 重复展示,也没有 ERP 原始
单价。多列技术字段使桌面端扫描路径分散,移动端卡片化表格也缺少稳定图片尺寸。
T-239/T-240 已提供规范规格 SKU、TWD 原始单价、图片状态和本地鉴权图片 URL,可以在不暴露 ERP 地址、不改变采购操作的前提下完成界面收敛。
关联需求与交互
- 货运列表显示每单第一条当前商品的代表图、标题和总商品数。
- 货运详情逐项显示本地图片、标题、规格/SKU、数量、ERP 原始单价、货运状态和采购操作。
- 图片未提供、待获取、ERP 缺失或获取失败时显示稳定文字占位,不显示破图或外部引用。
- 桌面端保持高密度可扫描,手机端无横向溢出、文字遮挡或操作区域挤压。
方案
- 货运列表查询为每个订单读取按外部商品 ID 排序的第一条当前明细,返回代表商品 ID、标题
和图片状态;只有
READY生成本地图片 URL。 - 列表重排为货运单、商品摘要、店铺、状态、更新时间和操作。代表图固定 56×56 px,标题 可换行,ERP ID 只作为弱化审计信息。
- 详情商品行使用固定 84×84 px 图片;
productSpec/sku相同只展示一次,增加数量和ERP 原始单价,按TWD 123.00定点格式显示,未知价格显示“未提供”。 - 图片使用
width/height、loading=lazy、object-fit=contain和有意义的alt;其他 状态用同尺寸占位文字,避免 CLS 和破图。 - 新增货运专属 CSS 类,不改其他任务表格;桌面使用密集表格,760px 以下沿用语义化移动 布局并固定主要信息优先级,保持至少 44px 操作目标和可见焦点。
- SSR 测试覆盖转义、价格、图片 URL/占位和字段去重;Playwright 在桌面及手机视口检查 无横向溢出、重叠、破图和不完整文字。
验收要点
- 货运列表显示确定性的第一商品代表图/占位、商品标题和总项数。
- 详情逐商品显示图片/占位、标题、规格/SKU、数量、TWD 原始单价和采购操作。
- 页面不再显示
productThumb原始引用,规格与 SKU 相同时不重复两行。 - 图片有固定尺寸、懒加载和 alt;非 READY 状态不发出图片请求、不显示破图。
- 既有 CSRF、采购需求、参考图上传和生成采购任务操作不回归。
- 1440×900、768×1024、390×844 和 375×667 无横向溢出、遮挡或不可用操作。
- 标准 Go 测试、race、vet 和三个入口构建通过。
边界
- 不解释或猜测 ERP 数字订单/采购状态的业务含义;未知值继续按原值展示。
- 不增加筛选、分页、编辑、批量操作或总价计算。
- 不修改图片下载策略、采购状态机、任务生成规则或 Android App。
- 不在截图、fixture、日志或提交中使用真实订单、商品、店铺、价格和图片。
执行记录
- 2026-07-29:创建任务。采用现有安静、工具型管理后台样式,新增货运专属高密度表格和固定 图片尺寸;保持既有语义色、系统字体、44px 操作目标和 SSR 交互。
- 2026-07-29:列表查询在关闭主结果集后按订单读取第一条当前商品,避免 SQLite 单连接 嵌套查询阻塞;API/SSR 返回代表商品标题、数量、图片状态和仅限 READY 的本地图片 URL。
- 2026-07-29:详情收敛为图片、单一规格/SKU、数量、
TWD 0.00原始单价、状态和采购 操作;未提供、排队、缺失和失败图片使用同尺寸状态占位,不请求 ERP 图片地址。 - 2026-07-29:
go test ./...、go test -race ./...、go vet ./...和 API、authctl、 migrate 三个入口构建通过。Playwright 连接隔离 SQLite 和脱敏运行时图片,在 1440×900、768×1024、390×844、375×667 验证列表/详情:页面横向溢出和越界元素均为 0;缓存图自然尺寸 320×320,列表渲染 56×56,详情桌面 84×84、手机 72×72;图片请求 返回 200,控制台无警告或错误。