Files
cmautobuy/docs/task/212-店铺管理收敛为单一店铺名称.md
T

48 lines
2.8 KiB
Markdown
Raw Normal View History

2026-08-13 11:48:46 +08:00
# 212 Admin:店铺管理收敛为单一店铺名称
- 类型:需求
- 父级大工单:#206
- 所属 MVP / 版本:#207
- 状态:已完成
- 日期:2026-08-13
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/212
## 背景与目标
顺运宝中的店铺名称就是蝦皮店铺名称,原页面同时维护业务店铺、SYB 名称、蝦皮名称及两个启停开关,超出了实际业务概念。本任务把店铺管理收敛为一个名称和一个状态,同时安全兼容已经执行过的 MySQL v18。
## 最终方案
`shops.display_name` 是唯一面向用户的店铺名称,同时用于 SYB 同步准入和蝦皮商品关联。匹配仍只忽略首尾空白并做精确比较。`shop_channel_aliases` 暂时作为 v18 兼容表保留,但不再显示或独立编辑;新增、改名和启停时自动维护两条同名同状态记录。
新增 MySQL v19 迁移。旧全局开关与 SYB 开关只要任一侧停用,合并结果就保持停用,避免升级后意外开放同步;随后重建兼容记录以及 SYB、蝦皮的 `shop_id` 派生关联。店铺管理页只保留名称、状态、蝦皮商品数、更新时间和操作,并提供蝦皮“未登记商品”入口。
## 改了哪些
- `admin/repository/mysql_db.go`:新增 v19 数据收敛迁移和启动自检。
- `admin/repository/shop.go`、`admin/service/shop.go`:改为按唯一名称匹配,并事务性维护名称、状态和兼容数据。
- `admin/repository/syb.go`、`admin/repository/catalog_import.go`:SYB 写入与目录导入直接按唯一店铺名称解析。
- `admin/handler/web/shop.go`、`admin/templates/shop/list.html`:精简店铺管理接口与页面,移除独立 SYB 开关和多名称输入。
- `admin/model/model.go`、相关测试及 `docs/admin/`:同步模型说明、回归用例和基线文档。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 店铺管理只显示和编辑一个店铺名称、一个启停状态 | 通过 |
| 启用店铺参与 SYB 准入,停用店铺不参与同步 | 通过 |
| 蝦皮导入和 SYB 写入按同一名称精确关联 `shop_id` | 通过 |
| v19 安全合并 v18 状态并重建同名同状态兼容记录 | 通过(代码、自检和集成用例覆盖) |
| 未登记蝦皮商品数量可以进入对应列表 | 通过 |
| 仍只允许删除无引用的停用店铺 | 通过 |
## 测试
- 执行的命令:在 `admin/` 执行 `$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1`,随后执行 `go vet ./...` 和 `git diff --check`。
- 结果:Go 1.23.0 构建、全量测试、vet 和差异检查全部通过。
- **没验证到的部分**:当前没有启用独立 `_test` MySQL 8 测试库;v17→v19 真实 MySQL 集成用例本次执行为 SKIP,未在生产库执行迁移。
## 相关提交
- `313e9f9` 收敛店铺管理和蝦皮分类搜索