111 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 包含电源控制菜单项