docs: 定义 Admin 登录与账号管理基线 (#49)

This commit is contained in:
chengma
2026-08-09 13:12:03 +08:00
parent 6e6e99a5d7
commit fc03388ed4
5 changed files with 161 additions and 5 deletions
+34
View File
@@ -46,6 +46,31 @@
- `[必须]` `handler/web` 和 `handler/api` **分开**:
页面出错要渲染错误页,接口出错要返回 JSON;页面要 CSRF,接口要认证。
混在一起迟早写错。
- `[必须]` Web 登录中间件只挂在 `handler/web` 路由组,不能挂到整个 Gin Engine。
`/api/v1/client/*` 本阶段保持原有接口行为,不能返回登录页或 302 重定向。
### 2.1 登录与路由边界
```text
公开网页
├── GET/POST /setup 仅数据库没有用户时可用
├── GET/POST /login
└── /static/*
需要登录的网页
├── /shopee /pdd /syb /tasks /clients
├── POST /logout
└── /users 仅管理员
保持原样的 Client API
└── /api/v1/client/*
```
- `Session` 是服务器保存的网页登录状态,浏览器只持有随机 Cookie。
- 没有任何用户时,业务网页跳转到 `/setup`;初始化完成后 `/setup` 的服务端处理永久拒绝再次创建管理员。
- 有用户但未登录时,业务网页跳转到 `/login`;API 继续返回原有 JSON 或 `204`。
- Handler 从中间件写入的当前用户读取身份,不信任表单里的 `user_id` 或 `role`。
- 采购员可以使用现有业务页面,但访问 `/users` 必须返回 `403`。
## 3. 目录
@@ -56,6 +81,8 @@ admin/
├── config/ 端口、路径、超时
├── handler/
│ ├── web/ 五个模块的页面
│ │ ├── auth.go 初始化、登录、退出
│ │ ├── user.go 管理员维护采购员
│ │ ├── shopee.go
│ │ ├── syb.go
│ │ ├── task.go
@@ -70,6 +97,7 @@ admin/
│ └── clientreg.go 客户端注册与在线判断
├── repository/
│ ├── db.go 连接、迁移
│ ├── user.go 用户和 Web Session
│ ├── shopee.go
│ ├── syb.go
│ ├── task.go
@@ -90,6 +118,10 @@ admin/
```text
templates/
├── layout.html 整体骨架:导航 + 内容占位 + 状态条
├── auth/
│ ├── setup.html 首次管理员初始化
│ └── login.html
├── user/list.html 采购员账号管理
├── shopee/
│ ├── list.html 表格页
│ └── edit_modal.html 编辑弹窗(含 PDD 链接和采集按钮)
@@ -216,6 +248,8 @@ handler 渲染结果页:导入 5195 商品 / 6092 SKU,失败 0 行
- Admin 是任务的创建者和分配者,Client 是执行者。
- Admin **不知道** Client 执行到哪一步(没有心跳,是有意的)。
- Client 提交结果时,Admin **无条件接受**,哪怕任务已取消或已重派。
- Admin 用户登录与 Client 身份是两套边界。Web Session 不传给 Client,
Web 登录中间件也不覆盖 `/api/v1/client/*`。
- 详见 [04 Client 接口实现](04-client-api.md)。
## 9. 相关文档