Admin:商品目录支持蝦皮图片和店铺信息并在列表展示 #142

Closed
opened 2026-08-11 10:40:03 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:需求(Admin 接口 + 数据模型 + 页面)
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / 商品目录数据接入后续
  • 阶段:蝦皮商品信息完善
  • 依赖:#141
  • 状态:待验收

要解决什么

部分商品目录来源文件包含蝦皮商品主图片链接和蝦皮店铺名,当前 shopee_products、商品目录接口和蝦皮页面没有对应字段,采购员无法利用这些信息快速核对蝦皮商品与 PDD 商品是否一致。

新增字段必须复用 #141 的分级更新策略和人工保护边界,不能让空值、旧批次、不同来源或顺运宝观测图片覆盖更可靠的蝦皮主数据。当前标题列已经从初版 30% 缩到 18%(即初版的 60%),新增列后不应再次缩成当前宽度的 60%。

做什么 / 不做什么

  • 做:增加蝦皮主图片、蝦皮店铺名及来源/观测时间/人工保护所需字段;商品目录接口接收并校验图片 URL 和店铺名;蝦皮列表增加图片、蝦皮店铺列;图片点击预览原图;详情显示完整店铺名、图片来源和更新时间���更新导入记录统计和接口文档。
  • 不做:不保存图片二进制;不由 Admin 服务端主动下载外部图片;不把顺运宝观测图片覆盖成蝦皮主图片;不建立独立店铺实体或店铺管理模块;不再次缩小当前标题列;不修改 Client 四接口、PDD 店铺名或采购流程。

怎么做

  • 依赖 #141 完成后,复用其 insert_only、fill_missing、overwrite_same_source:默认只补空图片/店铺;同来源且更新的 observed_at 才可覆盖;人工字段永不自动覆盖;空值不能清除已有值。
  • MySQL 采用追加式迁移,为 shopee_products 增加主图片 URL、蝦皮店铺名及必要来源审计字段;字段命名必须与 pdd_products.shop_name 清楚区分。
  • 图片 URL 只接受合法 HTTP/HTTPS,拒绝 file:、data:、javascript:、含用户名密码以及包含 Cookie/访问令牌的地址;设置合理长度上限。页面直接由浏览器加载,服务端不抓取,避免 SSRF。
  • 列表顺序建议:勾选、商品 ID、图片、商品标题、蝦皮店铺、颜色、尺码等。图片使用固定小尺寸、loading="lazy" 和加载失败占位;点击复用现有顺运宝 data-image-preview-* 原图弹窗及新窗口入口。
  • 标题列保持当前 .col-title { max-width: 18%; },继续省略并用 title 展示全文;店铺列限制约 120–160px并省略,表格列过多继续横向滚动。
  • 商品详情展示完整图片、店铺名、来源和观测时间。关键词搜索是否扩展到标题/店铺应与现有数据库分页筛选共用一处,若实施则同步列表与计数查询。
  • 预计修改 catalog request/model/service/repository、MySQL 迁移与自检、蝦皮列表/详情 view 和模板、通用图片预览、接口/UI/数据模型文档及测试。

验收标准

  • 商品目录批次可以提交合法蝦皮主图片 URL 和店铺名,并写入对应商品。
  • 默认策略只补空字段;同来源新数据按 #141 规则更新;空值、旧时间和跨来源数据不会覆盖已有值。
  • 人工保护的图片或店铺名不会被任何第三方批次自动覆盖。
  • 顺运宝观测图片只在观测区域展示,不覆盖蝦皮主图片。
  • 蝦皮列表显示固定尺寸懒加载缩略图和蝦皮店铺,图片失败不影响表格。
  • 点击图片可预览原图并在新窗口打开;无图时显示明确占位且不出现空弹窗。
  • 商品详情显示完整店铺名、图片来源和观测时间。
  • 标题列保持当前 18% 宽度���店铺列截���,1366×768 下可用且允许横向滚动。
  • 接口拒绝危险协议、含用户信息或明显凭据的图片 URL,数据库和日志不保存图片凭据。
  • PDD 店铺名、PDD Excel 导入、采购流程和 Client 四接口保持不变。
  • Go 1.23 build/test/vet 和 MySQL 8.4 _test 迁移测试通过。

怎么验证

固定 Go 1.23 全量 build/test/vet;httptest 覆盖图片 URL 校验和三种更新策略;repository/MySQL _test 覆盖迁移、旧时间、人工保护和空值;页面测试覆盖缩略图、店铺列、预览弹窗、无图/坏图状态;在 1366×768 浏览器人工检查列宽和横向滚动;回归 PDD Excel 与 Client 四接口。

风险和回退

外部图片可能失效、变慢或泄露浏览器访问来源,必须懒加载、失败降级且不由服务端代理。回退时可移除列表/详情展示和接口字段写入,新增可空数据库列保留,不删除生产数据;旧代码应能忽略这些列。

## 基本信息 - 类型:需求(Admin 接口 + 数据模型 + 页面) - 父级大工单:#14 - 所属 MVP / 版本:#15 / 商品目录数据接入后续 - 阶段:蝦皮商品信息完善 - 依赖:#141 - 状态:待验收 ## 要解决什么 部分商品目录来源文件包含蝦皮商品主图片链接和蝦皮店铺名,当前 `shopee_products`、商品目录接口和蝦皮页面没有对应字段,采购员无法利用这些信息快速核对蝦皮商品与 PDD 商品是否一致。 新增字段必须复用 #141 的分级更新策略和人工保护边界,不能让空值、旧批次、不同来源或顺运宝观测图片覆盖更可靠的蝦皮主数据。当前标题列已经从初版 30% 缩到 18%(即初版的 60%),新增列后不应再次缩成当前宽度的 60%。 ## 做什么 / 不做什么 - 做:增加蝦皮主图片、蝦皮店铺名及来源/观测时间/人工保护所需字段;商品目录接口接收并校验图片 URL 和店铺名;蝦皮列表增加图片、蝦皮店铺列;图片点击预览原图;详情显示完整店铺名、图片来源和更新时间���更新导入记录统计和接口文档。 - 不做:不保存图片二进制;不由 Admin 服务端主动下载外部图片;不把顺运宝观测图片覆盖成蝦皮主图片;不建立独立店铺实体或店铺管理模块;不再次缩小当前标题列;不修改 Client 四接口、PDD 店铺名或采购流程。 ## 怎么做 - 依赖 #141 完成后,复用其 `insert_only`、`fill_missing`、`overwrite_same_source`:默认只补空图片/店铺;同来源且更新的 `observed_at` 才可覆盖;人工字段永不自动覆盖;空值不能清除已有值。 - MySQL 采用追加式迁移,为 `shopee_products` 增加主图片 URL、蝦皮店铺名及必要来源审计字段;字段命名必须与 `pdd_products.shop_name` 清楚区分。 - 图片 URL 只接受合法 HTTP/HTTPS,拒绝 `file:`、`data:`、`javascript:`、含用户名密码以及包含 Cookie/访问令牌的地址;设置合理长度上限。页面直接由浏览器加载,服务端不抓取,避免 SSRF。 - 列表顺序建议:勾选、商品 ID、图片、商品标题、蝦皮店铺、颜色、尺码等。图片使用固定小尺寸、`loading="lazy"` 和加载失败占位;点击复用现有顺运宝 `data-image-preview-*` 原图弹窗及新窗口入口。 - 标题列保持当前 `.col-title { max-width: 18%; }`,继续省略并用 `title` 展示全文;店铺列限制约 120–160px并省略,表格列过多继续横向滚动。 - 商品详情展示完整图片、店铺名、来源和观测时间。关键词搜索是否扩展到标题/店铺应与现有数据库分页筛选共用一处,若实施则同步列表与计数查询。 - 预计修改 catalog request/model/service/repository、MySQL 迁移与自检、蝦皮列表/详情 view 和模板、通用图片预览、接口/UI/数据模型文档及测试。 ## 验收标准 - [x] 商品目录批次可以提交合法蝦皮主图片 URL 和店铺名,并写入对应商品。 - [x] 默认策略只补空字段;同来源新数据按 #141 规则更新;空值、旧时间和跨来源数据不会覆盖已有值。 - [x] 人工保护的图片或店铺名不会被任何第三方批次自动覆盖。 - [x] 顺运宝观测图片只在观测区域展示,不覆盖蝦皮主图片。 - [x] 蝦皮列表显示固定尺寸懒加载缩略图和蝦皮店铺,图片失败不影响表格。 - [x] 点击图片可预览原图并在新窗口打开;无图时显示明确占位且不出现空弹窗。 - [x] 商品详情显示完整店铺名、图片来源和观测时间。 - [x] 标题列保持当前 18% 宽度���店铺列截���,1366×768 下可用且允许横向滚动。 - [x] 接口拒绝危险协议、含用户信息或明显凭据的图片 URL,数据库和日志不保存图片凭据。 - [x] PDD 店铺名、PDD Excel 导入、采购流程和 Client 四接口保持不变。 - [x] Go 1.23 build/test/vet 和 MySQL 8.4 `_test` 迁移测试通过。 ## 怎么验证 固定 Go 1.23 全量 build/test/vet;httptest 覆盖图片 URL 校验和三种更新策略;repository/MySQL `_test` 覆盖迁移、旧时间、人工保护和空值;页面测试覆盖缩略图、店铺列、预览弹窗、无图/坏图状态;在 1366×768 浏览器人工检查列宽和横向滚动;回归 PDD Excel 与 Client 四接口。 ## 风险和回退 外部图片可能失效、变慢或泄露浏览器访问来源,必须懒加载、失败降级且不由服务端代理。回退时可移除列表/详情展示和接口字段写入,新增可空数据库列保留,不删除生产数据;旧代码应能忽略这些列。
Author
Owner

实施完成,等待验收

  • 实现提交:38d6a0a
  • 归档提交:e3dc48e
  • 归档:docs/task/142-蝦皮主图和店铺.md
  • 验证:固定 Go 1.23 全量 build/test/vet 与 node --check static/js/app.js 通过。
  • 未验证:未启用独立 MySQL 8.4 _test 环境;未做 1366×768 浏览器人工验收。
## 实施完成,等待验收 - 实现提交:`38d6a0a` - 归档提交:`e3dc48e` - 归档:`docs/task/142-蝦皮主图和店铺.md` - 验证:固定 Go 1.23 全量 build/test/vet 与 `node --check static/js/app.js` 通过。 - 未验证:未启用独立 MySQL 8.4 `_test` 环境;未做 1366×768 浏览器人工验收。
Author
Owner

用户于 2026-08-12 明确验收通过。已确认本地归档 docs/task/142-蝦皮主图和店铺.md 存在,现关闭工单。

用户于 2026-08-12 明确验收通过。已确认本地归档 `docs/task/142-蝦皮主图和店铺.md` 存在,现关闭工单。
ila closed this issue 2026-08-12 10:31:53 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#142