Files
hospital_performance/README.md

288 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 医院绩效考核管理系统
一个为县级中医院设计的绩效考核管理系统,支持科室管理、员工管理、考核指标管理、绩效考核流程、数据分析报表和绩效工资核算。
## 技术栈
### 后端
- **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