提交文件
This commit is contained in:
596
.qoder/repowiki/zh/content/数据库设计/数据字典/数据字典.md
Normal file
596
.qoder/repowiki/zh/content/数据库设计/数据字典/数据字典.md
Normal file
@@ -0,0 +1,596 @@
|
||||
# 数据字典
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py)
|
||||
- [backend/app/api/v1/staff.py](file://backend/app/api/v1/staff.py)
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.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/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/templates.py](file://backend/app/api/v1/templates.py)
|
||||
- [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py)
|
||||
- [backend/app/services/department_service.py](file://backend/app/services/department_service.py)
|
||||
- [backend/app/services/indicator_service.py](file://backend/app/services/indicator_service.py)
|
||||
- [backend/app/services/staff_service.py](file://backend/app/services/staff_service.py)
|
||||
- [backend/app/services/template_service.py](file://backend/app/services/template_service.py)
|
||||
- [docs/database.md](file://docs/database.md)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构概览](#架构概览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖分析](#依赖分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本数据字典面向医院绩效管理系统,系统围绕“科室—员工—考核—工资—财务”主线构建,涵盖指标管理、计划管理、模板管理、财务核算等模块。本文档从字段层面梳理每个实体的数据定义(业务含义、数据类型、长度/精度限制、取值范围、默认值),明确枚举类型及其使用场景,阐述字段与业务实体的对应关系,给出数据流转过程,并提供维护更新规范与查询使用指南。
|
||||
|
||||
## 项目结构
|
||||
系统采用前后端分离架构,后端基于FastAPI + SQLAlchemy,采用分层设计(API → Service → Model),前端Vue3 + Vite。数据库采用SQLite(开发环境),通过Alembic进行版本化迁移。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
FE["前端界面<br/>Vue3 + Vite"] --> API["后端API<br/>FastAPI"]
|
||||
API --> SVC["服务层<br/>各模块Service"]
|
||||
SVC --> MODELS["模型层<br/>SQLAlchemy ORM"]
|
||||
MODELS --> DB["数据库<br/>SQLite"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [backend/app/api/v1/staff.py](file://backend/app/api/v1/staff.py#L1-L124)
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py#L1-L108)
|
||||
- [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/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/templates.py](file://backend/app/api/v1/templates.py#L1-L272)
|
||||
|
||||
章节来源
|
||||
- [backend/app/api/v1/staff.py](file://backend/app/api/v1/staff.py#L1-L124)
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py#L1-L108)
|
||||
- [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/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/templates.py](file://backend/app/api/v1/templates.py#L1-L272)
|
||||
|
||||
## 核心组件
|
||||
- 数据模型层:定义实体、字段、约束、索引、枚举类型
|
||||
- 模式层(Pydantic):定义API输入输出结构、字段校验规则
|
||||
- API层:定义REST接口、参数、返回结构
|
||||
- 服务层:封装业务逻辑、事务处理、数据聚合
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L1-L438)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L1-L79)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L1-L743)
|
||||
|
||||
## 架构概览
|
||||
系统围绕“绩效考核—工资核算—财务分析”的主流程展开,指标与模板驱动考核,考核结果驱动工资生成,财务模块提供收支与结余分析。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "基础数据"
|
||||
DEPT["科室表<br/>departments"]
|
||||
STAFF["员工表<br/>staff"]
|
||||
USERS["用户表<br/>users"]
|
||||
end
|
||||
subgraph "指标与计划"
|
||||
IND["指标表<br/>indicators"]
|
||||
TPL["模板表<br/>indicator_templates"]
|
||||
TIND["模板指标关联<br/>template_indicators"]
|
||||
PLAN["绩效计划表<br/>performance_plans"]
|
||||
REL["计划指标关联<br/>plan_kpi_relations"]
|
||||
end
|
||||
subgraph "考核与工资"
|
||||
ASSESS["考核记录表<br/>assessments"]
|
||||
DETAIL["考核明细表<br/>assessment_details"]
|
||||
SAL["工资记录表<br/>salary_records"]
|
||||
end
|
||||
subgraph "财务"
|
||||
FIN["科室财务记录<br/>department_finances"]
|
||||
end
|
||||
DEPT <-- "1:N" --> STAFF
|
||||
STAFF <-- "N:1" --> DEPT
|
||||
STAFF <-- "N:1" --> USERS
|
||||
IND <-- "N:1" --> DETAIL
|
||||
ASSESS <-- "1:N" --> DETAIL
|
||||
DETAIL <-- "N:1" --> IND
|
||||
PLAN <-- "1:N" --> REL
|
||||
REL <-- "N:1" --> IND
|
||||
STAFF <-- "N:1" --> ASSESS
|
||||
STAFF <-- "N:1" --> SAL
|
||||
DEPT <-- "N:1" --> FIN
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [docs/database.md](file://docs/database.md#L1-L286)
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L438)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L45-L79)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 1) 基础数据实体
|
||||
|
||||
#### 1.1 科室表 departments
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- name: 字符串, 长度100, 非空, 说明: 科室名称
|
||||
- code: 字符串, 长度20, 唯一, 非空, 说明: 科室编码
|
||||
- dept_type: 枚举, 非空, 说明: 科室类型
|
||||
- parent_id: 整型, 外键, 说明: 上级科室
|
||||
- level: 整型, 默认1, 说明: 层级
|
||||
- sort_order: 整型, 默认0, 说明: 排序
|
||||
- is_active: 布尔, 默认true, 说明: 是否启用
|
||||
- description: 文本, 说明: 描述
|
||||
- created_at/updated_at: 时间戳, 说明: 创建/更新时间
|
||||
- 约束与索引
|
||||
- 唯一键: code
|
||||
- 索引: idx_dept_type, idx_dept_parent
|
||||
- 业务含义
|
||||
- 支持多级组织架构,支持停用/启用;用于员工归属、计划/模板适用范围等
|
||||
- 默认值与取值范围
|
||||
- level: 1-5
|
||||
- sort_order: 任意整数
|
||||
- is_active: true/false
|
||||
- 使用场景
|
||||
- 员工入职时绑定科室;计划/模板按科室类型筛选适用范围
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L86)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L64-L103)
|
||||
- [docs/database.md](file://docs/database.md#L99-L116)
|
||||
|
||||
#### 1.2 员工表 staff
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- employee_id: 字符串, 长度20, 唯一, 非空, 说明: 工号
|
||||
- name: 字符串, 长度50, 非空, 说明: 姓名
|
||||
- department_id: 整型, 外键, 非空, 说明: 所属科室
|
||||
- position: 字符串, 长度50, 非空, 说明: 职位
|
||||
- title: 字符串, 长度50, 说明: 职称
|
||||
- phone/email: 字符串, 长度20/100, 说明: 联系方式
|
||||
- base_salary: 数值, 精度(10,2), 默认0, 说明: 基本工资
|
||||
- performance_ratio: 数值, 精度(5,2), 默认1.0, 说明: 绩效系数
|
||||
- status: 枚举, 默认active, 说明: 员工状态
|
||||
- hire_date: 时间戳, 说明: 入职日期
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 唯一键: employee_id
|
||||
- 索引: idx_staff_dept, idx_staff_status
|
||||
- 业务含义
|
||||
- 基于基本工资与绩效系数计算绩效奖金;参与考核与工资生成
|
||||
- 默认值与取值范围
|
||||
- base_salary ≥ 0
|
||||
- 0 ≤ performance_ratio ≤ 5
|
||||
- 使用场景
|
||||
- 薪资计算、部门统计、计划责任人
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L88-L115)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L107-L150)
|
||||
- [docs/database.md](file://docs/database.md#L117-L137)
|
||||
|
||||
#### 1.3 用户表 users
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- username: 字符串, 长度50, 唯一, 非空, 说明: 用户名
|
||||
- password_hash: 字符串, 长度255, 非空, 说明: 密码哈希
|
||||
- staff_id: 整型, 外键, 说明: 关联员工
|
||||
- role: 字符串, 长度20, 默认staff, 说明: 角色
|
||||
- is_active: 布尔, 默认true, 说明: 是否启用
|
||||
- last_login: 时间戳, 说明: 最后登录
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 唯一键: username
|
||||
- 索引: idx_user_username
|
||||
- 业务含义
|
||||
- 系统访问控制与权限管理的基础
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L244-L261)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L315-L345)
|
||||
|
||||
### 2) 指标与模板
|
||||
|
||||
#### 2.1 指标表 indicators
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- name/code: 字符串, 长度100/20, 唯一, 非空, 说明: 指标名称/编码
|
||||
- indicator_type: 枚举, 非空, 说明: 指标类型
|
||||
- bs_dimension: 枚举, 非空, 说明: 平衡计分卡维度
|
||||
- weight: 数值, 精度(5,2), 默认1.0, 说明: 权重
|
||||
- max_score: 数值, 精度(5,2), 默认100, 说明: 最高分值
|
||||
- target_value/target_unit: 数值/字符串, 说明: 目标值与单位
|
||||
- calculation_method/assessment_method/deduction_standard/data_source: 文本, 说明: 计算/考核/扣分/数据来源
|
||||
- applicable_dept_types: 文本(JSON数组), 说明: 适用科室类型
|
||||
- is_veto: 布尔, 默认false, 说明: 是否一票否决
|
||||
- is_active: 布尔, 默认true, 说明: 是否启用
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 约束: weight > 0
|
||||
- 索引: idx_indicator_type
|
||||
- 业务含义
|
||||
- 考核的最小颗粒,决定评分与权重;支持JSON存储适用范围
|
||||
- 默认值与取值范围
|
||||
- weight > 0
|
||||
- max_score ≥ 0
|
||||
- 使用场景
|
||||
- 考核打分、计划目标设定、模板匹配
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L117-L147)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L153-L193)
|
||||
- [docs/database.md](file://docs/database.md#L138-L158)
|
||||
|
||||
#### 2.2 指标模板表 indicator_templates
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- template_name/code: 字符串, 长度200/50, 唯一, 非空
|
||||
- template_type: 枚举, 非空, 说明: 模板类型
|
||||
- description: 文本, 说明: 模板描述
|
||||
- dimension_weights: 文本(JSON), 说明: 维度权重
|
||||
- assessment_cycle: 字符串, 长度20, 默认monthly, 说明: 考核周期
|
||||
- is_active: 布尔, 默认true
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_template_type, idx_template_active
|
||||
- 业务含义
|
||||
- 为不同科室类型提供标准化指标集合,支持批量导入
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L387-L409)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L698-L732)
|
||||
|
||||
#### 2.3 模板指标关联表 template_indicators
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- template_id/indicator_id: 整型, 外键, 非空, 说明: 模板与指标
|
||||
- category: 字符串, 长度100, 说明: 指标分类(二级指标)
|
||||
- target_value/target_unit: 数值/字符串, 说明: 目标值与单位
|
||||
- weight: 数值, 精度(5,2), 默认1.0
|
||||
- scoring_method/scoring_params: 字符串/文本(JSON), 说明: 评分方法与参数
|
||||
- sort_order: 整型, 默认0, 说明: 排序
|
||||
- remark: 文本, 说明: 备注
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_ti_template, idx_ti_indicator, idx_ti_unique(模板+指标唯一)
|
||||
- 业务含义
|
||||
- 将指标纳入模板,支持排序与评分参数配置
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L411-L438)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L654-L696)
|
||||
|
||||
### 3) 考核与工资
|
||||
|
||||
#### 3.1 考核记录表 assessments
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- staff_id: 整型, 外键, 非空, 说明: 被考核员工
|
||||
- period_year/period_month: 整型, 非空, 说明: 考核年度/月份
|
||||
- period_type: 字符串, 长度20, 默认monthly, 说明: 周期类型
|
||||
- total_score/weighted_score: 数值, 精度(5,2), 默认0, 说明: 总分/加权得分
|
||||
- status: 枚举, 默认draft, 说明: 状态
|
||||
- assessor_id/reviewer_id: 整型, 外键, 说明: 考核人/审核人
|
||||
- submit_time/review_time: 时间戳, 说明: 提交/审核时间
|
||||
- remark: 文本, 说明: 备注
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_assessment_staff, idx_assessment_period, idx_assessment_status
|
||||
- 业务含义
|
||||
- 记录一次完整的考核流程,支持草稿、提交、审核、确认、驳回
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L149-L179)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L220-L271)
|
||||
- [docs/database.md](file://docs/database.md#L159-L180)
|
||||
|
||||
#### 3.2 考核明细表 assessment_details
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- assessment_id/indicator_id: 整型, 外键, 非空
|
||||
- actual_value: 数值, 精度(10,2), 说明: 实际值
|
||||
- score: 数值, 精度(5,2), 默认0, 说明: 得分
|
||||
- evidence: 文本, 说明: 佐证材料
|
||||
- remark: 文本, 说明: 备注
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_detail_assessment, idx_detail_indicator
|
||||
- 业务含义
|
||||
- 记录每个指标的得分与实际值,支撑总分与加权得分计算
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L181-L203)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L196-L219)
|
||||
- [docs/database.md](file://docs/database.md#L181-L196)
|
||||
|
||||
#### 3.3 工资记录表 salary_records
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- staff_id: 整型, 外键, 非空
|
||||
- period_year/period_month: 整型, 非空
|
||||
- base_salary/performance_score/performance_bonus/deduction/allowance: 数值, 精度(10,2)/(5,2), 默认0, 说明: 基本工资/绩效得分/绩效奖金/扣款/补贴
|
||||
- total_salary: 数值, 精度(10,2), 默认0, 说明: 应发工资
|
||||
- status: 字符串, 长度20, 默认pending, 说明: 状态
|
||||
- remark: 文本, 说明: 备注
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_salary_staff, idx_salary_period
|
||||
- 业务含义
|
||||
- 基于考核结果生成工资,支持确认与批量确认
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L205-L231)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L274-L312)
|
||||
- [docs/database.md](file://docs/database.md#L197-L217)
|
||||
|
||||
### 4) 绩效计划
|
||||
|
||||
#### 4.1 绩效计划表 performance_plans
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- plan_name/code: 字符串, 长度200/50, 唯一, 非空
|
||||
- plan_level: 枚举, 非空, 说明: 计划层级(hospital/department/individual)
|
||||
- plan_year/plan_month: 整型/可选, 说明: 年度/月份
|
||||
- plan_type: 字符串, 长度20, 默认annual, 说明: 计划类型(annual/monthly)
|
||||
- department_id/staff_id: 整型/可选, 外键, 说明: 所属科室/责任人
|
||||
- parent_plan_id: 整型, 外键, 说明: 上级计划
|
||||
- description/strategic_goals/key_initiatives: 文本, 说明: 描述/战略目标/关键举措
|
||||
- status: 枚举, 默认draft, 说明: 状态
|
||||
- submitter_id/approver_id: 整型, 外键, 说明: 提交人/审批人
|
||||
- submit_time/approve_time: 时间戳, 说明: 提交/审批时间
|
||||
- approve_remark: 文本, 说明: 审批意见
|
||||
- version: 整型, 默认1, 说明: 版本号
|
||||
- is_active: 布尔, 默认true, 说明: 是否启用
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_plan_level, idx_plan_year, idx_plan_department, idx_plan_status
|
||||
- 业务含义
|
||||
- 支持医院/科室/个人三级计划,支持父子计划与审批流程
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L270-L312)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L519-L570)
|
||||
|
||||
#### 4.2 计划指标关联表 plan_kpi_relations
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- plan_id/indicator_id: 整型, 外键, 非空
|
||||
- target_value/target_unit: 数值/字符串, 说明: 目标值与单位
|
||||
- weight: 数值, 精度(5,2), 默认1.0, 说明: 权重
|
||||
- scoring_method/scoring_params: 字符串/文本(JSON), 说明: 评分方法与参数
|
||||
- remark: 文本, 说明: 备注
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 索引: idx_relation_plan, idx_relation_indicator, idx_relation_unique(计划+指标唯一)
|
||||
- 业务含义
|
||||
- 将指标纳入具体计划,支持目标与权重配置
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L314-L339)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L481-L518)
|
||||
|
||||
### 5) 财务核算
|
||||
|
||||
#### 5.1 科室财务记录表 department_finances
|
||||
- 字段定义
|
||||
- id: 整型, 主键, 自增
|
||||
- department_id: 整型, 外键, 非空
|
||||
- period_year/period_month: 整型, 非空
|
||||
- finance_type: 枚举, 非空, 说明: 收入/支出
|
||||
- category: 字符串, 长度50, 非空, 说明: 类别
|
||||
- amount: 数值, 精度(12,2), 默认0, 说明: 金额
|
||||
- source: 字符串, 长度100, 说明: 数据来源
|
||||
- remark: 文本, 说明: 备注
|
||||
- created_at/updated_at: 时间戳
|
||||
- 约束与索引
|
||||
- 约束: amount ≥ 0
|
||||
- 索引: idx_finance_dept, idx_finance_period, idx_finance_type, idx_finance_category
|
||||
- 业务含义
|
||||
- 记录各科室的收支明细,支持按类别统计与结余计算
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L45-L75)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L407-L452)
|
||||
|
||||
### 6) 枚举类型与取值范围
|
||||
|
||||
- 科室类型 DeptType
|
||||
- 取值: clinical_surgical, clinical_nonsurgical_ward, clinical_nonsurgical_noward, medical_tech, medical_auxiliary, nursing, admin, finance, logistics
|
||||
- 用途: 控制模板与计划适用范围
|
||||
|
||||
- 员工状态 StaffStatus
|
||||
- 取值: active, leave, resigned, retired
|
||||
|
||||
- 考核状态 AssessmentStatus
|
||||
- 取值: draft, submitted, reviewed, finalized, rejected
|
||||
|
||||
- 指标类型 IndicatorType
|
||||
- 取值: quality, quantity, efficiency, service, cost
|
||||
|
||||
- 计划层级 PlanLevel
|
||||
- 取值: hospital, department, individual
|
||||
|
||||
- 计划状态 PlanStatus
|
||||
- 取值: draft, pending, approved, rejected, active, completed, cancelled
|
||||
|
||||
- 菜单类型 MenuType
|
||||
- 取值: menu, button
|
||||
|
||||
- 模板类型 TemplateType
|
||||
- 取值: general, surgical, nonsurgical_ward, nonsurgical_noward, medical_tech, nursing, admin, logistics
|
||||
|
||||
- 财务类型 FinanceType
|
||||
- 取值: revenue, expense
|
||||
|
||||
- 收入类别 RevenueCategory
|
||||
- 取值: examination, lab_test, radiology, bed, nursing, treatment, surgery, injection, oxygen, other
|
||||
|
||||
- 支出类别 ExpenseCategory
|
||||
- 取值: material, personnel, maintenance, utility, other
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L16-L43)
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L233-L242)
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L341-L345)
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L375-L385)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L16-L43)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L12-L45)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L463-L479)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L584-L588)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L642-L652)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L378-L405)
|
||||
- [backend/app/schemas/schemas.py](file://backend/app/schemas/schemas.py#L378-L405)
|
||||
|
||||
### 7) 数据流转说明
|
||||
|
||||
#### 7.1 考核到工资的流程
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant API as "API"
|
||||
participant Svc as "SalaryService"
|
||||
participant DB as "数据库"
|
||||
API->>Svc : "根据考核生成工资"
|
||||
Svc->>DB : "查询已确认的考核记录"
|
||||
DB-->>Svc : "返回考核与明细"
|
||||
Svc->>Svc : "计算绩效得分/奖金"
|
||||
Svc->>DB : "写入工资记录"
|
||||
DB-->>Svc : "返回记录ID"
|
||||
Svc-->>API : "生成成功"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L96-L111)
|
||||
- [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py#L194-L206)
|
||||
|
||||
#### 7.2 财务收支统计流程
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["开始"]) --> Fetch["查询科室收支记录"]
|
||||
Fetch --> Group["按类别分组统计"]
|
||||
Group --> Sum["计算合计"]
|
||||
Sum --> Balance["结余 = 收入合计 - 支出合计"]
|
||||
Balance --> End(["结束"])
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [backend/app/api/v1/finance.py](file://backend/app/api/v1/finance.py#L21-L155)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L45-L75)
|
||||
|
||||
## 依赖分析
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
STAFF["staff"] --> DEPT["departments"]
|
||||
STAFF --> USERS["users"]
|
||||
ASSESS["assessments"] --> STAFF
|
||||
ASSESS --> DETAIL["assessment_details"]
|
||||
DETAIL --> IND["indicators"]
|
||||
SAL["salary_records"] --> STAFF
|
||||
PLAN["performance_plans"] --> DEPT
|
||||
PLAN --> STAFF
|
||||
PLAN --> REL["plan_kpi_relations"]
|
||||
REL --> IND
|
||||
TPL["indicator_templates"] --> TIND["template_indicators"]
|
||||
TIND --> IND
|
||||
FIN["department_finances"] --> DEPT
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L438)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L45-L79)
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L438)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L45-L79)
|
||||
|
||||
## 性能考虑
|
||||
- 索引策略
|
||||
- 对常用过滤字段建立索引(如科室类型、状态、周期、部门)
|
||||
- 对外键字段建立索引,减少连接开销
|
||||
- 查询优化
|
||||
- 使用selectinload预加载关联对象,避免N+1查询
|
||||
- 分页查询配合COUNT子查询,避免全表扫描
|
||||
- 数据类型选择
|
||||
- 数值使用Decimal保证精度;字符串使用VARCHAR并设置合理上限
|
||||
- 缓存建议
|
||||
- 对静态枚举与模板列表可做内存缓存,降低数据库压力
|
||||
|
||||
## 故障排除指南
|
||||
- 常见错误与定位
|
||||
- “指标/模板/科室编码已存在”:检查唯一约束冲突
|
||||
- “无法删除,存在子记录”:先清理子项再删除
|
||||
- “无法生成/确认工资”:检查考核状态与重复生成
|
||||
- “无效的类别”:确认财务类别枚举值
|
||||
- 排查步骤
|
||||
- 查看API返回状态码与错误信息
|
||||
- 检查数据库约束与索引是否生效
|
||||
- 核对枚举值是否在允许范围内
|
||||
- 使用服务层日志定位业务流程异常点
|
||||
|
||||
章节来源
|
||||
- [backend/app/api/v1/indicators.py](file://backend/app/api/v1/indicators.py#L78-L82)
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py#L103-L107)
|
||||
- [backend/app/api/v1/salary.py](file://backend/app/api/v1/salary.py#L104-L110)
|
||||
- [backend/app/api/v1/finance.py](file://backend/app/api/v1/finance.py#L170-L175)
|
||||
|
||||
## 结论
|
||||
本数据字典系统性梳理了医院绩效管理系统的数据结构与业务规则,明确了字段定义、枚举取值、默认值与约束、索引策略与使用场景,并给出了数据流转与维护规范。建议在后续迭代中持续完善字段注释、扩展审计字段、引入字段变更追踪机制,确保数据治理的可追溯性与一致性。
|
||||
|
||||
## 附录
|
||||
|
||||
### A. 字段与业务实体对应关系
|
||||
- 科室 → 员工:一对多
|
||||
- 员工 → 考核:一对多
|
||||
- 考核 → 明细:一对多
|
||||
- 明细 → 指标:多对一
|
||||
- 员工 → 工资:一对多
|
||||
- 计划 → 指标:多对多(通过plan_kpi_relations)
|
||||
- 模板 → 指标:多对多(通过template_indicators)
|
||||
- 科室 → 财务:一对多
|
||||
|
||||
章节来源
|
||||
- [backend/app/models/models.py](file://backend/app/models/models.py#L62-L438)
|
||||
- [backend/app/models/finance.py](file://backend/app/models/finance.py#L45-L79)
|
||||
|
||||
### B. 数据字典维护与更新规范
|
||||
- 新增字段
|
||||
- 在模型层定义字段与约束,补充Pydantic模式
|
||||
- 在API层增加参数校验与默认值
|
||||
- 在服务层处理字段映射与业务逻辑
|
||||
- 更新数据库迁移脚本并升级数据库
|
||||
- 修改字段
|
||||
- 评估兼容性与影响范围
|
||||
- 通过迁移脚本安全变更,保留历史数据
|
||||
- 更新API与模式校验规则
|
||||
- 删除字段
|
||||
- 确认无业务依赖后,通过迁移脚本删除
|
||||
- 清理相关API与服务逻辑
|
||||
|
||||
### C. 数据字典查询与使用指南
|
||||
- 基础查询
|
||||
- 通过API参数过滤(如科室类型、状态、周期)
|
||||
- 使用分页参数控制返回数量
|
||||
- 高级查询
|
||||
- 结合多个条件组合查询
|
||||
- 使用树形结构查询科室层级
|
||||
- 数据导出
|
||||
- 指标与模板支持批量导入/导出
|
||||
- 财务模块支持按类别统计与汇总
|
||||
|
||||
章节来源
|
||||
- [backend/app/api/v1/departments.py](file://backend/app/api/v1/departments.py#L20-L51)
|
||||
- [backend/app/api/v1/indicators.py](file://backend/app/api/v1/indicators.py#L20-L56)
|
||||
- [backend/app/api/v1/templates.py](file://backend/app/api/v1/templates.py#L22-L75)
|
||||
- [backend/app/api/v1/finance.py](file://backend/app/api/v1/finance.py#L116-L155)
|
||||
Reference in New Issue
Block a user