umarsidiqui04/AI-Powered-Disaster-Response-MIS-main

GitHub: umarsidiqui04/AI-Powered-Disaster-Response-MIS-main

一套面向巴基斯坦灾害响应协调的全栈管理信息系统,集成了实时事件追踪、救援团队调度、多仓库库存管理、医院病床协同和财务监管等核心功能。

Stars: 0 | Forks: 0

# 🚨 AI 驱动的灾害响应管理信息系统 这是一个专为协调巴基斯坦各地灾害响应行动而设计的全栈式**管理信息系统 (MIS)**。该系统支持实时事件追踪、救援团队协调、资源/库存管理、医院协同以及基于角色的访问控制的财务监管。 ![Next.js](https://img.shields.io/badge/Next.js-16-black?logo=next.js) ![FastAPI](https://img.shields.io/badge/FastAPI-0.136-009688?logo=fastapi) ![SQL Server](https://img.shields.io/badge/SQL%20Server-2019+-CC2927?logo=microsoftsqlserver) ![TypeScript](https://img.shields.io/badge/TypeScript-5.0-3178C6?logo=typescript) ![TailwindCSS](https://img.shields.io/badge/TailwindCSS-4.0-06B6D4?logo=tailwindcss) ## 📋 目录 - [功能](#-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), 灾害响应管理系统, 自动化攻击, 资源调度