HaniBlindBox/.kiro/specs/admin-system/tasks.md
2026-01-04 01:44:21 +08:00

8.8 KiB
Raw Blame History

Implementation Plan: Admin System

Overview

实现 HoneyBox.Admin 后台管理系统,包括后端 API 和 Vue3 前端。采用分阶段实现:先搭建后端框架和核心功能,再实现前端界面。

Tasks

  • 1. 创建 HoneyBox.Admin 项目结构

    • 创建 ASP.NET Core Web API 项目
    • 配置项目文件夹结构 (Controllers, Services, Entities, Models, Data, Filters, Extensions)
    • 添加必要的 NuGet 包引用
    • 配置 appsettings.json 数据库连接
    • Requirements: 1.1, 1.2
  • 2. 实现数据库实体和 DbContext

    • 2.1 创建 Entity 类
      • 创建 AdminUser, Role, Menu, Permission, Department 实体
      • 创建 AdminUserRole, RoleMenu, RolePermission, DepartmentMenu, AdminUserMenu 关联实体
      • 创建 OperationLog 实体
      • Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7
    • 2.2 创建 AdminDbContext
      • 配置 DbSet 属性
      • 配置实体关系和索引
      • Requirements: 2.8
    • 2.3 执行数据库迁移
      • 创建数据库表
      • 验证表结构
      • Requirements: 2.1-2.8
  • 3. 实现认证服务

    • 3.1 创建通用 DTO 模型
      • 创建 ApiResponse 通用响应模型
      • 创建 PagedResult 分页结果模型
      • 创建 AdminErrorCodes 错误码定义
      • Requirements: 3.1
    • 3.2 创建认证相关 DTO 模型
      • 创建 LoginRequest, LoginResponse, AdminUserInfo
      • 创建 ChangePasswordRequest
      • Requirements: 3.1
    • 3.3 实现 IAuthService 和 AuthService
      • 实现 LoginAsync 方法 (验证凭据、生成 JWT)
      • 实现登录失败计数和账户锁定逻辑
      • 实现 GetCurrentUserInfoAsync 方法
      • 实现 ChangePasswordAsync 方法
      • Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
    • 3.4 创建 AuthController
      • 实现 POST /api/admin/auth/login
      • 实现 GET /api/admin/auth/info
      • 实现 PUT /api/admin/auth/password
      • 实现 POST /api/admin/auth/logout
      • Requirements: 3.1, 3.6
    • 3.5 创建 AdminAuthFilter
      • 实现 JWT Token 验证
      • 处理无效/过期 Token
      • Requirements: 3.6, 3.7
  • 4. 实现菜单管理

    • 4.1 创建菜单相关 DTO
      • 创建 MenuDto, MenuTreeDto, CreateMenuRequest, UpdateMenuRequest
      • Requirements: 4.1
    • 4.2 实现 IMenuService 和 MenuService
      • 实现 GetMenuTreeAsync (构建树形结构)
      • 实现 CRUD 方法
      • 实现 GetUserMenusAsync (合并部门菜单、角色菜单、用户专属菜单)
      • Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.7, 11.2, 11.3
    • 4.3 创建 MenuController
      • 实现所有菜单管理 API
      • Requirements: 4.1-4.7
  • 5. 实现角色管理

    • 5.1 创建角色相关 DTO
      • 创建 RoleDto, CreateRoleRequest, UpdateRoleRequest, RoleQueryRequest
      • Requirements: 5.1
    • 5.2 实现 IRoleService 和 RoleService
      • 实现分页查询
      • 实现 CRUD 方法
      • 实现菜单/权限分配
      • Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7
    • 5.3 创建 RoleController
      • 实现所有角色管理 API
      • Requirements: 5.1-5.7
  • 6. 实现管理员管理

    • 6.1 创建管理员相关 DTO
      • 创建 AdminUserDto, CreateAdminUserRequest, UpdateAdminUserRequest, AdminUserQueryRequest
      • Requirements: 6.1
    • 6.2 实现 IAdminUserService 和 AdminUserService
      • 实现分页查询
      • 实现 CRUD 方法
      • 实现角色分配、部门分配、用户专属菜单分配、状态切换、密码重置
      • Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 10.8, 11.1
    • 6.3 创建 AdminUserController
      • 实现所有管理员管理 API
      • 包含分配部门、分配用户专属菜单接口
      • Requirements: 6.1-6.7, 10.8, 11.1
  • 7. 实现部门管理

    • 7.1 创建部门相关 DTO
      • 创建 DepartmentDto, DepartmentTreeDto, CreateDepartmentRequest, UpdateDepartmentRequest
      • Requirements: 10.1, 10.2
    • 7.2 实现 IDepartmentService 和 DepartmentService
      • 实现 GetDepartmentTreeAsync (构建树形结构,支持无限嵌套)
      • 实现 CRUD 方法
      • 实现部门菜单分配
      • 实现循环引用检测 (防止部门设为自己的子部门)
      • Requirements: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7
    • 7.3 创建 DepartmentController
      • 实现所有部门管理 API
      • Requirements: 10.1-10.8
  • 8. 实现权限控制

    • 8.1 实现 IPermissionService 和 PermissionService
      • 实现 GetUserPermissionsAsync
      • 实现 HasPermissionAsync
      • 实现权限缓存和失效 (角色、部门、用户菜单变更时失效)
      • Requirements: 7.1, 7.4, 7.5, 11.5
    • 8.2 创建 PermissionFilter
      • 实现 AdminPermissionAttribute
      • 实现权限验证逻辑
      • Requirements: 7.1, 7.2, 7.3
    • 8.3 创建 PermissionController
      • 实现权限列表查询 API
      • Requirements: 7.1
  • 9. 实现操作日志

    • 9.1 实现 IOperationLogService 和 OperationLogService
      • 实现日志记录方法
      • 实现分页查询
      • Requirements: 8.1, 8.2, 8.3, 8.4
    • 9.2 创建 OperationLogFilter
      • 自动记录 API 操作日志
      • Requirements: 8.1, 8.2
    • 9.3 创建 OperationLogController
      • 实现日志查询 API
      • Requirements: 8.3, 8.4
  • 10. 配置服务注册和静态文件

    • 10.1 创建 ServiceCollectionExtensions
      • 实现 AddHoneyBoxAdmin() 扩展方法
      • 注册所有服务和 DbContext
      • Requirements: 1.5
    • 10.2 重构 Program.cs 使用扩展方法
      • 使用 AddHoneyBoxAdmin() 替代手动注册
      • 确保静态文件服务和 SPA Fallback 路由配置正确
      • Requirements: 1.3, 1.4
  • 11. 数据初始化

    • 11.1 创建 DataSeeder
      • 初始化超级管理员账号 (admin/admin123)
      • 初始化超级管理员角色
      • 初始化系统菜单
      • 初始化系统权限
      • 初始化根部门
      • Requirements: 12.1, 12.2, 12.3, 12.4, 12.5
  • 12. Checkpoint - 后端 API 完成

    • 确保所有 API 可正常调用
    • 确保认证和权限控制正常工作
    • 使用 Postman 或 .http 文件测试
  • 13. 创建 Vue3 前端项目

    • 13.1 初始化项目
      • 使用 Vite 创建 Vue3 + TypeScript 项目
      • 安装 Element Plus, Pinia, Vue Router, Axios
      • 配置 vite.config.ts 输出到 wwwroot
      • Requirements: 9.1, 9.2, 9.3, 9.4, 9.8
    • 13.2 创建基础结构
      • 创建目录结构 (api, store, router, views, layout, utils)
      • 配置 Axios 请求封装
      • 配置 Token 管理
      • Requirements: 9.1, 9.2, 9.3
  • 14. 实现前端登录功能

    • 14.1 创建登录页面
      • 实现登录表单 (用户名、密码)
      • 实现表单验证
      • 调用登录 API
      • Requirements: 9.5
    • 14.2 实现用户状态管理
      • 创建 user store (Pinia)
      • 存储 token 和用户信息
      • Requirements: 9.3
  • 15. 实现前端布局和路由

    • 15.1 创建主布局
      • 实现侧边栏菜单组件
      • 实现顶部栏组件
      • 实现主内容区域
      • Requirements: 9.6
    • 15.2 实现动态路由
      • 创建 permission store
      • 根据用户菜单生成动态路由
      • 实现路由守卫
      • Requirements: 9.4
    • 15.3 实现权限指令
      • 创建 v-permission 指令
      • 实现按钮级别权限控制
      • Requirements: 9.7
  • 16. 实现前端系统管理页面

    • 16.1 实现菜单管理页面
      • 菜单树形表格
      • 新增/编辑/删除菜单
      • Requirements: 4.1-4.7
    • 16.2 实现角色管理页面
      • 角色列表表格
      • 新增/编辑/删除角色
      • 分配菜单/权限
      • Requirements: 5.1-5.7
    • 16.3 实现部门管理页面
      • 部门树形表格
      • 新增/编辑/删除部门
      • 分配部门菜单
      • Requirements: 10.1-10.8
    • 16.4 实现管理员管理页面
      • 管理员列表表格
      • 新增/编辑/删除管理员
      • 分配角色、分配部门、分配用户专属菜单、启用/禁用
      • Requirements: 6.1-6.7, 10.8, 11.1
  • 17. 实现首页仪表盘

    • 创建 Dashboard 页面
    • 显示基本统计信息
    • Requirements: 9.6
  • 18. 前端打包和部署配置

    • 配置生产环境构建
    • 输出到 HoneyBox.Admin/wwwroot
    • 验证一体化部署
    • Requirements: 9.8
    • 注意: 由于项目路径包含 # 字符Vite 构建会失败。需要将项目移动到不包含特殊字符的路径下进行构建。
  • 19. Final Checkpoint - 系统完成

    • 确保前后端联调正常
    • 确保所有功能可用
    • 确保权限控制正常
    • 后端: 构建成功,所有 API 已实现
    • 前端: 所有页面已创建,需在无特殊字符路径下构建

Notes

  • 任务按顺序执行,后端优先于前端
  • Checkpoint 任务用于阶段性验证
  • 前端打包后部署到 wwwroot实现一体化部署
  • 默认管理员账号: admin / admin123
  • 用户菜单 = 部门菜单 角色菜单 用户专属菜单