feat: 增加员工端工作台后端能力

This commit is contained in:
湛兮
2026-06-02 12:23:00 +08:00
parent 667dc411fc
commit 98cea63203
33 changed files with 3021 additions and 18 deletions
+27 -6
View File
@@ -18,11 +18,14 @@
- 门店管理:查询、新增、修改、停用、软删除门店,门店详情可查看员工。
- 角色管理:拥有 `role:manage` 的账号可新增、修改、软删除自定义角色,服务端内置角色不可变更。
- 员工管理:分页查询、新增、修改、启用/停用、修改密码、重置初始密码、移除和软删除员工。
- 员工管理:分页查询、新增、修改、启用/停用、修改密码、重置临时密码、移除和软删除员工。
- 员工角色:一个员工可以绑定多个角色。
- 登录账号:超级管理员和员工都可以登录。
- 后台权限:超级管理员拥有所有权限;角色权限由 `role_permissions` 动态分配。
- 动态权限:菜单和按钮动作由 `/api/permissions/me` 返回,前端可通过权限管理页分配角色权限。
- 员工工作台:提供员工端首屏聚合、公告、任务、今日排班和排班列表接口。
- 后台工作台:提供公告、任务、排班管理接口。
- 凭据安全:禁止查看明文密码,只支持本人改密、下级员工临时密码重置和审计追踪。
- JWT 鉴权:登录后签发 token,除健康检查和登录外,接口都需要 Bearer token。
- 数据校验:使用 zod 校验路径参数、查询参数和请求体。
- 数据库迁移:使用 `migrations/*.sql` 管理建表和初始化数据。
@@ -53,7 +56,8 @@
│ ├── 004_add_employee_login_fields.sql # 给员工补充登录字段
│ ├── 005_refine_employee_login_and_role_policy.sql # 调整员工默认密码、手机号唯一和系统角色
│ ├── 006_create_role_permissions.sql # 创建角色权限关系表并初始化默认权限
── 007_add_soft_delete_to_roles_and_relations.sql # 给角色和关系表补充逻辑删除字段并移除级联删除
── 007_add_soft_delete_to_roles_and_relations.sql # 给角色和关系表补充逻辑删除字段并移除级联删除
│ └── 008_add_role_user_workbench_tables.sql # 新增员工工作台、排班和凭据审计表
├── src/
│ ├── app.ts # 创建 Fastify 应用、注册路由、统一错误处理
│ ├── server.ts # 启动 HTTP 服务和优雅停机
@@ -63,10 +67,15 @@
│ │ ├── migrate.ts # 执行 migrations 目录下的 SQL
│ │ └── pool.ts # MySQL 连接池
│ ├── modules/
│ │ ├── auth/ # 登录、当前用户和 JWT 鉴权模块
│ │ ├── announcements/ # 公告后台管理和员工端公告模块
│ │ ├── auth/ # 登录、当前用户、本人改密和 JWT 鉴权模块
│ │ ├── catalog/ # 门店和角色模块
│ │ ├── credentials/ # 凭据重置和凭据审计模块
│ │ ├── employees/ # 员工 CRUD 模块
│ │ ── permissions/ # 权限点定义、角色权限分配和菜单动作策略
│ │ ── mobile/ # 员工端首屏聚合模块
│ │ ├── permissions/ # 权限点定义、角色权限分配和菜单动作策略
│ │ ├── shifts/ # 排班后台管理和员工端排班模块
│ │ └── tasks/ # 任务后台管理和员工端任务模块
│ └── shared/ # 通用响应结构和业务错误
├── docker-compose.yml # 本地 MySQL
├── package.json
@@ -93,10 +102,15 @@
| `src/config/env.ts` | 使用 zod 校验当前运行环境变量,避免配置错误拖到请求阶段才暴露。 |
| `src/db/migrate.ts` | 执行 `migrations/*.sql`,并用 `schema_migrations` 记录已执行迁移。 |
| `src/db/pool.ts` | 创建 MySQL 连接池,提供数据库健康检查和关闭连接的方法。 |
| `src/modules/auth/` | 登录鉴权模块,负责后台登录、员工端登录、密码校验、JWT 签发、当前用户查询和权限 guard。 |
| `src/modules/announcements/` | 公告模块,负责后台公告管理、员工端可见公告、已读记录和未读统计。 |
| `src/modules/auth/` | 登录鉴权模块,负责后台登录、员工端登录、本人改密、密码校验、JWT 签发、当前用户查询和权限 guard。 |
| `src/modules/catalog/` | 门店和角色模块,负责基础资料接口、门店详情员工列表和门店移除员工入口。 |
| `src/modules/credentials/` | 凭据安全模块,负责下级员工临时密码重置、密码状态和凭据审计。 |
| `src/modules/employees/` | 员工模块,负责员工分页、详情、新增、修改、状态变更、密码维护和软删除。 |
| `src/modules/mobile/` | 员工端聚合模块,负责 `/api/mobile/bootstrap` 首屏数据。 |
| `src/modules/permissions/` | 权限模块,维护权限点定义、角色权限分配、当前用户菜单动作权限和权限策略说明。 |
| `src/modules/shifts/` | 排班模块,负责后台排班管理和员工端排班查询。 |
| `src/modules/tasks/` | 任务模块,负责后台任务管理、员工端任务处理和任务事件日志。 |
| `src/shared/` | 跨模块复用的响应结构和业务错误类型。 |
| `docker-compose.yml` | 本地开发用 MySQL 容器配置。 |
| `package.json` | 项目信息、依赖和常用脚本;脚本会读取现有 `.env.development`。 |
@@ -172,6 +186,10 @@ pnpm db:migrate
- `employee_roles`:员工角色关系表
- `role_permissions`:角色权限关系表
- `super_admins`:超级管理员表
- `announcements` / `announcement_targets` / `announcement_reads`:公告、目标范围和已读记录。
- `tasks` / `task_assignees` / `task_events`:任务、分配员工和处理日志。
- `shifts`:员工排班表。
- `credential_audits` / `employee_password_states`:凭据操作审计和员工改密状态。
- `schema_migrations`:迁移记录表
3. 启动后端:
@@ -301,7 +319,7 @@ pnpm dev
## 接口文档
完整前端对接文档见 [docs/API.md](./docs/API.md),包含认证、权限、字段约束、全部接口、示例请求响应常见错误码。
完整前端对接文档见 [docs/API.md](./docs/API.md),包含认证、权限、字段约束、全部接口、示例请求响应常见错误码和 C 端正式版新增模块说明
## 接口响应格式
@@ -646,6 +664,7 @@ curl -X DELETE http://localhost:3500/api/employees/1 \
- [005_refine_employee_login_and_role_policy.sql](./migrations/005_refine_employee_login_and_role_policy.sql):员工默认密码改为 `pw111111`,手机号改为全局唯一,并标记服务端内置角色。
- [006_create_role_permissions.sql](./migrations/006_create_role_permissions.sql):创建角色权限关系表,并初始化 `admin``store_manager` 的默认权限。
- [007_add_soft_delete_to_roles_and_relations.sql](./migrations/007_add_soft_delete_to_roles_and_relations.sql):给角色、员工角色关系和角色权限关系补充逻辑删除字段,移除关系表旧的 `ON DELETE CASCADE` 级联删除语义。
- [008_add_role_user_workbench_tables.sql](./migrations/008_add_role_user_workbench_tables.sql):新增公告、公告目标、公告已读、任务、任务分配、任务事件、排班、凭据审计和员工密码状态表,并初始化工作台相关权限。
执行 `pnpm db:migrate``pnpm db:migrate:prod` 时,脚本会:
@@ -670,6 +689,8 @@ migrations/003_add_employee_email.sql
- `employees.password_hash` 让员工也能登录,默认本地密码是 `pw111111`
- `employee_roles` 是员工和角色的多对多关系表,解绑时写入 `deleted_at`
- `role_permissions` 保存角色和权限点的多对多关系,权限解绑时写入 `deleted_at`,权限分配保存后会在接口鉴权时实时生效。
- `announcements``tasks``shifts` 支撑员工端工作台和后台管理工作流。
- `credential_audits` 只记录凭据操作,不记录明文密码;临时密码只在重置接口响应中返回一次。
- `super_admins` 保存超级管理员账号,密码使用 PBKDF2 哈希,禁止存明文。
- 权限点定义由 `src/modules/permissions/` 固定,角色拥有的权限点由 `role_permissions` 动态决定。
- 前端根据 `/api/permissions/me` 渲染菜单和按钮,根据 `/api/permissions/definitions` 渲染可分配权限点。