内部任务管理系统,用于实习生与导师之间分配和跟踪日常任务。
| 层级 | 技术 |
|---|---|
| 前端 | Vue 3 (Composition API) + Vite + Element Plus + Pinia + ECharts + vuedraggable |
| 后端 | Spring Boot 3.3 + MyBatis-Plus 3.5 + JWT (jjwt 0.12) + EasyExcel |
| 数据库 | MySQL 8.0 |
| 工具 | Maven 3.9, Node.js 24, JDK 21 |
- 用户注册/登录(JWT 认证),支持导师和实习生两个角色
- 任务 CRUD,看板拖拽 + 表格双视图切换
- 任务状态流转:待办 → 进行中 → 已完成
- 任务筛选/搜索(按状态、负责人、关键词)
- 任务优先级(高/中/低)+ 颜色区分
- 个人仪表盘(统计卡片 + ECharts 完成率饼图 + 优先级柱状图)
- 截止日期倒计时提醒
- 导师查看所有任务,实习生只看到自己的任务
- 实时资讯模块(Hacker News API),支持刷新和搜索
- 任务关联资讯关键词
- Excel 导出
ITMS/
├── backend/ # Spring Boot 后端
│ ├── src/main/java/com/itms/
│ │ ├── config/ # CORS, MyBatis-Plus, 数据初始化, 异常处理
│ │ ├── controller/ # REST 控制器
│ │ ├── dto/ # 数据传输对象
│ │ ├── entity/ # 实体类
│ │ ├── mapper/ # MyBatis-Plus Mapper
│ │ ├── service/ # 业务逻辑接口
│ │ ├── service/impl/ # 业务逻辑实现
│ │ └── util/ # JWT 工具类
│ ├── src/main/resources/
│ │ ├── application.yml # 应用配置
│ │ └── db/schema.sql # 数据库建表脚本
│ └── pom.xml
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── api/ # API 请求封装
│ │ ├── components/ # 复用组件
│ │ ├── router/ # 路由配置
│ │ ├── views/ # 页面组件
│ │ ├── assets/ # 静态资源
│ │ ├── App.vue
│ │ └── main.js
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
└── README.md
- JDK 21+
- Maven 3.9+
- MySQL 8.0+
- Node.js 18+
CREATE DATABASE IF NOT EXISTS itms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;复制 backend/src/main/resources/application-template.yml 为 application.yml,修改其中的数据库密码。
cd backend
mvn spring-boot:run后端运行在 http://localhost:8080
cd frontend
npm install
npm run dev前端运行在 http://localhost:5173
| 角色 | 用户名 | 密码 |
|---|---|---|
| 导师 | mentor | 123456 |
| 实习生 | intern | 123456 |
| Method | Path | 说明 |
|---|---|---|
| POST | /api/auth/login | 用户登录 |
| POST | /api/auth/register | 用户注册 |
| GET | /api/users/me | 当前用户信息 |
| GET | /api/users | 用户列表 |
| GET | /api/tasks | 任务列表(支持筛选) |
| POST | /api/tasks | 创建任务 |
| PUT | /api/tasks/{id} | 编辑任务 |
| DELETE | /api/tasks/{id} | 删除任务 |
| PATCH | /api/tasks/{id}/status | 更新任务状态 |
| GET | /api/tasks/{id} | 任务详情 |
| GET | /api/tasks/export | 导出 Excel |
| GET | /api/news | 资讯列表 |
| POST | /api/news/refresh | 刷新资讯 |
| GET | /api/dashboard/stats | 仪表盘统计 |
sys_user— 用户表(id, username, password, role, nickname, created_at, updated_at)task— 任务表(id, title, description, status, priority, assignee_id, creator_id, due_date, news_keyword, created_at, updated_at)news— 资讯表(id, title, summary, url, source, keyword, published_at, created_at)
本项目使用 Claude Code 辅助开发,AI 参与了以下工作:
- 项目架构设计和规划
- 全部后端 Java 代码生成(Spring Boot + MyBatis-Plus)
- 全部前端 Vue 3 代码生成(Element Plus + ECharts)
- 数据库表结构设计
- 依赖配置(pom.xml, package.json)
验证方式:所有代码经过 mvn compile 编译验证通过,前端 npm install 无报错。资讯模块调用 Hacker News API 验证通过。
遇到的坑:Spring Security Crypto 未默认包含在 Spring Boot Starter Web 中,需单独添加 spring-security-crypto 依赖才能使用 BCryptPasswordEncoder。