Files
hospital_performance/.qoder/repowiki/zh/content/后端开发指南/API路由实现/系统管理接口.md
2026-02-28 15:16:15 +08:00

18 KiB
Raw Blame History

系统管理接口

**本文档引用的文件** - [performance_plans.py](file://backend/app/api/v1/performance_plans.py) - [menus.py](file://backend/app/api/v1/menus.py) - [templates.py](file://backend/app/api/v1/templates.py) - [performance_plan_service.py](file://backend/app/services/performance_plan_service.py) - [menu_service.py](file://backend/app/services/menu_service.py) - [template_service.py](file://backend/app/services/template_service.py) - [models.py](file://backend/app/models/models.py) - [schemas.py](file://backend/app/schemas/schemas.py) - [security.py](file://backend/app/core/security.py) - [database.py](file://backend/app/core/database.py) - [main.py](file://backend/app/main.py) - [config.py](file://backend/app/core/config.py) - [001_initial.py](file://backend/alembic/versions/001_initial.py) - [002_template.py](file://backend/alembic/versions/002_template.py) - [init_templates.py](file://backend/app/scripts/init_templates.py) - [logging_config.py](file://backend/app/core/logging_config.py)

目录

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

简介

本文件面向系统管理接口围绕绩效计划管理、菜单权限和模板管理三大核心领域系统化梳理后端API实现、数据模型、服务层逻辑与安全控制机制。文档同时覆盖系统配置的动态管理、角色权限控制、菜单树结构、模板版本与继承、系统初始化与数据迁移、配置备份、日志审计与安全监控以及性能监控、资源管理与故障恢复策略。

项目结构

后端采用FastAPI + SQLAlchemy 2.0 + 异步数据库的现代架构按功能域划分API路由、服务层与数据模型配合Alembic进行数据库版本管理支持系统初始化脚本与模板数据注入。

graph TB
subgraph "应用入口"
MAIN["app/main.py"]
CONFIG["app/core/config.py"]
LOGCFG["app/core/logging_config.py"]
end
subgraph "API层"
PERF_API["app/api/v1/performance_plans.py"]
MENU_API["app/api/v1/menus.py"]
TPL_API["app/api/v1/templates.py"]
end
subgraph "服务层"
PERF_SRV["app/services/performance_plan_service.py"]
MENU_SRV["app/services/menu_service.py"]
TPL_SRV["app/services/template_service.py"]
end
subgraph "核心模块"
SEC["app/core/security.py"]
DB["app/core/database.py"]
end
subgraph "数据模型与迁移"
MODELS["app/models/models.py"]
ALEMBIC1["backend/alembic/versions/001_initial.py"]
ALEMBIC2["backend/alembic/versions/002_template.py"]
end
MAIN --> PERF_API
MAIN --> MENU_API
MAIN --> TPL_API
PERF_API --> PERF_SRV
MENU_API --> MENU_SRV
TPL_API --> TPL_SRV
PERF_SRV --> MODELS
MENU_SRV --> MODELS
TPL_SRV --> MODELS
PERF_API --> SEC
MENU_API --> SEC
TPL_API --> SEC
PERF_API --> DB
MENU_API --> DB
TPL_API --> DB
CONFIG --> MAIN
LOGCFG --> MAIN
ALEMBIC1 --> MODELS
ALEMBIC2 --> MODELS

图表来源

章节来源

核心组件

  • 绩效计划管理API提供计划的CRUD、状态流转、指标关联、树形结构与统计查询。
  • 菜单管理API提供菜单树、列表、详情、创建/更新/删除与默认菜单初始化。
  • 指标模板管理API提供模板与模板指标的CRUD、批量导入、维度与类型枚举。
  • 服务层:封装业务逻辑,统一处理状态机、关联关系与查询优化。
  • 数据模型:定义实体、枚举与索引,支撑多维考核与组织结构。
  • 安全与配置JWT认证、权限校验、数据库连接与日志配置。

章节来源

架构概览

系统采用分层架构API层负责请求解析与响应封装服务层承载业务规则与状态机模型层定义数据结构与约束核心模块提供安全、数据库与配置能力。API层通过依赖注入获取数据库会话与当前用户确保权限控制与事务一致性。

sequenceDiagram
participant Client as "客户端"
participant API as "API控制器"
participant Service as "服务层"
participant Model as "数据模型"
participant DB as "数据库"
Client->>API : 发起请求(携带JWT)
API->>API : 依赖注入(get_db, get_current_active_user)
API->>Service : 调用业务方法(带参数)
Service->>DB : 查询/更新(ORM操作)
DB-->>Service : 返回结果
Service-->>API : 业务结果
API-->>Client : 统一响应格式

图表来源

详细组件分析

绩效计划管理

  • 功能范围:计划列表、树形结构、统计、详情、创建、更新、提交、审批、激活、删除、指标关联增删改。
  • 状态机:草稿 → 待审批 → 已批准 → 执行中 → 已完成/已取消;拒绝后可重新提交。
  • 关键点:指标关联支持目标值、权重、评分方法与参数;支持父子计划形成树形层级。
  • 权限控制:提交、审批、激活、删除等操作需管理员或经理权限。
stateDiagram-v2
[*] --> 草稿
草稿 --> 待审批 : "提交"
待审批 --> 已批准 : "审批通过"
待审批 --> 已驳回 : "审批驳回"
已批准 --> 执行中 : "激活"
执行中 --> 已完成 : "完成"
执行中 --> 已取消 : "取消"
已驳回 --> 草稿 : "重新提交"

图表来源

章节来源

菜单权限管理

  • 功能范围:菜单树、列表、详情、创建、更新、删除、默认菜单初始化。
  • 树形结构:支持父子关系与可见性过滤;支持按钮级权限标识。
  • 权限控制:创建/更新/删除/初始化默认菜单需管理员或经理权限。
flowchart TD
Start(["获取菜单树"]) --> Query["查询根节点(父ID为空)"]
Query --> Filter["按可见性/启用过滤"]
Filter --> Order["按排序与ID排序"]
Order --> Build["递归构建树结构(children)"]
Build --> End(["返回树形结构"])

图表来源

章节来源

指标模板管理

  • 功能范围:模板列表、详情、类型与维度枚举、创建、更新、删除;模板指标的增删改与批量导入。
  • 版本与继承:模板具备版本号与激活状态;模板指标支持分类、权重、排序与评分参数。
  • 初始化:提供脚本批量注入标准模板与指标数据,支持维度权重与评估周期配置。
classDiagram
class IndicatorTemplate {
+template_code
+template_name
+template_type
+dimension_weights
+assessment_cycle
+is_active
+created_at
+updated_at
}
class TemplateIndicator {
+template_id
+indicator_id
+category
+weight
+sort_order
+scoring_method
+scoring_params
+remark
}
class Indicator {
+code
+name
+indicator_type
+bs_dimension
+weight
+max_score
+calculation_method
+assessment_method
+is_veto
}
IndicatorTemplate "1" o-- "*" TemplateIndicator : "包含"
Indicator "1" o-- "*" TemplateIndicator : "被引用"

图表来源

章节来源

数据模型与枚举

  • 组织与人员Department、Staff、User支持层级与状态管理。
  • 考核与工资Assessment、AssessmentDetail、SalaryRecord支持周期与状态。
  • 计划与指标PerformancePlan、PlanKpiRelation支持层级与父子关系。
  • 菜单与模板Menu、IndicatorTemplate、TemplateIndicator支持树形与关联。
  • 枚举:科室类型、指标类型、状态、计划层级与菜单类型等。

章节来源

安全与权限控制

  • JWT认证OAuth2密码模式支持令牌签发、解码与用户解析。
  • 权限校验:当前用户、激活用户、管理员、管理员或经理。
  • 依赖注入API层通过Depends获取数据库会话与当前用户确保每个请求的安全上下文。

章节来源

系统配置与数据库

  • 配置中心应用名、版本、API前缀、数据库URL、JWT密钥与过期时间、跨域白名单、分页参数。
  • 数据库:异步引擎与会话工厂,自动事务提交/回滚与关闭。
  • 迁移:初始版本创建核心表,模板版本增加指标模板与关联表,并扩展指标字段。

章节来源

依赖分析

  • API层依赖服务层与安全模块通过依赖注入获取数据库会话与当前用户。
  • 服务层依赖数据模型与SQLAlchemy ORM封装查询、状态机与事务。
  • 数据模型定义实体关系与索引,支撑高效查询与数据完整性。
  • 迁移脚本定义数据库演进路径,确保版本一致与数据安全。
graph LR
PERF_API["performance_plans.py"] --> PERF_SRV["performance_plan_service.py"]
MENU_API["menus.py"] --> MENU_SRV["menu_service.py"]
TPL_API["templates.py"] --> TPL_SRV["template_service.py"]
PERF_SRV --> MODELS["models.py"]
MENU_SRV --> MODELS
TPL_SRV --> MODELS
PERF_API --> SEC["security.py"]
MENU_API --> SEC
TPL_API --> SEC
PERF_API --> DB["database.py"]
MENU_API --> DB
TPL_API --> DB
ALEMBIC1["001_initial.py"] --> MODELS
ALEMBIC2["002_template.py"] --> MODELS

图表来源

章节来源

性能考虑

  • 异步数据库使用异步引擎与会话提升高并发下的IO吞吐。
  • 查询优化服务层使用selectinload预加载关联减少N+1查询索引覆盖常用查询字段。
  • 分页与限制API层对分页参数进行范围校验避免过大页大小影响性能。
  • 缓存策略建议在热点读取场景引入Redis缓存如菜单树、模板列表降低数据库压力。
  • 连接池:合理配置数据库连接池大小与溢出,避免连接争用。

[本节为通用指导,无需特定文件引用]

故障排查指南

  • 日志系统:应用日志与错误日志分离,按日期轮转,便于定位问题。
  • 异常处理全局异常捕获与记录HTTP异常与参数校验异常分别处理。
  • 数据一致性:服务层事务提交/回滚,确保状态变更原子性。
  • 权限问题确认JWT令牌有效、用户状态正常、角色满足要求。
  • 数据迁移检查Alembic版本与数据库一致必要时执行升级/降级。

章节来源

结论

本系统管理接口围绕绩效计划、菜单权限与模板管理构建了完整的API体系配合严谨的数据模型、服务层状态机与安全控制实现了可配置、可扩展、可审计的医院绩效管理体系。通过完善的初始化与迁移机制、日志与异常处理、以及性能与故障恢复策略系统具备良好的稳定性与可维护性。

[本节为总结,无需特定文件引用]

附录

API端点速览

  • 绩效计划

    • GET /plans获取计划列表
    • GET /plans/tree获取计划树
    • GET /plans/stats获取计划统计
    • GET /plans/{plan_id}:获取计划详情
    • POST /plans创建计划
    • PUT /plans/{plan_id}:更新计划
    • POST /plans/{plan_id}/submit提交计划
    • POST /plans/{plan_id}/approve审批计划
    • POST /plans/{plan_id}/activate激活计划
    • DELETE /plans/{plan_id}:删除计划
    • POST /plans/{plan_id}/kpi-relations添加指标关联
    • PUT /plans/kpi-relations/{relation_id}:更新指标关联
    • DELETE /plans/kpi-relations/{relation_id}:删除指标关联
  • 菜单管理

    • GET /menus/tree获取菜单树
    • GET /menus获取菜单列表
    • GET /menus/{menu_id}:获取菜单详情
    • POST /menus创建菜单
    • PUT /menus/{menu_id}:更新菜单
    • DELETE /menus/{menu_id}:删除菜单
    • POST /menus/init初始化默认菜单
  • 指标模板

    • GET /templates获取模板列表
    • GET /templates/types获取模板类型列表
    • GET /templates/dimensions获取BSC维度列表
    • GET /templates/{template_id}:获取模板详情
    • POST /templates创建模板
    • PUT /templates/{template_id}:更新模板
    • DELETE /templates/{template_id}:删除模板
    • GET /templates/{template_id}/indicators获取模板指标列表
    • POST /templates/{template_id}/indicators添加模板指标
    • PUT /templates/{template_id}/indicators/{indicator_id}:更新模板指标
    • DELETE /templates/{template_id}/indicators/{indicator_id}:移除模板指标
    • POST /templates/{template_id}/indicators/batch批量添加模板指标

章节来源

系统初始化与数据迁移

  • 初始版本:创建科室、员工、指标、考核、工资、用户等核心表。
  • 模板版本:新增指标模板与模板指标关联表,并扩展指标字段。
  • 初始化脚本:批量创建标准模板与指标,支持维度权重与评估周期配置。

章节来源