Files
cmautobuy/docs/task/215-蝦皮SKU人工编辑.md
T
2026-08-13 12:15:13 +08:00

63 lines
3.3 KiB
Markdown
Raw Blame History

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.
# 215 Admin:支持人工修改蝦皮 SKU 颜色尺码
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#15 / MVP 后续
- 状态:已完成,待用户验收
- 日期:2026-08-13
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/215
## 背景与目标
蝦皮商品详情原来只能查看规格。采购员无法修正已有 SKU 的颜色、尺码和建议说明,
解析错误或缺失数据只能等待第三方重新导入。本任务增加受控人工修正,并保护人工值不被
后续目录导入或 SYB 低优先级补全覆盖。
## 最终方案
每条现有 SKU 在只读摘要旁提供折叠“编辑”表单,只开放颜色、尺码和建议说明。颜色、
尺码必填,建议可清空;服务端限制每项最多 500 个字符,并同时核对内部 SKU 记录和商品
归属。保存把三个字段来源写为 `manual`、记录观测时间并设置 `parse_ok=1`,但不修改
`spec_raw`、`spec_key`、真实 SKU ID、SKU 编码、来源或 `is_manual`。
目录 `fill_missing` 规则增加字段级人工保护,因此主动清空建议也不会被再次补入;
`overwrite_same_source` 原本按来源判断,会自然跳过 `manual`。保存成功或校验失败后保留
列表筛选和页码,并自动重新打开同一商品详情。未新增数据库迁移、SKU 新增/删除或 Client
接口,实施与建单方案一致。
## 改了哪些
- `admin/service/shopee_sku.go`:输入校验、事务、字段来源合并和人工保存。
- `admin/repository/shopee.go`:读取字段来源并按 SKU 与商品双重条件更新。
- `admin/repository/catalog_import.go`:`fill_missing` 尊重字段级 `manual` 来源。
- `admin/handler/web/shopee.go`、`admin/handler/web/web.go`:增加保存路由和上下文返回。
- `admin/service/shopee_list.go`、`admin/templates/shopee/detail_modal.html`:提供内部定位值、
只读原文和逐行折叠编辑表单。
- `admin/static/css/app.css`:增加紧凑的 SKU 编辑布局。
- `admin/service/shopee_sku_test.go` 等:覆盖保存、输入拒绝、跨商品保护和导入防覆盖。
- `docs/admin/01-requirements.md`、`03-data-model.md`、`05-ui-specification.md`、
`06-quality-security.md`:同步需求、数据和测试基线。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 登录用户可修改已有 SKU 的颜色、尺码和建议说明 | 通过 |
| 空必填项、超长内容、错误记录和跨商品记录被拒绝且无部分更新 | 通过 |
| 保存后已解析,原文、规格键和真实 SKU ID 不变 | 通过 |
| 人工字段不被两种目录更新策略覆盖 | 通过 |
| 主动清空建议后不会被低优先级补空 | 通过 |
| 不修改 SYB 原始数据、规格映射、采购任务和 Client 接口 | 通过(修改范围检查) |
| Go 1.23 build、test、vet 全部通过 | 通过 |
## 测试
- 执行的命令:`$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1; go vet ./...`
- 结果:全部通过;新增服务测试使用 SQLite 小库覆盖事务写入和两种导入策略保护。
- **没验证到的部分**:未设置 `CMAUTOBUY_MYSQL_TEST=1`,因此未执行真实 MySQL 8
隔离库测试;未在生产 MySQL 写入;未做真实浏览器逐行编辑的人工验收。
## 相关提交
- `4752fef` feat: 支持人工修改蝦皮规格 (#215)