# 医院绩效考核管理系统 一个为县级中医院设计的绩效考核管理系统,支持科室管理、员工管理、考核指标管理、绩效考核流程、数据分析报表和绩效工资核算。 ## 技术栈 ### 后端 - **FastAPI** - 高性能异步 Web 框架 - **SQLAlchemy 2.0** - 异步 ORM - **PostgreSQL** - 数据库(端口:15432) - **Alembic** - 数据库迁移 - **Pydantic v2** - 数据验证 - **asyncpg** - PostgreSQL 异步驱动 ### 前端 - **Vue 3** - 渐进式 JavaScript 框架(Composition API) - **Element Plus** - UI 组件库 - **Pinia** - 状态管理 - **ECharts** - 图表库 - **Vite** - 构建工具 ## 项目结构 ``` hospital-performance/ ├── backend/ # 后端服务 │ ├── app/ │ │ ├── core/ # 核心配置 │ │ ├── models/ # 数据模型 │ │ ├── schemas/ # Pydantic模式 │ │ ├── api/ # API路由 │ │ ├── services/ # 业务逻辑 │ │ └── utils/ # 工具函数 │ ├── alembic/ # 数据库迁移 │ └── requirements.txt ├── frontend/ # 前端应用 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ ├── api/ # API调用 │ │ ├── stores/ # 状态管理 │ │ └── router/ # 路由配置 │ └── package.json └── README.md ``` ## 功能模块 ```mermaid graph TD A[医院绩效考核系统] --> B[基础数据管理] A --> C[绩效考核流程] A --> D[数据分析报表] A --> E[绩效工资核算] B --> B1[科室管理] B --> B2[员工管理] B --> B3[考核指标库] B --> B4[模板管理] C --> C1[考核计划] C --> C2[指标分配] C --> C3[考核提交] C --> C4[多级审核] C --> C5[批量考核] D --> D1[科室统计] D --> D2[员工排名] D --> D3[趋势分析] D --> D4[分布分析] E --> E1[自动计算] E --> E2[公式配置] E --> E3[批量生成] E --> E4[发放确认] ``` ### 1. 基础数据管理 - 科室信息管理(支持树形结构,含临床、医技、行政等类别) - 员工信息管理(工号、岗位、职称、入职时间等) - 考核指标管理(KPI 指标库、平衡计分卡维度) - 模板管理(考核表模板、指标分配方案) ### 2. 绩效考核流程 - 考核计划制定(月度、季度、年度) - 考核记录创建与编辑 - 考核提交与多级审核流程 - 批量创建考核 - 绩效反馈与申诉 ### 3. 数据分析报表 - 科室绩效统计(工作量、质量、满意度等) - 员工绩效排名与分析 - 趋势分析图表(同比、环比) - 绩效分布分析(按科室、岗位、职称) - 平衡计分卡四维分析 ### 4. 绩效工资核算 - 根据考核结果自动计算工资 - 绩效工资公式配置 - 批量生成工资记录 - 工资确认与发放 - 工资条导出 ## 快速开始 ### 环境要求 - Python 3.10+ - Node.js 18+ - PostgreSQL 14+ ### 后端启动 ```bash # 进入后端目录 cd backend # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows PowerShell .\venv\Scripts\Activate.ps1 # 或 CMD venv\Scripts\activate.bat # 安装依赖 pip install -r requirements.txt # 配置环境变量 cp .env.example .env # 编辑 .env 文件配置数据库连接(默认使用 PostgreSQL:15432) # 运行数据库迁移 alembic upgrade head # 初始化测试数据(可选) python init_db.py # 启动服务 uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` ### 前端启动 ```bash # 进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器(自动代理到后端 http://localhost:8000) npm run dev # 构建生产版本 npm run build # 预览生产构建 npm run preview ``` ### 访问系统 - 前端地址: http://localhost:5173 - API文档: http://localhost:8000/api/v1/docs ## API文档 启动后端服务后,访问以下地址查看API文档: - Swagger UI: http://localhost:8000/api/v1/docs - ReDoc: http://localhost:8000/api/v1/redoc ## 默认账号 - 用户名: admin - 密码: admin123 ## 数据库设计 ### 主要表结构 - `departments` - 科室信息表(含树形结构支持) - `staff` - 员工信息表(关联科室、岗位、职称) - `indicators` - 考核指标表(KPI、平衡计分卡维度) - `indicator_templates` - 指标模板表 - `assessments` - 考核记录表 - `assessment_details` - 考核明细表(多维度评分) - `performance_plans` - 绩效计划表 - `salary_records` - 工资核算表 - `users` - 系统用户表 - `menus` - 菜单权限表 ### 核心业务模型 - **DeptType**: 科室类型枚举(临床手术/非手术、医技、行政等) - **BSCDimension**: 平衡计分卡四维度(财务、客户、内部流程、学习成长) - **IndicatorType**: 指标类型(数量、质量、成本、满意度等) ## 项目截图 ![登录页面](docs/screenshots/login.png) ![Dashboard](docs/screenshots/dashboard.png) ![科室管理](docs/screenshots/departments.png) ![员工管理](docs/screenshots/staff.png) ![指标管理](docs/screenshots/indicators.png) ![考核管理](docs/screenshots/assessments.png) ![绩效计划](docs/screenshots/plans.png) ![工资管理](docs/screenshots/salary.png) ![财务报表](docs/screenshots/finance.png) ![统计报表](docs/screenshots/reports.png) > 更多截图请查看 [docs/screenshots](docs/screenshots) 目录 ## 开发规范 ### 代码风格 - **后端**: Python PEP 8,使用 type hints - **前端**: ESLint + Prettier(待配置) - **Git**: 遵循 conventional commits 规范 ### 分支管理 - `main`: 主分支,仅接受合并请求 - `develop`: 开发分支(待创建) - `feature/*`: 功能分支 ### 提交规范 ```bash feat: 新功能 fix: 修复 bug docs: 文档更新 style: 代码格式调整 refactor: 重构 test: 测试相关 chore: 构建/工具链相关 ``` ## 性能优化 1. **数据库层面** - 合理的索引设计 - 连接池配置(asyncpg) - 异步查询 - 批量操作优化 2. **应用层面** - FastAPI 异步 IO 处理 - 分页查询 - 响应缓存策略 - 后台任务队列(待实现) 3. **前端层面** - 路由懒加载 - 组件按需加载 - ECharts 图表数据缓存 - API 请求防抖 ## 可维护性设计 1. **代码规范** - 模块化设计(按业务领域划分) - 分层架构(API -> Service -> Model) - 类型注解(Python type hints) - 统一的错误处理 2. **文档完善** - API 自动文档(Swagger/OpenAPI) - 代码注释(Google Style) - README 文档 - 开发者指南(docs/目录) 3. **测试覆盖** - 单元测试(pytest) - 集成测试 - API 测试 - E2E 测试(待实现) ## 常见问题 ### Q: 数据库连接失败? A: 检查 PostgreSQL 是否运行在 15432 端口,确认 `.env` 文件中 `DATABASE_URL` 配置正确。 ### Q: 前端无法访问后端 API? A: Vite 开发服务器已配置代理,确保后端运行在 `http://localhost:8000`。 ### Q: 如何重置数据库? A: 删除所有表后重新运行 `alembic upgrade head`,或使用 `backend/create_database.py` 脚本。 ## 贡献指南 欢迎提交 Issue 和 Pull Request! ## License MIT