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

9.6 KiB
Raw Permalink Blame History

系统架构

整体架构

┌─────────────────────────────────────────────────────────────┐
│                        前端 (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) → 读取绩效得分 → 应用绩效系数 → 计算绩效奖金 → 生成工资记录