docs: 归档任务 #197

This commit is contained in:
chengma
2026-08-13 08:48:30 +08:00
parent 761058efc1
commit e8c52933ac
@@ -0,0 +1,60 @@
# 197 Admin:允许删除已停用的顺运宝同步店铺
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#15 / 顺运宝同步店铺准入
- 状态:已完成
- 日期:2026-08-13
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/197
## 背景与目标
#196 支持店铺新增、停用和重新启用,但错误名称会永久留在管理列表。本任务允许
管理员永久删除已停用配置,同时确保启用店铺及历史业务数据不会被误删。
## 最终方案
- 仅在已停用店铺行显示危险样式的“删除”按钮。
- 删除使用管理员路由、POST、CSRF,并复用现有 `data-confirm-submit` 二次确认;
文案包含店铺名称,明确历史货运单和同步记录不会删除。
- Repository 使用 `shop_id=? AND enabled=0` 参数化条件删除。即使提交后店铺被并发
重新启用,删除也不会命中。
- 服务端对空编号、店铺不存在和仍启用返回可操作错误,不能依赖页面隐藏按钮。
- 删除只影响 `syb_allowed_shops` 配置行;同名店铺之后可以重新新增。
- 未修改数据库结构、同步规则、历史货运单、同步记录或 Client 接口。
## 改了哪些
- `admin/repository/syb.go`:增加停用状态条件删除。
- `admin/service/syb_allowed_shop.go`:增加管理员删除业务校验。
- `admin/handler/web/web.go`、`syb_shop.go`:增加管理员 POST 删除路由及反馈。
- `admin/templates/syb/shops.html`:停用项删除按钮和带名称的二次确认。
- `admin/service/syb_allowed_shop_test.go`、`admin/main_test.go`:服务端门禁、历史数据、
重建同名店铺、模板和路由回归。
- `docs/admin/03-data-model.md`、`05-ui-specification.md`:更新数据和交互约束。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 启用店铺不显示删除入口,伪造请求也拒绝 | 通过 |
| 停用店铺显示删除按钮并二次确认店铺名称 | 通过 |
| 删除路由仅管理员可用并受 CSRF 保护 | 通过 |
| 删除后不再显示且可重新新增同名店铺 | 通过 |
| 历史货运单和同步记录保持不变 | 通过 |
| 并发重新启用不会被条件删除 | 通过(SQL 条件和自动化测试) |
| 固定 Go 1.23.0 build、vet、test | 通过 |
## 测试
- 执行的命令:
- `$env:GOTOOLCHAIN="go1.23.0"; go vet ./...; go build ./...; go test ./... -count=1`
- `go test ./service ./... -count=1`
- `git diff --check`
- 结果:全部通过,功能提交为 `761058e`。
- **没验证到的部分**:未启动浏览器人工点击确认/取消;未用真实网页登录采购员
请求删除路由;未部署生产。该任务没有数据库结构变更,不需要新增迁移演练。
## 相关提交
- `761058e` 删除已停用的同步店铺