# project_management_claudecode **Repository Path**: luoguang/project_management_claudecode ## Basic Information - **Project Name**: project_management_claudecode - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-23 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目管理系统 前后端分离架构:React 18 + Ant Design 5 (前端) / Spring Boot 3.2 + JPA (后端) / MySQL (数据库) > 详细设计文档:[DESIGN.md](./DESIGN.md) > 测试:47 个单元/集成测试,覆盖率包括 Service 层和 Controller 层 ## 系统角色与权限 | 角色 | 权限 | |------|------| | **管理员** (roleId=0) | 创建用户、删除用户、修改用户角色、停用/启用用户、查看所有项目、删除项目 | | **项目经理** (roleId=1) | 创建项目、编辑项目(已创建/已拒绝状态)、指定工程师、结项 | | **工程师** (roleId=2) | 接受项目、拒绝项目、完成项目 | ## 项目状态流转 ``` 已创建 ──工程师接受──▶ 已创建(进行中) │ │ ├──工程师拒绝──▶ 已拒绝 │──工程师完成──▶ 已完成 ──经理结项──▶ 已结项 │ │ └──(可编辑) └──(可编辑) ``` - 已创建/已拒绝状态的项目可被项目经理编辑 - 已完成的项目可被项目经理结项 - 已结项的项目不可再编辑 ## 快速开始 ### 1. 初始化数据库 ```bash mysql -u test -p'Luog@1989' < backend/src/main/resources/init.sql ``` 应用启动时 DataInitializer 也会自动初始化角色和默认管理员。 ### 2. 启动后端 (端口 8080) ```bash cd backend mvn clean package -DskipTests java -jar target/project-management-0.0.1-SNAPSHOT.jar ``` ### 3. 启动前端 (端口 5173) ```bash cd frontend npm install npm run dev ``` ### 4. 访问系统 浏览器打开 http://localhost:5173 ### 默认管理员账号 - 用户名: `admin` - 密码: `admin123` ## 项目结构 ``` project-management/ ├── backend/ # Spring Boot 后端 │ ├── pom.xml │ └── src/main/java/com/log/ │ ├── Application.java # 启动入口 │ ├── config/ │ │ ├── SecurityConfig.java # Spring Security + CORS 配置 │ │ ├── DataInitializer.java # 默认数据初始化 │ │ └── GlobalExceptionHandler.java # 全局异常处理 │ ├── entity/ │ │ ├── User.java # 用户实体 │ │ ├── UserRole.java # 角色实体 │ │ └── Project.java # 项目实体 │ ├── repository/ # JPA 数据访问层 │ ├── service/ # 业务逻辑层 │ ├── controller/ # REST 控制器 │ ├── dto/ # 请求/响应 DTO │ └── security/ │ ├── JwtUtil.java # JWT 工具类 │ └── JwtAuthenticationFilter.java # JWT 认证过滤器 │ └── src/test/java/com/log/ # 测试代码 ├── frontend/ # React 前端 │ ├── package.json │ ├── vite.config.js # Vite 配置 + API 代理 │ └── src/ │ ├── main.jsx # 入口 │ ├── App.jsx # 路由配置 │ ├── api/ # API 请求封装 │ │ ├── axios.js # axios 实例 + 拦截器 │ │ ├── auth.js # 登录/认证 │ │ ├── user.js # 用户管理 │ │ └── project.js # 项目管理 │ ├── store/authStore.jsx # 认证状态管理 │ ├── components/ │ │ ├── Layout.jsx # 主布局(侧边栏+顶栏) │ │ └── PrivateRoute.jsx # 路由守卫 │ └── pages/ │ ├── Login.jsx # 登录页 │ ├── Dashboard.jsx # 仪表盘 │ ├── project/ │ │ ├── ProjectList.jsx # 项目列表 │ │ ├── ProjectCreate.jsx # 创建项目 │ │ └── ProjectEdit.jsx # 项目详情/编辑/操作 │ └── user/ │ ├── UserList.jsx # 用户列表 │ ├── UserCreate.jsx # 创建用户 │ └── UserEdit.jsx # 用户详情/编辑 └── .claude/settings.local.json # Claude Code 权限配置 ``` ## API 接口 ### 认证 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/auth/login` | 用户登录,返回 JWT token | ### 项目管理 | 方法 | 路径 | 权限 | 说明 | |------|------|------|------| | GET | `/api/projects` | 所有角色 | 获取项目列表(按角色过滤) | | GET | `/api/projects/{id}` | 所有角色 | 获取项目详情 | | POST | `/api/manager/projects` | 管理员/项目经理 | 创建项目 | | PUT | `/api/manager/projects/{id}` | 管理员/项目经理 | 更新项目 | | PUT | `/api/engineer/projects/{id}/accept` | 所有角色 | 接受项目 | | PUT | `/api/engineer/projects/{id}/reject` | 所有角色 | 拒绝项目 | | PUT | `/api/engineer/projects/{id}/complete` | 所有角色 | 完成项目 | | PUT | `/api/manager/projects/{id}/close` | 管理员/项目经理 | 结项 | | DELETE | `/api/admin/projects/{id}` | 管理员 | 删除项目 | ### 用户管理 | 方法 | 路径 | 权限 | 说明 | |------|------|------|------| | GET | `/api/users` | 所有角色 | 获取所有用户 | | GET | `/api/users/engineers` | 所有角色 | 获取工程师列表 | | GET | `/api/users/{id}` | 所有角色 | 获取用户详情 | | POST | `/api/admin/users` | 管理员 | 创建用户 | | PUT | `/api/admin/users/{id}` | 管理员 | 更新用户 | | DELETE | `/api/admin/users/{id}` | 管理员 | 删除用户 | ## 数据库配置 `backend/src/main/resources/application.properties`: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/project spring.datasource.username=test spring.datasource.password=Luog@1989 ```