umarsidiqui04/AI-Powered-Disaster-Response-MIS-main
GitHub: umarsidiqui04/AI-Powered-Disaster-Response-MIS-main
一套面向巴基斯坦灾害响应协调的全栈管理信息系统,集成了实时事件追踪、救援团队调度、多仓库库存管理、医院病床协同和财务监管等核心功能。
Stars: 0 | Forks: 0
# 🚨 AI 驱动的灾害响应管理信息系统
这是一个专为协调巴基斯坦各地灾害响应行动而设计的全栈式**管理信息系统 (MIS)**。该系统支持实时事件追踪、救援团队协调、资源/库存管理、医院协同以及基于角色的访问控制的财务监管。





## 📋 目录
- [功能](#-features)
- [技术栈](#-technology-stack)
- [架构](#-architecture)
- [数据库 Schema](#-database-schema)
- [快速开始](#-getting-started)
- [API Endpoints](#-api-endpoints)
- [基于角色的访问控制](#-role-based-access-control)
- [系统截图](#-screenshots)
## ✨ 功能
### 🔐 身份验证与授权
- 基于 JWT 的身份验证与基于角色的访问控制 (RBAC)
- 5 种不同的用户角色:管理员、紧急情况接线员、现场专员、仓库主管、财务专员
- 使用 SHA-256 进行安全的密码哈希处理
- 支持选择角色的用户注册
### 🚨 紧急情况与事件管理
- 实时的事件报告与追踪(待处理 → 已批准 → 进行中 → 已解决)
- 用于事件处理的多步审批工作流
- 面向市民的公共事件报告门户
- 严重性分类(严重、高、中、低)
- 灾害类型分类(洪水、地震、火灾、山体滑坡)
### 🚑 救援团队协调
- 实时团队可用性追踪(空闲、已分配、忙碌、已完成)
- 将团队分配到进行中的事件并自动更新状态
- 基于位置调度团队
- 为现场专员提供团队状态和位置管理
### 📦 库存与仓库管理
- 跨 7 个地点的多仓库库存追踪
- 15 种以上的资源类别(食品、水、药品、避难所、设备)
- 具有数量验证的库存接收与调拨
- 具有可配置阈值的低库存预警(严重偏低、偏低、缺货)
- 向事件分配资源并自动扣减库存
### 🏥 医院协同
- 跨 10 家医院的实时病床容量监控
- 基于邻近度(地理空间)和病床可用性的智能患者分配
- 带有病情分类(稳定、严重、危重)的患者入院追踪
- 占用率计算与危重病例监控
### 💰 财务管理
- 捐款、支出和采购交易追踪
- 支持多币种(默认为 PKR)
- 财务交易的审批工作流
- 每笔财务交易的详细审计追踪
- 财务余额报告(捐款与支出对比)
### 📊 分析与报告
- 带有实时统计数据的仪表板
- 按灾害类型和严重程度划分的事件摘要报告
- 跨仓库的资源利用率报告
- 财务余额与支出报告
- 按灾害类型划分的响应时间分析
- 数据库性能基准测试(视图 vs. 基础表,索引性能)
### 🔍 审计与合规
- 对所有关键操作进行全面审计日志记录
- 7 个用于自动化事件追踪的数据库触发器
- 带有审查工作流的审批请求管理
- 用于安全防范的 IP 地址记录
## 🛠 技术栈
### 前端
| 技术 | 用途 |
|---|---|
| **Next.js 16** | 包含 App Router 和 Server Components 的 React 框架 |
| **React 19** | UI 组件库 |
| **TypeScript 5** | 类型安全的 JavaScript |
| **Tailwind CSS 4** | 实用优先的 CSS 框架 |
| **Framer Motion** | 动画和过渡效果 |
| **Recharts** | 数据可视化和图表 |
| **Radix UI** | 可访问的、无样式的 UI 基础组件 |
| **React Hook Form + Zod** | 带有 schema 验证的表单处理 |
| **Axios** | 用于 API 通信的 HTTP 客户端 |
| **Lucide React** | 图标库 |
| **Sonner** | Toast 通知 |
### 后端
| 技术 | 用途 |
|---|---|
| **Python 3.12+** | 后端 runtime |
| **FastAPI** | 高性能异步 REST API 框架 |
| **Uvicorn** | ASGI 服务器 |
| **PyODBC** | SQL Server 数据库连接 |
| **python-jose** | JWT token 生成与验证 |
| **Pydantic** | 数据验证和序列化 |
### 数据库
| 技术 | 用途 |
|---|---|
| **Microsoft SQL Server** | 关系型数据库 (SSMS) |
| **T-SQL** | 存储过程、触发器、视图、索引 |
| **16 个表** | 规范化的关系 schema |
| **7 个视图** | 预构建的分析查询 |
| **7 个触发器** | 自动化的业务逻辑执行 |
| **20+ 个索引** | 查询性能优化 |
## 🏗 架构
```
┌─────────────────────────────────────────────────┐
│ Frontend │
│ Next.js 16 + React 19 + TypeScript │
│ (Port 3000) │
├─────────────────────────────────────────────────┤
│ Backend API │
│ FastAPI + Uvicorn (Port 8000) │
│ JWT Auth + RBAC Middleware │
├─────────────────────────────────────────────────┤
│ Database │
│ Microsoft SQL Server (SSMS) │
│ 16 Tables | 7 Views | 7 Triggers │
└─────────────────────────────────────────────────┘
```
## 🗄 数据库 Schema
该系统使用具有适当外键关系的 **16 个互连表**:
| 表格 | 描述 |
|---|---|
| `Roles` | 用户角色定义(5 个角色) |
| `Users` | 具有身份验证的注册用户 |
| `Locations` | 巴基斯坦各地的地理位置(15 个城市) |
| `EmergencyReports` | 具有严重程度和状态的事件报告 |
| `RescueTeams` | 包含可用性追踪的团队详细信息 |
| `TeamAssignments` | 团队与事件的分配关系 |
| `Warehouses` | 仓库位置和容量 |
| `Resources` | 包含库存阈值的资源目录 |
| `WarehouseInventory` | 每个仓库的当前库存水平 |
| `ResourceAllocations` | 资源调拨和消耗追踪 |
| `Hospitals` | 包含病床容量的医院详细信息 |
| `PatientAdmissions` | 患者记录和病情 |
| `FinancialTransactions` | 捐款、支出、采购 |
| `ApprovalRequests` | 多级审批工作流 |
| `AuditLogs` | 系统级的审计追踪 |
| `StockAlerts` | 自动化的低库存通知 |
## 🚀 快速开始
### 前置条件
- **Node.js** 18+ 和 npm
- **Python** 3.12+
- **Microsoft SQL Server** (包含 SSMS)
- 用于 SQL Server 的 **ODBC Driver 17**
### 1. 数据库设置
```
# 打开 SSMS 并创建一个名为 "DisasterMIS" 的新数据库
# 然后执行 SQL 脚本:
```
在 SSMS 中打开文件 `DB Querires/table_Creation_Insertion.sql` 并执行它。这将创建全部 16 个表、20 多个索引、7 个触发器、7 个视图,并插入种子数据。
### 2. 后端设置
```
# 导航到 backend 目录
cd backend
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/Linux
# 安装依赖项
pip install -r requirements.txt
# 安装额外所需的 package
pip install python-jose[cryptography]
# 运行 backend 服务器
uvicorn main:app --reload --port 8000
```
API 将在 `http://localhost:8000` 提供
Swagger 文档位于 `http://localhost:8000/docs`
### 3. 前端设置
```
# 导航到 frontend 目录
cd frontend
# 安装依赖项
npm install
# 运行 development 服务器
npm run dev
```
应用程序将在 `http://localhost:3000` 提供
### 默认登录凭据
| 角色 | 邮箱 | 密码 |
|---|---|---|
| 管理员 | admin@disasterMIS.gov.pk | `password123` |
| 紧急情况接线员 | sara.ahmed@disasterMIS.gov.pk | `password123` |
| 现场专员 | usman.t@disasterMIS.gov.pk | `password123` |
| 仓库主管 | zahid.a@disasterMIS.gov.pk | `password123` |
| 财务专员 | tariq.j@disasterMIS.gov.pk | `password123` |
## 📡 API Endpoints
### 身份验证
| 方法 | Endpoint | 描述 |
|---|---|---|
| POST | `/register` | 注册新用户 |
| POST | `/login` | 进行身份验证并接收 JWT |
### 紧急情况管理
| 方法 | Endpoint | 访问权限 |
|---|---|---|
| GET | `/api/emergencies` | 管理员、紧急情况接线员 |
| GET | `/api/incidents` | 管理员、紧急情况接线员 |
| POST | `/api/incidents` | 管理员、紧急情况接线员 |
| PATCH | `/api/incidents/{id}/approve` | 管理员、紧急情况接线员 |
| PATCH | `/api/incidents/{id}/resolve` | 管理员、紧急情况接线员 |
| POST | `/api/incidents/{id}/assign-team` | 管理员、紧急情况接线员 |
| POST | `/api/incidents/{id}/allocate-resource` | 管理员、仓库主管 |
### 团队管理
| 方法 | Endpoint | 访问权限 |
|---|---|---|
| GET | `/api/teams` | 管理员、现场专员、紧急情况接线员 |
| GET | `/api/teams/available` | 管理员、紧急情况接线员 |
| POST | `/api/teams` | 管理员 |
| PATCH | `/api/teams/{id}/status` | 管理员、现场专员 |
### 库存与资源
| 方法 | Endpoint | 访问权限 |
|---|---|---|
| GET | `/api/inventory` | 管理员、仓库主管 |
| POST | `/api/inventory/receive` | 管理员、仓库主管 |
| GET | `/api/inventory/alerts` | 管理员、仓库主管 |
| GET | `/api/inventory/allocations` | 管理员、仓库主管、现场专员 |
| GET | `/api/resources` | 已验证用户 |
| POST | `/api/resources` | 管理员、仓库主管 |
### 医院管理
| 方法 | Endpoint | 访问权限 |
|---|---|---|
| GET | `/api/hospitals` | 已验证用户 |
| GET | `/api/hospitals/status` | 已验证用户 |
| POST | `/api/hospitals` | 管理员 |
| PATCH | `/api/hospitals/{id}/capacity` | 管理员、现场专员 |
| POST | `/api/hospitals/assign-patient` | 管理员、紧急情况接线员、现场专员 |
### 财务管理
| 方法 | Endpoint | 访问权限 |
|---|---|---|
| GET | `/api/financials` | 管理员、财务专员 |
| POST | `/api/financials/transaction` | 管理员、财务专员 |
| GET | `/api/financials/{id}/audit` | 管理员、财务专员 |
### 公共 Endpoints (无身份验证)
| 方法 | Endpoint | 描述 |
|---|---|---|
| GET | `/api/public/locations` | 获取所有位置 |
| GET | `/api/public/stats` | 公共灾害统计数据 |
| POST | `/api/public/report-incident` | 以市民身份报告事件 |
## 👥 基于角色的访问控制
```
┌──────────────────┬──────────────────────────────────────────────┐
│ Administrator │ Full system access, user management, │
│ │ approvals, analytics, performance testing │
├──────────────────┼──────────────────────────────────────────────┤
│ Emergency │ Incident management, team assignments, │
│ Operator │ patient assignments, approval requests │
├──────────────────┼──────────────────────────────────────────────┤
│ Field Officer │ Team status updates, resource tracking, │
│ │ hospital capacity, patient assignments │
├──────────────────┼──────────────────────────────────────────────┤
│ Warehouse │ Inventory management, resource allocation, │
│ Manager │ stock alerts, resource CRUD │
├──────────────────┼──────────────────────────────────────────────┤
│ Finance Officer │ Financial transactions, donation tracking, │
│ │ expense management, audit trails │
└──────────────────┴──────────────────────────────────────────────┘
```
## 📸 系统截图
## 📄 许可证
本项目为学术目的而开发。
## 👨💻 作者
**Umar** — FAST NUCES Islamabad
📧 i243132@isb.nu.edu.pk
标签:AV绕过, FastAPI, SQL Server, 信息管理系统(MIS), 灾害响应管理系统, 自动化攻击, 资源调度