111 lines
4.9 KiB
Markdown
111 lines
4.9 KiB
Markdown
# Requirements Document
|
||
|
||
## Introduction
|
||
|
||
为 adminSystem 前端后台管理系统提供完整的后端 API 支持,包括用户认证、用户管理、角色管理、菜单管理等功能。后端将扩展现有的 C# ASP.NET Core 项目 (backend-csharp),与 AMT Scanner 功能共用同一个后端服务。
|
||
|
||
## Glossary
|
||
|
||
- **Auth_Service**: 认证服务,负责用户登录、Token 管理
|
||
- **User_Service**: 用户服务,负责用户 CRUD 操作
|
||
- **Role_Service**: 角色服务,负责角色 CRUD 操作
|
||
- **Menu_Service**: 菜单服务,负责动态菜单管理
|
||
- **JWT_Token**: JSON Web Token,用于用户身份验证
|
||
- **Refresh_Token**: 刷新令牌,用于获取新的访问令牌
|
||
|
||
## Requirements
|
||
|
||
### Requirement 1: 用户登录认证
|
||
|
||
**User Story:** As a 系统用户, I want to 使用用户名和密码登录系统, so that I can 访问受保护的功能。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 用户提交有效的用户名和密码 THEN THE Auth_Service SHALL 返回 JWT Token 和 Refresh Token
|
||
2. WHEN 用户提交无效的凭据 THEN THE Auth_Service SHALL 返回 401 错误和错误消息
|
||
3. THE Auth_Service SHALL 使用 BCrypt 或类似算法对密码进行哈希存储
|
||
4. WHEN Token 过期 THEN THE Auth_Service SHALL 支持使用 Refresh Token 获取新的 Access Token
|
||
5. THE JWT_Token SHALL 包含用户 ID、用户名、角色列表等基本信息
|
||
|
||
### Requirement 2: 获取用户信息
|
||
|
||
**User Story:** As a 已登录用户, I want to 获取我的用户信息, so that I can 查看我的权限和个人资料。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 用户携带有效 Token 请求用户信息 THEN THE User_Service SHALL 返回用户详细信息
|
||
2. THE User_Service SHALL 返回用户的角色列表 (roles)
|
||
3. THE User_Service SHALL 返回用户的按钮权限列表 (buttons)
|
||
4. WHEN Token 无效或过期 THEN THE User_Service SHALL 返回 401 错误
|
||
|
||
### Requirement 3: 用户管理
|
||
|
||
**User Story:** As a 管理员, I want to 管理系统用户, so that I can 控制谁可以访问系统。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. THE User_Service SHALL 支持分页查询用户列表
|
||
2. WHEN 管理员创建新用户 THEN THE User_Service SHALL 验证用户名唯一性
|
||
3. THE User_Service SHALL 支持按用户名、状态、性别等条件搜索用户
|
||
4. WHEN 管理员更新用户信息 THEN THE User_Service SHALL 记录更新时间和更新人
|
||
5. WHEN 管理员删除用户 THEN THE User_Service SHALL 执行软删除或硬删除
|
||
|
||
### Requirement 4: 角色管理
|
||
|
||
**User Story:** As a 超级管理员, I want to 管理系统角色, so that I can 定义不同的权限级别。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. THE Role_Service SHALL 支持分页查询角色列表
|
||
2. WHEN 创建角色 THEN THE Role_Service SHALL 验证角色编码唯一性
|
||
3. THE Role_Service SHALL 支持启用/禁用角色
|
||
4. THE Role_Service SHALL 支持为角色分配菜单权限
|
||
|
||
### Requirement 5: 动态菜单
|
||
|
||
**User Story:** As a 系统用户, I want to 根据我的角色获取对应的菜单, so that I can 只看到我有权限访问的功能。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 用户请求菜单列表 THEN THE Menu_Service SHALL 返回用户角色对应的菜单树
|
||
2. THE Menu_Service SHALL 支持菜单的层级结构 (父子关系)
|
||
3. THE Menu_Service SHALL 返回菜单的图标、标题、路径、组件等信息
|
||
4. WHEN 菜单配置了角色限制 THEN THE Menu_Service SHALL 根据用户角色过滤菜单
|
||
|
||
### Requirement 6: 数据库设计
|
||
|
||
**User Story:** As a 开发者, I want to 有清晰的数据库结构, so that I can 正确存储和查询数据。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. THE Database SHALL 包含 Users 表存储用户信息
|
||
2. THE Database SHALL 包含 Roles 表存储角色信息
|
||
3. THE Database SHALL 包含 UserRoles 表存储用户-角色关联
|
||
4. THE Database SHALL 包含 Menus 表存储菜单信息
|
||
5. THE Database SHALL 包含 RoleMenus 表存储角色-菜单关联
|
||
6. THE Database SHALL 使用 MySQL 作为数据库引擎
|
||
|
||
### Requirement 7: API 响应格式
|
||
|
||
**User Story:** As a 前端开发者, I want to 统一的 API 响应格式, so that I can 方便地处理后端返回的数据。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. THE API SHALL 返回统一的响应结构: { code, msg, data }
|
||
2. WHEN 请求成功 THEN THE API SHALL 返回 code = 200
|
||
3. WHEN 认证失败 THEN THE API SHALL 返回 code = 401
|
||
4. WHEN 请求参数错误 THEN THE API SHALL 返回 code = 400
|
||
5. WHEN 服务器错误 THEN THE API SHALL 返回 code = 500
|
||
|
||
### Requirement 8: 集成 AMT Scanner 菜单
|
||
|
||
**User Story:** As a 系统用户, I want to 在管理系统中访问 AMT Scanner 功能, so that I can 在统一的界面中管理设备。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. THE Menu_Service SHALL 包含 AMT 设备管理菜单项
|
||
2. THE Menu_Service SHALL 包含网络扫描菜单项
|
||
3. THE Menu_Service SHALL 包含凭据管理菜单项
|
||
4. THE Menu_Service SHALL 包含远程桌面菜单项
|
||
5. THE Menu_Service SHALL 包含电源控制菜单项
|