## 项目结构 & 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
- 热更新，无需打包