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