项目结构 & API 设计
单仓库 Monorepo:Spring Boot 3.x 后端 + Vue 3 前端,一个 jar 部署
目录结构
okr-performance/
├── backend/ # Spring Boot 3.x + MyBatis-Plus
│ ├── pom.xml
│ └── src/main/java/com/yimeng/okr/
│ ├── OkrApplication.java
│ ├── config/ # Security, CORS, MyBatis-Plus 配置
│ ├── security/ # JWT Filter, Token Provider
│ ├── controller/ # REST API 层
│ ├── service/ # 业务逻辑
│ ├── mapper/ # MyBatis-Plus Mapper
│ ├── entity/ # 数据库实体
│ ├── dto/ # 请求/响应 DTO
│ ├── enums/ # 枚举(周期状态、KR状态、评级等)
│ ├── exception/ # 全局异常处理
│ └── schedule/ # 定时任务(周期自动切换、数据库备份)
├── frontend/ # Vue 3 + Vite + Element Plus
│ ├── package.json
│ └── src/
│ ├── main.js
│ ├── App.vue
│ ├── router/ # Vue Router 路由
│ ├── stores/ # Pinia 状态管理
│ ├── api/ # Axios 封装 + API 模块
│ ├── views/ # 页面组件
│ │ ├── dashboard/ # 工作台首页
│ │ ├── period/ # 考核周期管理
│ │ ├── okr/ # OKR 制定 & 进度
│ │ ├── scoring/ # 绩效打分(同屏页)
│ │ ├── feedback/ # 绩效反馈(同屏页)
│ │ ├── org/ # 组织架构
│ │ ├── system/ # 系统管理(日志等)
│ │ └── auth/ # 登录/注册
│ ├── components/ # 通用组件
│ ├── composables/ # 组合函数
│ └── assets/ # 静态资源(含 logo)
├── data/ # SQLite 数据库文件存放目录
│ └── .gitkeep
├── scripts/
│ └── start.sh # 一键启动脚本:mvn clean package && java -jar
└── README.md
REST API 模块划分(共约 45 个端点)
Auth | /api/auth
POST /login, /register, /logout
GET /me, PUT /password
组织架构 | /api/org
GET/POST/PUT/DELETE /departments
PUT /departments/{id}/members
PUT /users/{id}/superior
考核周期 | /api/periods
CRUD /periods
PUT /periods/{id}/status (状态推进)
GET /periods/{id}/progress
OKR | /api/okr
CRUD objectives & key results
POST /objectives/{id}/submit (提交审核)
PUT /objectives/{id}/review (上级审核)
PUT /krs/{id}/progress (进度更新)
KPI | /api/kpi
GET/POST/PUT /templates
GET/POST/PUT /configs (个人KPI配置)
绩效打分 | /api/scores
POST /scores/self (员工自评)
POST /scores/superior (上级终审)
GET /scores/my (查看结果 + OKR联动)
绩效反馈 | /api/feedback
POST /feedback/interview (面谈记录)
POST /feedback/reply (员工反馈)
GET /feedback/{id}
系统 | /api/system
GET /logs (操作日志)
POST /backup, POST /restore
GET /corrections
关键技术栈确认
| 层级 | 选型 | 版本 |
| 运行时 | JDK | 17 LTS |
| 框架 | Spring Boot + MyBatis-Plus | 3.2.x |
| 数据库 | SQLite (WAL 模式) | - |
| 认证 | Spring Security + JWT | 6.x |
| 前端框架 | Vue 3 + Composition API | 3.4+ |
| UI 库 | Element Plus | 2.6+ |
| 构建工具 | Vite + Maven | - |
| 状态管理 | Pinia | 2.x |
一键启动流程
git clone <repo> && cd okr-performance && ./start.sh
start.sh 内部执行:
1. cd frontend && npm install && npm run build → 输出到 backend/src/main/resources/static/
2. cd backend && mvn clean package -DskipTests → 生成 app.jar
3. java -jar backend/target/app.jar → 前端 + 后端 + SQLite 全部就绪
4. 浏览器打开 http://localhost:8080 即用
部署物
- 1 个 jar 文件(内嵌 Vue 前端)
- 1 个 .db 文件(SQLite 数据库)
- 迁移 = 拷贝这 2 个文件
开发模式
- 后端:mvn spring-boot:run → :8080
- 前端:npm run dev → :5173,代理 /api → :8080
- 热更新,无需打包