14 KiB
14 KiB
系统介绍
**本文引用的文件** - [docs/index.md](file://docs/index.md) - [docs/详细设计.md](file://docs/详细设计.md) - [backend/app/main.py](file://backend/app/main.py) - [backend/app/api/v1/__init__.py](file://backend/app/api/v1/__init__.py) - [backend/app/models/models.py](file://backend/app/models/models.py) - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py) - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py) - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py) - [frontend/src/router/index.js](file://frontend/src/router/index.js) - [frontend/src/main.js](file://frontend/src/main.js)目录
引言
本系统面向县级中医院,围绕“战略目标—执行—考核—改进”的闭环管理,构建覆盖全院的绩效管理体系。系统以平衡计分卡(BSC)理论为指导,将医院战略目标逐级分解到科室与个人层面,通过信息化手段实现指标定义、数据采集、自动计算、流程审批与结果应用,最终形成“目标-执行-考核-改进”的可持续管理模式。系统支持多维度、可量化的KPI体系,覆盖全院各类科室与岗位,支撑绩效工资核算、统计分析与可视化决策。
项目结构
系统采用前后端分离架构,后端基于 FastAPI + SQLAlchemy 2.0(异步),前端基于 Vue 3 + Element Plus,数据库采用 PostgreSQL。核心模块包括基础数据管理、绩效考核、工资核算、统计报表、系统管理等,路由与视图清晰划分,便于扩展与维护。
graph TB
FE["前端应用<br/>Vue 3 + Element Plus"] --> BE["后端应用<br/>FastAPI + SQLAlchemy"]
BE --> DB["数据库<br/>PostgreSQL"]
FE --> API["API 接口<br/>/api/v1/*"]
API --> Services["服务层<br/>assessment_service / salary_service / stats_service"]
Services --> Models["数据模型<br/>Department / Staff / Indicator / Assessment / SalaryRecord"]
图表来源
章节来源
核心组件
- 基础数据管理:科室、员工、指标、指标模板、菜单等基础信息维护。
- 绩效考核管理:支持草稿→提交→审核→确认的流程化管理,支持批量创建与生成。
- 工资核算管理:基于考核结果自动生成工资记录,支持单条与批量确认。
- 统计报表:提供 BSC 维度分析、科室统计、趋势分析、周期统计、关键指标仪表盘等。
- 系统管理:菜单管理、用户与权限、工作流与日志等。
章节来源
- docs/index.md
- backend/app/api/v1/assessments.py
- backend/app/api/v1/salary.py
- backend/app/api/v1/stats.py
架构总览
系统采用分层架构:前端负责交互与可视化,后端提供 REST API 与业务服务,数据层持久化到 PostgreSQL。核心业务流程包括“指标定义—方案配置—数据采集—自动计算—流程审批—结果应用”。
graph TB
subgraph "表现层"
UI["工作台 / 科室管理 / 员工管理 / 考核管理 / 工资核算 / 报表 / 系统管理"]
end
subgraph "应用层"
APIS["API 路由层<br/>/api/v1/*"]
SVC["服务层<br/>assessment_service / salary_service / stats_service"]
end
subgraph "数据层"
MODELS["数据模型<br/>Department / Staff / Indicator / Assessment / SalaryRecord / Menu / PerformancePlan / IndicatorTemplate"]
DB["PostgreSQL"]
end
UI --> APIS
APIS --> SVC
SVC --> MODELS
MODELS --> DB
图表来源
详细组件分析
平衡计分卡(BSC)理论应用
- 维度设计:系统内置财务、客户(患者/内部客户)、内部流程、学习与成长四个维度,指标可标注对应维度,支持按维度聚合分析。
- 战略落地:通过“绩效计划”模块将医院战略目标逐级分解到科室与个人,形成“计划—执行—考核—改进”的闭环。
- 多元化评分:支持区间法、目标参照法、加分/扣分法、比较法等评分方法,确保客观公正。
- 结果应用:考核结果与绩效工资、晋升、评优等联动,驱动持续改进。
章节来源
绩效考核管理流程
- 流程状态:草稿、已提交、已审核、已确认、已驳回,支持逐级审批与退回修正。
- 关键能力:单条创建/更新、批量创建、提交、审核、确认;支持按员工、科室、周期、状态过滤查询。
- 数据模型:考核主表、明细表、指标关联、员工与科室关系,保证数据完整性与可追溯性。
sequenceDiagram
participant U as "用户"
participant API as "API 路由"
participant Svc as "AssessmentService"
participant DB as "数据库"
U->>API : "POST /api/v1/assessments"
API->>Svc : "create(assessment_data)"
Svc->>DB : "插入 Assessment + AssessmentDetail"
DB-->>Svc : "返回主键与时间戳"
Svc-->>API : "Assessment 对象"
API-->>U : "{code : 200, data : {id}}"
U->>API : "POST /api/v1/assessments/{id}/submit"
API->>Svc : "submit(id)"
Svc->>DB : "更新状态=SUBMITTED"
DB-->>Svc : "刷新状态"
Svc-->>API : "Assessment 对象"
API-->>U : "{code : 200, message : '提交成功'}"
图表来源
章节来源
- backend/app/api/v1/assessments.py
- backend/app/services/assessment_service.py
- backend/app/models/models.py
工资核算管理流程
- 自动计算:根据已确认的考核加权得分与员工绩效系数,按固定公式计算绩效奖金,自动汇总应发工资。
- 批量生成:支持按科室批量生成工资记录,避免重复劳动。
- 状态控制:仅“待确认”状态可更新与确认,保证数据一致性。
sequenceDiagram
participant U as "用户"
participant API as "API 路由"
participant Svc as "SalaryService"
participant DB as "数据库"
U->>API : "POST /api/v1/salary/generate?staff_id=...&year=&month="
API->>Svc : "generate_from_assessment(staff_id, year, month)"
Svc->>DB : "查询 Staff 与已确认 Assessment"
Svc->>Svc : "calculate_performance_bonus()"
Svc->>DB : "插入 SalaryRecord(total_salary=pending)"
DB-->>Svc : "返回记录"
Svc-->>API : "SalaryRecord 对象"
API-->>U : "{code : 200, data : {id}}"
图表来源
章节来源
统计报表与分析
- BSC 维度分析:按财务、客户、内部流程、学习与成长四个维度聚合统计。
- 科室绩效统计:支持按周期查看各科室平均分、人数、排名等。
- 趋势分析:支持按月度趋势查看科室与个人得分变化。
- 关键指标仪表盘:床位使用率、药占比、材料占比、患者满意度等关键指标可视化。
- 周期统计:汇总当期周期内的科室数量、员工数量、平均分等。
章节来源
数据模型与关系
系统通过清晰的实体关系支撑业务闭环,核心实体包括:科室、员工、指标、考核主表与明细、工资记录、菜单、绩效计划、指标模板等。
erDiagram
DEPARTMENTS ||--o{ STAFF : "拥有"
STAFF ||--o{ ASSESSMENTS : "参与"
STAFF ||--o{ SALARY_RECORDS : "产生"
INDICATORS ||--o{ ASSESSMENT_DETAILS : "被评分"
ASSESSMENTS ||--o{ ASSESSMENT_DETAILS : "包含"
USERS ||--o{ ASSESSMENTS : "审核/确认"
PERFORMANCE_PLANS ||--o{ PLAN_KPI_RELATIONS : "关联指标"
INDICATORS ||--o{ PLAN_KPI_RELATIONS : "被关联"
INDICATOR_TEMPLATES ||--o{ TEMPLATE_INDICATORS : "包含"
INDICATORS ||--o{ TEMPLATE_INDICATORS : "被引用"
MENUS ||--o{ MENUS : "父子关系"
图表来源
章节来源
依赖分析
- 前端依赖:Vue 3、Element Plus、Pinia、Vite、ECharts,路由与图标注册,国际化配置。
- 后端依赖:FastAPI、SQLAlchemy 2.0(异步)、Pydantic v2、PostgreSQL、CORS 中间件。
- 模块耦合:API 路由层薄封装,服务层集中业务逻辑,模型层定义数据与约束,降低耦合、提升可测试性。
graph LR
FE_Main["frontend/src/main.js"] --> FE_Router["frontend/src/router/index.js"]
BE_Main["backend/app/main.py"] --> API_Init["backend/app/api/v1/__init__.py"]
API_Init --> API_Assess["backend/app/api/v1/assessments.py"]
API_Init --> API_Salary["backend/app/api/v1/salary.py"]
API_Init --> API_Stats["backend/app/api/v1/stats.py"]
API_Assess --> Svc_Assess["backend/app/services/assessment_service.py"]
API_Salary --> Svc_Salary["backend/app/services/salary_service.py"]
Svc_Assess --> Models["backend/app/models/models.py"]
Svc_Salary --> Models
图表来源
- frontend/src/main.js
- frontend/src/router/index.js
- backend/app/main.py
- backend/app/api/v1/init.py
- backend/app/api/v1/assessments.py
- backend/app/api/v1/salary.py
- backend/app/api/v1/stats.py
- backend/app/services/assessment_service.py
- backend/app/services/salary_service.py
- backend/app/models/models.py
章节来源
性能考虑
- 异步数据库访问:使用 SQLAlchemy 2.0 异步会话,提升并发与吞吐。
- 查询优化:模型层建立索引(如科室类型、状态、周期等),服务层分页与条件过滤,减少全表扫描。
- 缓存策略:可引入 Redis 缓存热点指标与报表结果,降低数据库压力。
- 前端渲染:ECharts 与 Element Plus 组件按需加载,路由懒加载,减少首屏体积。
- 批量操作:批量生成工资与批量确认接口,减少重复请求与事务开销。
故障排查指南
- 常见错误与定位
- 404:资源不存在(如考核/工资记录),检查 ID 与查询条件。
- 400:状态不允许(如非草稿/已确认状态下更新),检查流程状态机。
- 权限不足:审核/确认接口需管理员或经理权限,确认当前用户角色。
- 数据异常:核查指标权重、目标值、计算方法与数据来源配置。
- 日志与健康检查
- 后端提供健康检查接口,便于快速判断服务可用性。
- 全局异常与校验异常处理器记录请求 URL、状态码与异常信息,便于定位问题。
- 前端路由守卫
- 登录态校验失败将重定向至登录页,检查本地存储 token 是否有效。
章节来源
- backend/app/main.py
- backend/app/api/v1/assessments.py
- backend/app/api/v1/salary.py
- frontend/src/router/index.js
结论
本系统以平衡计分卡为核心理念,结合现代技术栈,构建了覆盖全院的绩效管理体系。通过标准化的流程、可量化的指标与自动化的计算,实现从“战略—执行—考核—改进”的闭环,支撑绩效工资核算与多维度分析,助力医院提升运营效率、医疗质量与服务水平。
附录
- 快速开始与默认账号
- 后端启动命令、前端启动命令与访问地址详见项目文档。
- 默认账号:用户名 admin,密码 admin123。
- 技术栈概览
- 后端:FastAPI + SQLAlchemy 2.0(异步)+ PostgreSQL + Pydantic v2。
- 前端:Vue 3 + Element Plus + Pinia + Vite + ECharts。
章节来源