Files
2026-02-28 15:16:15 +08:00

12 KiB
Raw Permalink Blame History

考核流程管理

**本文档引用的文件** - [models.py](file://backend/app/models/models.py) - [schemas.py](file://backend/app/schemas/schemas.py) - [assessment_service.py](file://backend/app/services/assessment_service.py) - [assessments.py](file://backend/app/api/v1/assessments.py) - [assessment.js](file://frontend/src/api/assessment.js) - [Assessments.vue](file://frontend/src/views/assessment/Assessments.vue) - [AssessmentDetail.vue](file://frontend/src/views/assessment/AssessmentDetail.vue) - [security.py](file://backend/app/core/security.py) - [001_initial.py](file://backend/alembic/versions/001_initial.py) - [002_template.py](file://backend/alembic/versions/002_template.py)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本系统是一个完整的医院绩效考核管理系统,专注于考核流程的全生命周期管理。系统实现了从草稿创建到最终确认的完整工作流,包括审批流转、复核确认、状态管理和权限控制等核心功能。

系统采用前后端分离架构后端使用FastAPI提供RESTful API前端使用Vue.js构建用户界面。数据库采用PostgreSQL通过SQLAlchemy ORM进行数据持久化。

项目结构

系统采用典型的三层架构设计:

graph TB
subgraph "前端层"
FE_API[API封装层]
FE_VIEWS[视图组件]
FE_STORE[状态管理]
end
subgraph "后端层"
BE_ROUTER[路由层]
BE_SERVICE[服务层]
BE_MODEL[模型层]
BE_DB[(数据库)]
end
subgraph "基础设施"
AUTH[认证授权]
DB[(PostgreSQL)]
SCHEMA[数据模式]
end
FE_API --> FE_VIEWS
FE_VIEWS --> FE_STORE
FE_API --> BE_ROUTER
BE_ROUTER --> BE_SERVICE
BE_SERVICE --> BE_MODEL
BE_MODEL --> BE_DB
BE_DB --> DB
AUTH --> BE_ROUTER
SCHEMA --> BE_MODEL

图表来源

章节来源

核心组件

数据模型层

系统的核心数据模型围绕考核流程展开,主要包括以下关键实体:

classDiagram
class Assessment {
+int id
+int staff_id
+int period_year
+int period_month
+str status
+float total_score
+float weighted_score
+datetime submit_time
+datetime review_time
+int assessor_id
+int reviewer_id
+str remark
}
class AssessmentDetail {
+int id
+int assessment_id
+int indicator_id
+float actual_value
+float score
+str evidence
+str remark
}
class Staff {
+int id
+str employee_id
+str name
+int department_id
+str position
+str status
+float performance_ratio
}
class Indicator {
+int id
+str name
+str code
+str indicator_type
+float weight
+float max_score
+bool is_active
}
Assessment "1" -- "many" AssessmentDetail : contains
Assessment "1" -- "1" Staff : evaluates
AssessmentDetail "1" -- "1" Indicator : measures
Staff "1" -- "many" Assessment : creates

图表来源

状态枚举定义

系统定义了完整的考核状态流转:

stateDiagram-v2
[*] --> 草稿
草稿 --> 已提交 : 提交申请
已提交 --> 已审核 : 审核通过
已提交 --> 已驳回 : 审核驳回
已审核 --> 已确认 : 确认完成
已确认 --> [*]
已驳回 --> 草稿 : 修改后重新提交

图表来源

章节来源

架构概览

系统采用RESTful API设计模式前后端通过HTTP协议通信

sequenceDiagram
participant Client as 前端客户端
participant API as API网关
participant Service as 服务层
participant Model as 模型层
participant DB as 数据库
Client->>API : GET /assessments
API->>Service : get_list()
Service->>Model : 查询评估记录
Model->>DB : SQL查询
DB-->>Model : 查询结果
Model-->>Service : 评估记录列表
Service-->>API : 处理后的数据
API-->>Client : JSON响应
Note over Client,DB : 异步数据库操作

图表来源

详细组件分析

考核流程状态管理

草稿状态Draft

草稿状态是考核流程的初始阶段,允许员工录入和编辑考核信息:

操作权限控制:

  • 仅考核人本人可编辑
  • 支持保存草稿和提交申请
  • 可修改考核明细和备注

数据验证规则:

  • 总分 = 各指标得分之和
  • 加权得分 = Σ(指标得分 × 指标权重)
  • 实际值必须符合指标最大值限制

已提交状态Submitted

已提交状态表示考核已进入审批流程:

审批权限控制:

  • 需要管理员或经理权限
  • 自动记录提交时间和提交人
  • 系统自动计算加权得分

业务逻辑:

  • 审批前自动刷新计算结果
  • 支持通过或驳回两种处理方式
  • 记录审核人和审核时间

已审核状态Reviewed

已审核状态表示考核通过审批,等待最终确认:

权限控制:

  • 管理员或经理可进行最终确认
  • 系统自动锁定后续修改
  • 生成最终的加权得分

数据完整性:

  • 确认后状态不可逆
  • 用于后续薪资计算的基础数据

已确认状态Finalized

已确认状态表示考核流程完成:

系统影响:

  • 考核结果正式生效
  • 用于薪资核算的数据源
  • 不再允许任何修改操作

已驳回状态Rejected

已驳回状态表示考核被拒绝:

处理机制:

  • 自动退回至草稿状态
  • 允许重新编辑和提交
  • 记录驳回原因和时间

章节来源

前端交互组件

考核列表页面

flowchart TD
Start([页面加载]) --> LoadData[加载考核数据]
LoadData --> RenderTable[渲染表格]
RenderTable --> CheckStatus{检查状态}
CheckStatus --> |草稿| ShowDraftOps[显示提交按钮]
CheckStatus --> |已提交| ShowReviewOps[显示审核按钮]
CheckStatus --> |已审核| ShowFinalizeOp[显示确认按钮]
CheckStatus --> |其他| HideOps[隐藏操作按钮]
ShowDraftOps --> SubmitAssessment[提交考核]
ShowReviewOps --> ReviewAssessment[审核考核]
ShowFinalizeOp --> FinalizeAssessment[确认考核]
SubmitAssessment --> RefreshData[刷新数据]
ReviewAssessment --> RefreshData
FinalizeAssessment --> RefreshData
RefreshData --> RenderTable

图表来源

章节来源

API接口设计

系统提供了完整的RESTful API接口

接口 方法 权限 功能描述
/assessments GET 任意用户 获取考核列表
/assessments/{id} GET 任意用户 获取考核详情
/assessments POST 任意用户 创建考核记录
/assessments/{id} PUT 任意用户 更新考核记录
/assessments/{id}/submit POST 任意用户 提交考核
/assessments/{id}/review POST 管理员/经理 审核考核
/assessments/{id}/finalize POST 管理员/经理 确认考核
/assessments/batch-create POST 管理员/经理 批量创建考核

章节来源

依赖关系分析

系统的关键依赖关系如下:

graph LR
subgraph "认证层"
Security[security.py]
User[User模型]
end
subgraph "服务层"
AssessmentService[AssessmentService]
StaffService[StaffService]
IndicatorService[IndicatorService]
end
subgraph "数据层"
Assessment[Assessment模型]
AssessmentDetail[AssessmentDetail模型]
Staff[Staff模型]
Indicator[Indicator模型]
end
subgraph "API层"
AssessmentAPI[Assessments路由]
StaffAPI[Staff路由]
IndicatorAPI[Indicator路由]
end
Security --> AssessmentAPI
AssessmentAPI --> AssessmentService
AssessmentService --> Assessment
AssessmentService --> AssessmentDetail
AssessmentService --> Staff
AssessmentService --> Indicator
AssessmentAPI --> Assessment
AssessmentAPI --> Staff
AssessmentAPI --> Indicator

图表来源

章节来源

性能考虑

数据库优化

系统采用了多项数据库优化策略:

  1. 索引优化:为常用查询字段建立索引

    • idx_assessment_status:状态查询优化
    • idx_assessment_period:周期查询优化
    • idx_assessment_staff:员工查询优化
  2. 查询优化:使用selectinload避免N+1查询问题

  3. 分页查询:支持大数据量的分页展示

缓存策略

虽然当前实现未使用缓存,但系统设计支持未来扩展:

  • 可以引入Redis缓存热门查询结果
  • 考核状态统计信息可以缓存
  • 用户权限信息可以本地缓存

并发控制

系统通过以下机制保证数据一致性:

  1. 事务管理:所有状态变更都在事务中执行
  2. 乐观锁:使用版本号防止并发修改冲突
  3. 状态检查:每次操作前验证当前状态

故障排除指南

常见问题及解决方案

状态转换异常

问题现象: 点击提交按钮无反应

可能原因:

  1. 当前状态不是草稿状态
  2. 用户权限不足
  3. 网络请求超时

解决步骤:

  1. 检查考核记录状态
  2. 验证用户角色权限
  3. 查看浏览器开发者工具Network标签
  4. 检查后端日志

数据不一致

问题现象: 显示的总分与实际不符

排查步骤:

  1. 检查指标权重设置
  2. 验证分数输入范围
  3. 确认计算公式正确性
  4. 查看数据库中存储的原始数据

权限问题

问题现象: 无法看到某些操作按钮

解决方法:

  1. 检查用户角色设置
  2. 确认当前用户的权限
  3. 刷新页面重新登录
  4. 检查系统配置

章节来源

结论

本考核流程管理系统实现了完整的绩效考核生命周期管理,具有以下特点:

  1. 完整的状态管理:覆盖从草稿到最终确认的全流程
  2. 严格的权限控制:基于角色的细粒度权限管理
  3. 清晰的业务逻辑:每个状态都有明确的操作规则
  4. 良好的用户体验:直观的前端界面和实时的状态反馈
  5. 可扩展的设计:模块化的架构便于功能扩展

系统通过标准化的API接口和清晰的业务流程为医院的绩效管理提供了可靠的技术支撑。建议在未来版本中增加更多的监控和审计功能以及移动端支持。