12 KiB
考核流程管理
**本文档引用的文件** - [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)目录
简介
本系统是一个完整的医院绩效考核管理系统,专注于考核流程的全生命周期管理。系统实现了从草稿创建到最终确认的完整工作流,包括审批流转、复核确认、状态管理和权限控制等核心功能。
系统采用前后端分离架构,后端使用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
图表来源
章节来源
性能考虑
数据库优化
系统采用了多项数据库优化策略:
-
索引优化:为常用查询字段建立索引
idx_assessment_status:状态查询优化idx_assessment_period:周期查询优化idx_assessment_staff:员工查询优化
-
查询优化:使用
selectinload避免N+1查询问题 -
分页查询:支持大数据量的分页展示
缓存策略
虽然当前实现未使用缓存,但系统设计支持未来扩展:
- 可以引入Redis缓存热门查询结果
- 考核状态统计信息可以缓存
- 用户权限信息可以本地缓存
并发控制
系统通过以下机制保证数据一致性:
- 事务管理:所有状态变更都在事务中执行
- 乐观锁:使用版本号防止并发修改冲突
- 状态检查:每次操作前验证当前状态
故障排除指南
常见问题及解决方案
状态转换异常
问题现象: 点击提交按钮无反应
可能原因:
- 当前状态不是草稿状态
- 用户权限不足
- 网络请求超时
解决步骤:
- 检查考核记录状态
- 验证用户角色权限
- 查看浏览器开发者工具Network标签
- 检查后端日志
数据不一致
问题现象: 显示的总分与实际不符
排查步骤:
- 检查指标权重设置
- 验证分数输入范围
- 确认计算公式正确性
- 查看数据库中存储的原始数据
权限问题
问题现象: 无法看到某些操作按钮
解决方法:
- 检查用户角色设置
- 确认当前用户的权限
- 刷新页面重新登录
- 检查系统配置
章节来源
结论
本考核流程管理系统实现了完整的绩效考核生命周期管理,具有以下特点:
- 完整的状态管理:覆盖从草稿到最终确认的全流程
- 严格的权限控制:基于角色的细粒度权限管理
- 清晰的业务逻辑:每个状态都有明确的操作规则
- 良好的用户体验:直观的前端界面和实时的状态反馈
- 可扩展的设计:模块化的架构便于功能扩展
系统通过标准化的API接口和清晰的业务流程,为医院的绩效管理提供了可靠的技术支撑。建议在未来版本中增加更多的监控和审计功能,以及移动端支持。