Files
hospital_performance/docs/architecture.md
2026-02-28 15:02:08 +08:00

178 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 系统架构
## 整体架构
```
┌─────────────────────────────────────────────────────────────┐
│ 前端 (Vue 3) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Views │ │Components│ │ Stores │ │ API │ │
│ │ (页面) │ │ (组件) │ │ (状态) │ │ (请求) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └───────────┴───────────┴───────────┘ │
│ │ Axios HTTP │
└─────────────────────────┼───────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 后端 (FastAPI) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ API Layer │ │
│ │ auth │ staff │ departments │ indicators │ ... │ │
│ └─────────────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Service Layer │ │
│ │ 业务逻辑处理、数据校验、事务管理 │ │
│ └─────────────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ ORM Layer │ │
│ │ SQLAlchemy 2.0 (async) + Pydantic v2 │ │
│ └─────────────────────┬───────────────────────────────┘ │
└────────────────────────┼────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 数据库 (PostgreSQL) │
│ departments │ staff │ indicators │ assessments │ ... │
└─────────────────────────────────────────────────────────────┘
```
## 目录结构
```
hospital-performance/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/v1/ # API路由层
│ │ │ ├── auth.py # 认证接口
│ │ │ ├── staff.py # 员工管理
│ │ │ ├── departments.py # 科室管理
│ │ │ ├── indicators.py # 指标管理
│ │ │ ├── assessments.py # 考核管理
│ │ │ ├── salary.py # 工资核算
│ │ │ └── stats.py # 统计报表
│ │ ├── core/ # 核心模块
│ │ │ ├── config.py # 配置管理
│ │ │ ├── database.py # 数据库连接
│ │ │ ├── security.py # 安全认证
│ │ │ └── init_db.py # 数据库初始化
│ │ ├── models/ # ORM模型
│ │ │ └── models.py # 数据表定义
│ │ ├── schemas/ # Pydantic模式
│ │ │ └── schemas.py # 请求/响应模式
│ │ ├── services/ # 业务逻辑层
│ │ │ ├── staff_service.py
│ │ │ ├── department_service.py
│ │ │ ├── indicator_service.py
│ │ │ ├── assessment_service.py
│ │ │ ├── salary_service.py
│ │ │ └── stats_service.py
│ │ ├── utils/ # 工具函数
│ │ └── main.py # 应用入口
│ ├── alembic/ # 数据库迁移
│ └── requirements.txt
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── api/ # API请求
│ │ │ ├── request.js # Axios封装
│ │ │ ├── auth.js
│ │ │ ├── staff.js
│ │ │ ├── department.js
│ │ │ ├── indicator.js
│ │ │ ├── assessment.js
│ │ │ ├── salary.js
│ │ │ └── stats.js
│ │ ├── stores/ # Pinia状态
│ │ │ ├── user.js # 用户状态
│ │ │ └── app.js # 应用状态
│ │ ├── router/ # 路由配置
│ │ │ └── index.js
│ │ ├── views/ # 页面组件
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── Layout.vue # 布局框架
│ │ │ ├── Dashboard.vue # 工作台
│ │ │ ├── basic/ # 基础数据
│ │ │ │ ├── Departments.vue
│ │ │ │ ├── Staff.vue
│ │ │ │ └── Indicators.vue
│ │ │ ├── assessment/ # 考核管理
│ │ │ │ ├── Assessments.vue
│ │ │ │ └── AssessmentDetail.vue
│ │ │ ├── salary/ # 工资核算
│ │ │ │ └── Salary.vue
│ │ │ └── reports/ # 统计报表
│ │ │ └── Reports.vue
│ │ ├── components/ # 通用组件
│ │ ├── assets/ # 静态资源
│ │ ├── App.vue
│ │ └── main.js
│ └── package.json
├── docs/ # 项目文档
│ ├── index.md
│ ├── architecture.md
│ ├── database.md
│ ├── api.md
│ ├── frontend.md
│ ├── backend.md
│ └── deployment.md
├── AGENTS.md # AI编码助手指南
└── README.md # 项目说明
```
## 分层架构
### API Layer (路由层)
- 负责HTTP请求处理
- 参数校验通过Pydantic
- 调用Service层处理业务
- 返回标准化响应
### Service Layer (业务层)
- 封装业务逻辑
- 数据库CRUD操作
- 事务管理
- 业务规则校验
### ORM Layer (数据层)
- SQLAlchemy模型定义
- 数据库表映射
- 关系定义
## 认证流程
```
┌──────────┐ POST /auth/login ┌──────────┐
│ Client │ ───────────────────────▶ │ Server │
└──────────┘ └──────────┘
│ │
│ 验证用户名密码 │
│ 生成JWT Token │
│ │
│◀───────── { access_token } ─────────│
│ │
│ GET /staff (Authorization: Bearer token)
│─────────────────────────────────────▶│
│ │
│ 验证Token │
│ 返回数据 │
│◀───────── { data: [...] } ──────────│
```
## 数据流
### 考核流程
```
创建考核 → 填写指标得分 → 提交审核 → 审核通过 → 确认生效 → 生成工资
│ │ │ │ │
DRAFT DRAFT SUBMITTED REVIEWED FINALIZED
```
### 工资计算
```
考核确认(FINALIZED) → 读取绩效得分 → 应用绩效系数 → 计算绩效奖金 → 生成工资记录
```