# 核心特性 **本文引用的文件** - [backend/app/main.py](file://backend/app/main.py) - [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.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/performance_plan_service.py](file://backend/app/services/performance_plan_service.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) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py) - [backend/app/models/models.py](file://backend/app/models/models.py) - [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py) - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue) - [frontend/src/views/salary/Salary.vue](file://frontend/src/views/salary/Salary.vue) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本系统围绕“医院绩效管理系统”的核心业务目标,提供以下关键能力: - 平衡计分卡(BSC)多维度考核:支持财务、客户、内部流程、学习与成长四个维度的指标采集与加权统计。 - 完整的绩效考核流程管理:覆盖草稿、提交、审核、确认的全流程闭环,支持批量创建与批量处理。 - 智能工资核算计算:基于考核加权得分与员工绩效系数自动计算绩效奖金,支持批量生成与批量确认。 - 丰富的数据分析报表:提供维度分析、科室统计、趋势分析、排名、指标完成度等多维报表。 - 灵活的权限控制系统:通过角色与菜单权限控制访问范围,保障数据安全。 系统同时具备良好的扩展性与定制能力,支持指标模板管理、流程自定义、报表定制等,满足不同科室与医院的差异化需求。 ## 项目结构 后端采用 FastAPI + SQLAlchemy 2.0 + PostgreSQL 的现代化架构,按功能域划分 API、服务层、模型与数据结构;前端采用 Vue 3 + Element Plus + ECharts 实现交互式报表与工作流操作。 ```mermaid graph TB subgraph "后端" A["FastAPI 应用
app/main.py"] B["API 路由层
api/v1/*"] C["服务层
services/*"] D["数据模型
models/models.py"] E["数据结构
schemas/schemas.py"] end subgraph "前端" F["考核管理
Assessments.vue"] G["报表中心
Reports.vue"] H["工资管理
Salary.vue"] I["模板管理
Templates.vue"] end A --> B --> C --> D B --> E F --> B G --> B H --> B I --> B ``` 图示来源 - [backend/app/main.py](file://backend/app/main.py#L15-L77) - [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.py#L1-L310) - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L1-L166) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L1-L156) - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L1-L242) - [backend/app/services/performance_plan_service.py](file://backend/app/services/performance_plan_service.py#L1-L342) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L1-L263) - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L1-L260) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L1-L300) - [backend/app/models/models.py](file://backend/app/models/models.py#L1-L438) - [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L1-L743) - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue#L1-L311) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L1-L367) - [frontend/src/views/salary/Salary.vue](file://frontend/src/views/salary/Salary.vue#L1-L335) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue#L1-L638) 章节来源 - [backend/app/main.py](file://backend/app/main.py#L19-L39) - [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.py#L18-L310) - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L17-L166) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L17-L156) - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L14-L242) - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue#L1-L311) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L1-L367) - [frontend/src/views/salary/Salary.vue](file://frontend/src/views/salary/Salary.vue#L1-L335) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue#L1-L638) ## 核心组件 - 平衡计分卡(BSC)多维度考核:通过指标维度字段与加权得分计算,支持按维度聚合统计与可视化。 - 绩效考核流程管理:提供草稿、提交、审核、确认的四级状态机,支持批量创建与批量处理。 - 工资核算与发放:依据考核加权得分与员工绩效系数计算绩效奖金,支持批量生成与批量确认。 - 数据分析与报表:提供维度分析、科室统计、趋势分析、排名、指标完成度等报表接口与前端图表。 - 指标模板管理:支持模板类型、维度权重、指标集合的维护,便于快速复制与推广。 - 权限控制:基于用户角色与菜单权限,限制对敏感流程与报表的访问。 章节来源 - [backend/app/models/models.py](file://backend/app/models/models.py#L29-L35) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L71-L156) - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L127-L190) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L19-L72) - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue#L178-L292) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L134-L308) - [frontend/src/views/salary/Salary.vue](file://frontend/src/views/salary/Salary.vue#L190-L311) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue#L356-L572) ## 架构总览 系统采用前后端分离架构,后端提供 RESTful API,前端通过 Element Plus 与 ECharts 进行交互与可视化展示。数据模型统一定义于 SQLAlchemy,服务层封装业务逻辑,API 层负责请求解析与响应格式化。 ```mermaid graph TB FE["前端界面
Assessments/Reports/Salary/Templates"] API["API 路由层
performance_plans/assessments/salary/stats"] SVC["服务层
performance_plan/assessment/salary/stats"] ORM["数据模型
SQLAlchemy Models"] DB["数据库
PostgreSQL"] FE --> API --> SVC --> ORM --> DB DB --> ORM --> SVC --> API --> FE ``` 图示来源 - [backend/app/main.py](file://backend/app/main.py#L15-L77) - [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.py#L18-L310) - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L17-L166) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L17-L156) - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L14-L242) - [backend/app/services/performance_plan_service.py](file://backend/app/services/performance_plan_service.py#L15-L342) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L14-L263) - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L14-L260) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L16-L300) - [backend/app/models/models.py](file://backend/app/models/models.py#L1-L438) ## 详细组件分析 ### 平衡计分卡(BSC)多维度考核 - 功能亮点 - 指标维度:财务、客户、内部流程、学习与成长四维,支持按维度聚合与加权平均。 - 统计接口:提供维度得分、指标完成度、趋势分析等报表。 - 可视化:前端集成 ECharts,支持柱状图、饼图等展示。 - 技术实现 - 模型层定义维度枚举与指标权重字段。 - 服务层按维度聚合计算总分与权重,并输出平均分。 - API 层提供维度分析与指标完成度接口。 - 业务价值 - 帮助管理者从多维度审视运营成效,识别薄弱环节,指导资源投入与改进方向。 ```mermaid flowchart TD Start(["开始"]) --> Load["加载考核数据
按维度与权重聚合"] Load --> Calc["计算维度总分/权重/平均分"] Calc --> Output["输出维度统计结果"] Output --> Chart["前端渲染图表"] Chart --> End(["结束"]) ``` 图示来源 - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L19-L72) - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L17-L33) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L183-L295) 章节来源 - [backend/app/models/models.py](file://backend/app/models/models.py#L29-L35) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L19-L72) - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L17-L33) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L183-L295) ### 绩效考核流程管理 - 功能亮点 - 流程状态:草稿、已提交、已审核、已确认、已驳回,支持逐级流转。 - 批量能力:支持批量创建考核、批量生成工资、批量确认工资。 - 明细管理:支持按指标维度录入实际值与得分,自动计算总分与加权得分。 - 技术实现 - 服务层封装状态机与明细计算逻辑。 - API 层提供提交、审核、确认等动作接口。 - 前端提供工作流操作按钮与批量处理入口。 - 业务价值 - 规范考核流程,提升效率与透明度,减少人工干预与错误。 ```mermaid sequenceDiagram participant U as "用户" participant FE as "前端界面" participant API as "API 路由" participant SVC as "服务层" participant DB as "数据库" U->>FE : 选择科室/周期/指标 FE->>API : POST /assessments/batch-create API->>SVC : 批量创建考核 SVC->>DB : 插入Assessment与Details SVC-->>API : 返回创建结果 API-->>FE : 列表刷新 FE->>U : 展示草稿状态 U->>FE : 提交/审核/确认 FE->>API : POST /assessments/{id}/submit 或 /review 或 /finalize API->>SVC : 更新状态 SVC->>DB : 写入状态与时间戳 SVC-->>API : 返回成功 API-->>FE : 刷新状态 ``` 图示来源 - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L148-L166) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L208-L262) - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue#L257-L286) 章节来源 - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L17-L166) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L17-L263) - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue#L178-L292) ### 智能工资核算计算 - 功能亮点 - 自动计算:基于考核加权得分与员工绩效系数计算绩效奖金。 - 批量生成:按科室批量生成工资记录,支持批量确认。 - 可编辑:支持对绩效奖金、补贴、扣款进行微调。 - 技术实现 - 服务层封装奖金计算与记录生成逻辑。 - API 层提供生成、确认、批量处理接口。 - 前端提供编辑弹窗与批量操作按钮。 - 业务价值 - 减少手工计算误差,提高薪酬发放效率与一致性。 ```mermaid flowchart TD S(["开始"]) --> Fetch["读取已确认考核记录"] Fetch --> Calc["计算绩效奖金 = 基数×(得分/100)×系数"] Calc --> Create["创建工资记录(含基本工资+奖金)"] Create --> Pending["状态=待确认"] Pending --> Confirm["批量确认/手动确认"] Confirm --> Pay["薪酬发放"] Pay --> E(["结束"]) ``` 图示来源 - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L127-L190) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L96-L156) - [frontend/src/views/salary/Salary.vue](file://frontend/src/views/salary/Salary.vue#L247-L306) 章节来源 - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L17-L190) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L71-L156) - [frontend/src/views/salary/Salary.vue](file://frontend/src/views/salary/Salary.vue#L190-L311) ### 丰富的数据分析报表 - 功能亮点 - 维度分析:按财务、客户、内部流程、学习与成长维度统计得分。 - 科室统计:按科室汇总平均分、员工数、奖金总额等。 - 趋势分析:按月度展示平均得分与加权得分趋势。 - 排名:按加权得分对员工进行排名。 - 指标完成度:统计指标平均分与完成率。 - 技术实现 - 服务层聚合统计并返回结构化数据。 - API 层提供多类统计接口。 - 前端使用 ECharts 渲染图表与表格。 - 业务价值 - 为管理层提供决策依据,及时发现异常与改进机会。 ```mermaid sequenceDiagram participant U as "用户" participant FE as "报表页面" participant API as "统计接口" participant SVC as "统计服务" participant DB as "数据库" U->>FE : 选择统计周期 FE->>API : GET /stats/department API->>SVC : 聚合科室统计 SVC->>DB : 查询/聚合 SVC-->>API : 返回统计结果 API-->>FE : 渲染表格与图表 FE-->>U : 展示维度分析/趋势/排名 ``` 图示来源 - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L36-L242) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L75-L146) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L134-L171) 章节来源 - [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L17-L242) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L16-L300) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L134-L308) ### 指标模板管理(扩展与定制) - 功能亮点 - 模板类型:通用、手术临床、非手术有病房、非手术无病房、医技、护理、行政、后勤等。 - 维度权重:支持为模板配置财务、客户、内部流程、学习与成长权重。 - 指标集合:支持为模板添加/编辑/移除指标,设置目标值、权重、评分方法等。 - 技术实现 - 模型层定义模板与模板指标关联。 - 服务层提供模板 CRUD 与指标管理。 - 前端提供模板列表、详情、编辑与指标管理界面。 - 业务价值 - 快速复制成熟模板,降低指标设计成本,提升一致性与可复用性。 ```mermaid classDiagram class IndicatorTemplate { +template_name +template_code +template_type +dimension_weights +assessment_cycle } class TemplateIndicator { +indicator_id +category +target_value +weight +scoring_method } IndicatorTemplate "1" o-- "many" TemplateIndicator : "包含" ``` 图示来源 - [backend/app/models/models.py](file://backend/app/models/models.py#L387-L438) - [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L698-L743) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue#L356-L572) 章节来源 - [backend/app/models/models.py](file://backend/app/models/models.py#L387-L438) - [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L640-L743) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue#L356-L638) ### 权限控制系统(扩展与定制) - 功能亮点 - 角色与菜单:支持管理员、经理、普通员工等角色,菜单权限控制。 - 操作权限:部分流程(提交、审核、确认、生成、确认工资)需具备相应角色。 - 技术实现 - 安全中间件与依赖注入校验当前用户与角色。 - API 层通过装饰器限制操作权限。 - 业务价值 - 确保流程合规与数据安全,防止越权操作。 章节来源 - [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.py#L194-L225) - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L105-L132) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L71-L93) ## 依赖关系分析 - 组件耦合 - API 层仅依赖服务层接口,职责清晰,便于测试与替换。 - 服务层依赖模型层进行数据持久化,避免直接操作数据库。 - 前端通过 API 层与后端交互,不直接依赖服务层。 - 外部依赖 - 数据库:PostgreSQL,ORM:SQLAlchemy。 - Web:FastAPI,异步 IO 支持。 - 前端:Vue 3、Element Plus、ECharts。 - 潜在风险 - 统计查询复杂度随数据量增长而上升,建议在关键字段建立索引与缓存策略。 ```mermaid graph LR FE["前端"] --> API["API 路由"] API --> SVC["服务层"] SVC --> ORM["SQLAlchemy 模型"] ORM --> DB["PostgreSQL"] ``` 图示来源 - [backend/app/main.py](file://backend/app/main.py#L15-L77) - [backend/app/models/models.py](file://backend/app/models/models.py#L1-L438) - [backend/app/services/performance_plan_service.py](file://backend/app/services/performance_plan_service.py#L15-L342) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L14-L263) - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L14-L260) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L16-L300) 章节来源 - [backend/app/models/models.py](file://backend/app/models/models.py#L1-L438) - [backend/app/services/performance_plan_service.py](file://backend/app/services/performance_plan_service.py#L15-L342) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L14-L263) - [backend/app/services/salary_service.py](file://backend/app/services/salary_service.py#L14-L260) - [backend/app/services/stats_service.py](file://backend/app/services/stats_service.py#L16-L300) ## 性能考虑 - 查询优化 - 对常用筛选字段(如状态、周期、部门)建立索引,减少全表扫描。 - 使用分页与子查询统计总数,避免一次性加载大量数据。 - 计算优化 - 工资计算与统计聚合尽量在服务层一次性完成,减少往返次数。 - 对高频报表(如维度分析、趋势分析)引入缓存或物化视图。 - 前端体验 - 使用虚拟滚动与懒加载展示长列表,提升交互流畅度。 - 图表渲染采用防抖与 resize 监听,避免频繁重绘。 ## 故障排查指南 - 常见问题 - 状态不可逆:若状态非草稿或非已提交,提交/审核/确认接口会返回失败。 - 重复生成:若已存在对应周期的工资记录,生成接口会拒绝重复创建。 - 权限不足:提交、审核、确认、生成、确认工资等接口需具备相应角色。 - 定位方法 - 查看后端日志与异常捕获,定位具体错误原因。 - 前端检查请求参数与响应状态码,确认必填项与格式。 - 处理建议 - 对状态机错误,先刷新页面查看最新状态再执行后续操作。 - 对权限错误,确认当前用户角色与菜单权限配置。 章节来源 - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L105-L132) - [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L96-L110) - [backend/app/main.py](file://backend/app/main.py#L58-L75) ## 结论 本系统以平衡计分卡为核心,贯通“计划—考核—工资—报表—模板—权限”全链路,既满足标准化管理需求,又提供灵活的扩展与定制能力。通过前后端分离与模块化设计,系统具备良好的可维护性与可扩展性,适合在不同规模与类型的医院落地应用。 ## 附录 - 使用场景与案例 - 场景一:月度绩效考核 - 操作:管理员批量创建考核 → 考核人提交 → 主管审核 → 确认 → 自动生成工资 → 批量确认 → 发放。 - 价值:缩短考核周期,提升薪酬发放效率。 - 场景二:维度分析与改进 - 操作:查看维度分析 → 识别低分维度 → 下发改进计划 → 模板化固化 → 跟踪趋势。 - 价值:驱动持续改进,提升整体运营水平。 - 场景三:模板复用与推广 - 操作:选择成熟模板 → 调整权重与指标 → 应用到新科室 → 批量生成考核 → 统一口径。 - 价值:降低设计成本,提升一致性与可比性。 章节来源 - [frontend/src/views/assessment/Assessments.vue](file://frontend/src/views/assessment/Assessments.vue#L257-L286) - [frontend/src/views/reports/Reports.vue](file://frontend/src/views/reports/Reports.vue#L134-L171) - [frontend/src/views/basic/Templates.vue](file://frontend/src/views/basic/Templates.vue#L356-L572)