178 lines
9.6 KiB
Markdown
178 lines
9.6 KiB
Markdown
# 系统架构
|
||
|
||
## 整体架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 前端 (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) → 读取绩效得分 → 应用绩效系数 → 计算绩效奖金 → 生成工资记录
|
||
```
|