提交文件
This commit is contained in:
738
.qoder/repowiki/zh/content/API接口文档/API接口文档.md
Normal file
738
.qoder/repowiki/zh/content/API接口文档/API接口文档.md
Normal file
@@ -0,0 +1,738 @@
|
||||
# API接口文档
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [backend/app/main.py](file://backend/app/main.py)
|
||||
- [backend/app/core/security.py](file://backend/app/core/security.py)
|
||||
- [backend/app/api/v1/auth.py](file://backend/app/api/v1/auth.py)
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py)
|
||||
- [backend/app/api/v1/staff.py](file://backend/app/api/v1/staff.py)
|
||||
- [backend/app/api/v1/indicators.py](file://backend/app/api/v1/indicators.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/finance.py](file://backend/app/api/v1/finance.py)
|
||||
- [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py)
|
||||
- [backend/app/api/v1/menus.py](file://backend/app/api/v1/menus.py)
|
||||
- [backend/app/api/v1/templates.py](file://backend/app/api/v1/templates.py)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py)
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构概览](#架构概览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
|
||||
本文件为医院绩效管理系统API接口的完整文档。系统采用FastAPI + SQLAlchemy 2.0架构,支持异步IO操作,提供RESTful API接口,涵盖认证授权、基础数据管理、绩效考核、工资核算、财务统计、系统管理等核心功能模块。
|
||||
|
||||
系统采用JWT令牌认证机制,支持管理员(admin)、经理(manager)、普通员工(staff)三种角色权限控制,确保数据安全和业务流程的规范性。
|
||||
|
||||
## 项目结构
|
||||
|
||||
后端采用模块化架构设计,主要目录结构如下:
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "后端应用结构"
|
||||
A["app/"] --> B["api/v1/"]
|
||||
A --> C["core/"]
|
||||
A --> D["models/"]
|
||||
A --> E["services/"]
|
||||
A --> F["schemas/"]
|
||||
B --> B1["认证接口(auth.py)"]
|
||||
B --> B2["基础数据(departments.py, staff.py, indicators.py)"]
|
||||
B --> B3["考核管理(performance_plans.py, assessments.py)"]
|
||||
B --> B4["工资核算(salary.py)"]
|
||||
B --> B5["财务核算(finance.py)"]
|
||||
B --> B6["统计分析(stats.py)"]
|
||||
B --> B7["系统管理(menus.py, templates.py)"]
|
||||
C --> C1["安全配置(security.py)"]
|
||||
C --> C2["数据库配置(database.py)"]
|
||||
C --> C3["配置管理(config.py)"]
|
||||
D --> D1["数据模型(models.py)"]
|
||||
F --> F1["数据模式(schemas.py)"]
|
||||
end
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [backend/app/main.py](file://backend/app/main.py#L15-L77)
|
||||
- [backend/app/api/v1/auth.py](file://backend/app/api/v1/auth.py#L1-L74)
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/main.py](file://backend/app/main.py#L15-L77)
|
||||
|
||||
## 核心组件
|
||||
|
||||
### 认证与安全机制
|
||||
|
||||
系统采用JWT令牌进行身份认证,支持多种权限级别:
|
||||
|
||||
- **用户认证**: OAuth2密码模式,支持用户名密码登录
|
||||
- **权限控制**:
|
||||
- 普通用户: 仅能查看和基本操作
|
||||
- 经理用户: 可进行数据维护和审批操作
|
||||
- 管理员: 拥有系统完全管理权限
|
||||
- **密码安全**: 使用bcrypt进行密码哈希存储
|
||||
|
||||
### 数据模型架构
|
||||
|
||||
系统采用SQLAlchemy ORM映射,核心实体包括:
|
||||
|
||||
- **基础实体**: 科室、员工、指标
|
||||
- **业务实体**: 考核记录、工资记录、绩效计划
|
||||
- **系统实体**: 用户、菜单、指标模板
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/core/security.py](file://backend/app/core/security.py#L18-L110)
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L438)
|
||||
|
||||
## 架构概览
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "客户端层"
|
||||
Web[Web前端]
|
||||
Mobile[移动端]
|
||||
API[第三方系统]
|
||||
end
|
||||
subgraph "API网关层"
|
||||
FastAPI[FastAPI应用]
|
||||
CORS[CORS中间件]
|
||||
Router[路由分发]
|
||||
end
|
||||
subgraph "业务逻辑层"
|
||||
Auth[认证模块]
|
||||
Services[业务服务层]
|
||||
Security[安全控制]
|
||||
end
|
||||
subgraph "数据访问层"
|
||||
DB[(PostgreSQL数据库)]
|
||||
ORM[SQLAlchemy ORM]
|
||||
end
|
||||
subgraph "配置层"
|
||||
Config[应用配置]
|
||||
Logging[日志配置]
|
||||
end
|
||||
Web --> FastAPI
|
||||
Mobile --> FastAPI
|
||||
API --> FastAPI
|
||||
FastAPI --> CORS
|
||||
FastAPI --> Router
|
||||
FastAPI --> Auth
|
||||
FastAPI --> Services
|
||||
FastAPI --> Security
|
||||
Services --> ORM
|
||||
ORM --> DB
|
||||
FastAPI --> Config
|
||||
Auth --> Config
|
||||
Security --> Config
|
||||
Logging --> Config
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [backend/app/main.py](file://backend/app/main.py#L19-L48)
|
||||
- [backend/app/core/security.py](file://backend/app/core/security.py#L21-L53)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 认证接口模块
|
||||
|
||||
#### 用户登录
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/auth/login`
|
||||
- **请求参数**:
|
||||
- username: 字符串,最小长度3,最大长度50
|
||||
- password: 字符串,最小长度6,最大长度100
|
||||
- **响应格式**:
|
||||
```json
|
||||
{
|
||||
"access_token": "字符串",
|
||||
"token_type": "bearer"
|
||||
}
|
||||
```
|
||||
- **错误码**: 401(用户名或密码错误),403(账户已禁用)
|
||||
|
||||
#### 用户注册
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/auth/register`
|
||||
- **请求参数**:
|
||||
- username: 字符串,唯一性约束
|
||||
- password: 字符串,密码哈希处理
|
||||
- staff_id: 整数,关联员工信息
|
||||
- role: 字符串,角色类型
|
||||
- **响应格式**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "注册成功",
|
||||
"data": {"id": 1}
|
||||
}
|
||||
```
|
||||
|
||||
#### 获取当前用户信息
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/auth/me`
|
||||
- **权限要求**: 需要有效JWT令牌
|
||||
- **响应格式**: 用户基本信息
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/auth.py](file://backend/app/api/v1/auth.py#L17-L74)
|
||||
- [backend/app/core/security.py](file://backend/app/core/security.py#L55-L110)
|
||||
|
||||
### 基础数据接口模块
|
||||
|
||||
#### 科室管理接口
|
||||
|
||||
##### 获取科室列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/departments`
|
||||
- **查询参数**:
|
||||
- dept_type: 科室类型过滤
|
||||
- is_active: 是否启用过滤
|
||||
- page/page_size: 分页参数
|
||||
- **响应格式**: 分页响应,包含科室列表和统计信息
|
||||
|
||||
##### 创建科室
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/departments`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
- **请求验证**: 科室编码唯一性检查
|
||||
|
||||
##### 更新科室
|
||||
- **HTTP方法**: PUT
|
||||
- **URL模式**: `/api/v1/departments/{dept_id}`
|
||||
|
||||
##### 删除科室
|
||||
- **HTTP方法**: DELETE
|
||||
- **URL模式**: `/api/v1/departments/{dept_id}`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
- **业务规则**: 无法删除存在子科室的科室
|
||||
|
||||
#### 员工管理接口
|
||||
|
||||
##### 获取员工列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/staff`
|
||||
- **查询参数**:
|
||||
- department_id: 科室ID过滤
|
||||
- status: 员工状态过滤
|
||||
- keyword: 搜索关键词
|
||||
- **响应格式**: 包含科室名称的员工列表
|
||||
|
||||
##### 创建员工
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/staff`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
- **请求验证**: 工号唯一性检查
|
||||
|
||||
##### 获取科室员工
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/staff/department/{department_id}`
|
||||
|
||||
#### 指标管理接口
|
||||
|
||||
##### 获取指标列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/indicators`
|
||||
- **查询参数**:
|
||||
- indicator_type: 指标类型
|
||||
- bs_dimension: 平衡计分卡维度
|
||||
- is_active: 是否启用
|
||||
|
||||
##### 创建指标
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/indicators`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
- **请求验证**: 指标编码唯一性检查
|
||||
|
||||
##### 指标模板管理
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/indicators/templates/list`
|
||||
- **业务功能**: 获取可用的指标模板列表
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py#L20-L108)
|
||||
- [backend/app/api/v1/staff.py](file://backend/app/api/v1/staff.py#L20-L124)
|
||||
- [backend/app/api/v1/indicators.py](file://backend/app/api/v1/indicators.py#L20-L142)
|
||||
|
||||
### 考核管理接口模块
|
||||
|
||||
#### 绩效计划管理
|
||||
|
||||
##### 获取计划列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/plans`
|
||||
- **查询参数**:
|
||||
- plan_level: 计划层级
|
||||
- plan_year: 计划年度
|
||||
- department_id: 科室ID
|
||||
- status: 状态过滤
|
||||
|
||||
##### 创建绩效计划
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/plans`
|
||||
- **请求参数**: 计划基本信息和KPI关联
|
||||
|
||||
##### 提交计划
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/plans/{plan_id}/submit`
|
||||
|
||||
##### 审批计划
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/plans/{plan_id}/approve`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 激活计划
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/plans/{plan_id}/activate`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
#### 绩效考核管理
|
||||
|
||||
##### 获取考核列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/assessments`
|
||||
- **查询参数**:
|
||||
- staff_id: 员工ID
|
||||
- department_id: 科室ID
|
||||
- period_year: 年度
|
||||
- period_month: 月份
|
||||
- status: 状态
|
||||
|
||||
##### 创建考核记录
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/assessments`
|
||||
|
||||
##### 批量创建考核
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/assessments/batch-create`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 审核考核
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/assessments/{assessment_id}/review`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.py#L21-L310)
|
||||
- [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py#L20-L166)
|
||||
|
||||
### 工资核算接口模块
|
||||
|
||||
#### 工资记录管理
|
||||
|
||||
##### 获取工资记录列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/salary`
|
||||
- **查询参数**:
|
||||
- staff_id: 员工ID
|
||||
- department_id: 科室ID
|
||||
- period_year: 年度
|
||||
- period_month: 月份
|
||||
- status: 状态
|
||||
|
||||
##### 创建工资记录
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/salary`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 根据考核生成工资
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/salary/generate`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 批量生成工资
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/salary/batch-generate`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 确认工资
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/salary/{record_id}/confirm`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L20-L156)
|
||||
|
||||
### 财务核算接口模块
|
||||
|
||||
#### 财务数据查询
|
||||
|
||||
##### 获取科室收入
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/finance/revenue`
|
||||
|
||||
##### 获取科室支出
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/finance/expense`
|
||||
|
||||
##### 获取收支结余
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/finance/balance`
|
||||
|
||||
##### 按类别统计收入/支出
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/finance/revenue/by-category`
|
||||
- **URL模式**: `/api/v1/finance/expense/by-category`
|
||||
|
||||
##### 获取财务汇总
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/finance/summary`
|
||||
|
||||
#### 财务记录管理
|
||||
|
||||
##### 创建财务记录
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/finance`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
- **请求验证**: 类别有效性检查
|
||||
|
||||
##### 更新财务记录
|
||||
- **HTTP方法**: PUT
|
||||
- **URL模式**: `/api/v1/finance/{record_id}`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 删除财务记录
|
||||
- **HTTP方法**: DELETE
|
||||
- **URL模式**: `/api/v1/finance/{record_id}`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/finance.py](file://backend/app/api/v1/finance.py#L21-L217)
|
||||
|
||||
### 统计分析接口模块
|
||||
|
||||
#### 绩效统计分析
|
||||
|
||||
##### BSC维度分析
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/bsc-dimension`
|
||||
|
||||
##### 科室绩效统计
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/department`
|
||||
|
||||
##### 趋势分析
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/trend`
|
||||
- **查询参数**: months(最近几个月)
|
||||
|
||||
##### 周期统计
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/period`
|
||||
|
||||
##### 关键指标仪表盘
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/kpi-gauges`
|
||||
|
||||
#### 排名统计
|
||||
|
||||
##### 科室绩效排名
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/department-ranking`
|
||||
|
||||
##### 绩效排名
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/ranking`
|
||||
|
||||
#### 指标完成度
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/stats/completion`
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L17-L242)
|
||||
|
||||
### 系统管理接口模块
|
||||
|
||||
#### 菜单管理
|
||||
|
||||
##### 获取菜单树
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/menus/tree`
|
||||
- **查询参数**: visible_only(是否只返回可见菜单)
|
||||
|
||||
##### 获取菜单列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/menus`
|
||||
|
||||
##### 创建菜单
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/menus`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 更新菜单
|
||||
- **HTTP方法**: PUT
|
||||
- **URL模式**: `/api/v1/menus/{menu_id}`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 删除菜单
|
||||
- **HTTP方法**: DELETE
|
||||
- **URL模式**: `/api/v1/menus/{menu_id}`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 初始化默认菜单
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/menus/init`
|
||||
- **权限要求**: 管理员权限
|
||||
|
||||
#### 指标模板管理
|
||||
|
||||
##### 获取模板列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/templates`
|
||||
|
||||
##### 获取模板类型列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/templates/types`
|
||||
|
||||
##### 获取BSC维度列表
|
||||
- **HTTP方法**: GET
|
||||
- **URL模式**: `/api/v1/templates/dimensions`
|
||||
|
||||
##### 创建模板
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/templates`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 添加模板指标
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/templates/{template_id}/indicators`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
##### 批量添加模板指标
|
||||
- **HTTP方法**: POST
|
||||
- **URL模式**: `/api/v1/templates/{template_id}/indicators/batch`
|
||||
- **权限要求**: 管理员或经理权限
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/api/v1/menus.py](file://backend/app/api/v1/menus.py#L17-L164)
|
||||
- [backend/app/api/v1/templates.py](file://backend/app/api/v1/templates.py#L22-L272)
|
||||
|
||||
## 依赖关系分析
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "API层"
|
||||
AuthAPI[认证API]
|
||||
BasicAPI[基础数据API]
|
||||
AssessmentAPI[考核API]
|
||||
SalaryAPI[工资API]
|
||||
FinanceAPI[财务API]
|
||||
StatsAPI[统计API]
|
||||
MenuAPI[菜单API]
|
||||
TemplateAPI[模板API]
|
||||
end
|
||||
subgraph "服务层"
|
||||
AuthService[认证服务]
|
||||
DeptService[科室服务]
|
||||
StaffService[员工服务]
|
||||
IndService[指标服务]
|
||||
PlanService[计划服务]
|
||||
AssessService[考核服务]
|
||||
SalaryService[工资服务]
|
||||
FinanceService[财务服务]
|
||||
StatsService[统计服务]
|
||||
MenuService[菜单服务]
|
||||
TemplateService[模板服务]
|
||||
end
|
||||
subgraph "数据层"
|
||||
UserModel[用户模型]
|
||||
DeptModel[科室模型]
|
||||
StaffModel[员工模型]
|
||||
IndModel[指标模型]
|
||||
PlanModel[计划模型]
|
||||
AssessModel[考核模型]
|
||||
SalaryModel[工资模型]
|
||||
FinanceModel[财务模型]
|
||||
MenuModel[菜单模型]
|
||||
TemplateModel[模板模型]
|
||||
end
|
||||
AuthAPI --> AuthService
|
||||
BasicAPI --> DeptService
|
||||
BasicAPI --> StaffService
|
||||
BasicAPI --> IndService
|
||||
AssessmentAPI --> PlanService
|
||||
AssessmentAPI --> AssessService
|
||||
SalaryAPI --> SalaryService
|
||||
FinanceAPI --> FinanceService
|
||||
StatsAPI --> StatsService
|
||||
MenuAPI --> MenuService
|
||||
TemplateAPI --> TemplateService
|
||||
AuthService --> UserModel
|
||||
DeptService --> DeptModel
|
||||
StaffService --> StaffModel
|
||||
IndService --> IndModel
|
||||
PlanService --> PlanModel
|
||||
AssessService --> AssessModel
|
||||
SalaryService --> SalaryModel
|
||||
FinanceService --> FinanceModel
|
||||
MenuService --> MenuModel
|
||||
TemplateService --> TemplateModel
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [backend/app/api/v1/auth.py](file://backend/app/api/v1/auth.py#L1-L74)
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py#L1-L108)
|
||||
- [backend/app/api/v1/staff.py](file://backend/app/api/v1/staff.py#L1-L124)
|
||||
- [backend/app/api/v1/indicators.py](file://backend/app/api/v1/indicators.py#L1-L142)
|
||||
- [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/finance.py](file://backend/app/api/v1/finance.py#L1-L217)
|
||||
- [backend/app/api/v1/stats.py](file://backend/app/api/v1/stats.py#L1-L242)
|
||||
- [backend/app/api/v1/menus.py](file://backend/app/api/v1/menus.py#L1-L164)
|
||||
- [backend/app/api/v1/templates.py](file://backend/app/api/v1/templates.py#L1-L272)
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L438)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L1-L743)
|
||||
|
||||
## 性能考虑
|
||||
|
||||
### 数据库优化策略
|
||||
|
||||
1. **索引优化**
|
||||
- 关键查询字段建立复合索引
|
||||
- 时间范围查询优化
|
||||
- 多条件过滤查询优化
|
||||
|
||||
2. **查询优化**
|
||||
- 分页查询避免全表扫描
|
||||
- 连接查询优化
|
||||
- 子查询优化
|
||||
|
||||
3. **缓存策略**
|
||||
- 配置热点数据缓存
|
||||
- 结果集缓存
|
||||
- 查询结果缓存
|
||||
|
||||
### 异步处理
|
||||
|
||||
系统采用异步IO架构,支持高并发请求处理:
|
||||
|
||||
- **异步数据库操作**: SQLAlchemy 2.0异步支持
|
||||
- **异步文件处理**: 日志和配置文件异步读取
|
||||
- **异步任务队列**: 后台任务处理
|
||||
|
||||
### 安全考虑
|
||||
|
||||
1. **认证安全**
|
||||
- JWT令牌过期时间控制
|
||||
- 密码哈希存储
|
||||
- 会话管理
|
||||
|
||||
2. **授权控制**
|
||||
- 基于角色的访问控制(RBAC)
|
||||
- 请求权限验证
|
||||
- 数据访问权限控制
|
||||
|
||||
3. **输入验证**
|
||||
- 参数类型验证
|
||||
- 长度和范围验证
|
||||
- 格式验证
|
||||
|
||||
## 故障排除指南
|
||||
|
||||
### 常见错误码
|
||||
|
||||
| 错误码 | 描述 | 可能原因 |
|
||||
|--------|------|----------|
|
||||
| 400 | 请求参数错误 | 参数类型不正确或缺失 |
|
||||
| 401 | 未授权 | JWT令牌无效或过期 |
|
||||
| 403 | 禁止访问 | 权限不足或账户被禁用 |
|
||||
| 404 | 资源不存在 | 请求的资源不存在 |
|
||||
| 422 | 数据验证错误 | 业务规则验证失败 |
|
||||
| 500 | 服务器内部错误 | 服务器异常 |
|
||||
|
||||
### 调试步骤
|
||||
|
||||
1. **检查认证状态**
|
||||
- 验证JWT令牌有效性
|
||||
- 检查用户权限级别
|
||||
- 确认账户状态正常
|
||||
|
||||
2. **验证请求参数**
|
||||
- 检查必填参数
|
||||
- 验证参数格式
|
||||
- 确认参数范围
|
||||
|
||||
3. **查看系统日志**
|
||||
- 应用程序日志
|
||||
- 数据库查询日志
|
||||
- 错误日志分析
|
||||
|
||||
4. **测试API端点**
|
||||
- 使用Swagger UI测试
|
||||
- 编写单元测试
|
||||
- 集成测试验证
|
||||
|
||||
**章节来源**
|
||||
- [backend/app/main.py](file://backend/app/main.py#L58-L75)
|
||||
|
||||
## 结论
|
||||
|
||||
本API接口文档涵盖了医院绩效管理系统的核心功能模块,提供了完整的RESTful API规范。系统采用现代化的技术栈,具备良好的扩展性和安全性。通过清晰的权限控制和数据验证机制,确保了系统的稳定运行。
|
||||
|
||||
建议在实际部署时:
|
||||
1. 配置适当的环境变量和数据库连接
|
||||
2. 设置合理的JWT令牌过期时间
|
||||
3. 实施监控和日志记录
|
||||
4. 定期备份数据库
|
||||
5. 进行安全审计和渗透测试
|
||||
|
||||
## 附录
|
||||
|
||||
### API版本管理
|
||||
|
||||
系统采用URL前缀版本控制:
|
||||
- 版本前缀: `/api/v1`
|
||||
- 开放API文档: `/api/v1/docs`
|
||||
- Redoc文档: `/api/v1/redoc`
|
||||
|
||||
### 速率限制
|
||||
|
||||
系统支持多种速率限制策略:
|
||||
- 基于IP的请求频率限制
|
||||
- 基于用户的API调用限制
|
||||
- 针对敏感操作的额外限制
|
||||
|
||||
### 请求响应示例
|
||||
|
||||
#### 成功响应格式
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {},
|
||||
"total": 0,
|
||||
"page": 1,
|
||||
"page_size": 20
|
||||
}
|
||||
```
|
||||
|
||||
#### 错误响应格式
|
||||
```json
|
||||
{
|
||||
"code": 400,
|
||||
"message": "错误描述",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 参数验证规则
|
||||
|
||||
1. **字符串类型**: 最小长度、最大长度、字符集验证
|
||||
2. **数值类型**: 最小值、最大值、精度验证
|
||||
3. **日期时间**: 格式验证、范围验证
|
||||
4. **枚举类型**: 值域验证
|
||||
5. **复合类型**: 结构验证、嵌套验证
|
||||
Reference in New Issue
Block a user