Hikaritora/RescueNET

GitHub: Hikaritora/RescueNET

RescueNet是一款基于Django的事件管理和应急响应系统,旨在帮助调度员和救援队伍高效管理紧急事件。

Stars: 0 | Forks: 2

# RescueNet 一个使用 Django 构建的全面**事件管理和应急响应系统**。RescueNet 允许调度员和救援队伍高效地管理紧急事件,协调资源,并实时跟踪响应操作。 ![RescueNet](https://img.shields.io/badge/Django-6.0-green) ![Python](https://img.shields.io/badge/Python-3.11%2B-blue) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16%2B-blue) image ## 🌟 功能 - **事件管理**:创建、分配、跟踪和关闭紧急事件 - **资源管理**:管理救护车、警察单位、消防车和技术设备 - **实时地图**:Leaflet 的交互式地图界面,用于事件和资源位置跟踪 - **动态资源分配**:直接在地图上拖放资源分配到事件 - **基于角色的访问控制**:三个用户角色(救援人员、调度员、管理员)具有细粒度权限 - **分析和报告**:显示事件类型、状态和资源可用性的综合图表 - **数据导出**:将事件报告导出到 CSV - **演示数据种植**:内置命令用于测试填充示例数据 ## 📋 用户角色与权限 | 角色 | 功能 | |------|---| | **救援人员** | 查看仪表板、事件、资源和报告(只读) | | **调度员** | 创建事件、分配/取消分配资源、关闭事件 | | **管理员** | 完全访问 + 添加/删除资源,管理资源可用性 | 查看[ROLE_PERMISSIONS.md](ROLE_PERMISSIONS.md)以获取详细权限。 ## 🏗️ 技术栈 - **后端**:Django 6.0.4 - **数据库**:PostgreSQL 16+(使用 psycopg2) - **前端**:HTML5、CSS3、JavaScript(Vanilla + Chart.js、Leaflet) - **地图**:Leaflet 1.9.4、Carto、标记由 [@pointhi](https://github.com/pointhi) - **图表**:Chart.js(用于分析仪表板) - **服务器**:ASGI(与 daphne 兼容的 Uvicorn) ## 📦 先决条件 在安装 RescueNet 之前,请确保您有: 1. **Python 3.11 或更高版本** - 从:https://www.python.org/downloads/ 下载 - 在安装过程中,请勾选“将 Python 添加到 PATH” 2. **PostgreSQL 16、17 或 18** - 从:https://www.postgresql.org/download/ 下载 - 记住您为 `postgres` 用户设置的密码 ## 🚀 安装 ### 选项 1:自动安装(推荐) 开始的最简单方法是使用内置的设置脚本: ``` python setup.py ``` 这将: 1. 创建一个虚拟环境 2. 安装所有依赖项 3. 设置 PostgreSQL 数据库 4. 运行迁移 5. 创建一个演示超级用户(用户名:`admin`,密码:`admin`) 6. 可选:种植演示数据 7. 可选:启动开发服务器 **当提示时**,按 Enter 键接受默认值,或根据需要自定义。 ### 选项 2:手动安装 如果您喜欢手动设置: #### 1. 克隆或导航到项目目录 ``` cd RescueNet ``` #### 2. 创建并激活虚拟环境 **在 Windows(PowerShell)中**: ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 ``` **在 macOS/Linux 中**: ``` python3 -m venv .venv source .venv/bin/activate ``` #### 3. 安装依赖项 ``` pip install -r requirements.txt ``` #### 4. 在项目根目录中创建 `.env` 文件 ``` DATABASE_NAME=rescuenet DATABASE_USER=postgres DATABASE_PASSWORD=your_postgres_password DATABASE_HOST=localhost DATABASE_PORT=5432 DJANGO_SECRET_KEY=your_secret_key_here RESCUENET_SUPERUSER_NAME=admin RESCUENET_SUPERUSER_EMAIL=admin@example.com RESCUENET_SUPERUSER_PASSWORD=admin ``` #### 5. 创建 PostgreSQL 数据库 ``` psql -U postgres -c "CREATE DATABASE rescuenet;" ``` #### 6. 运行迁移 ``` python manage.py migrate ``` #### 7. 创建超级用户 ``` python manage.py createsuperuser ``` #### 8. (可选)种植演示数据 ``` python manage.py seed_database --admins 3 --dysp 50 --rescuers 50 --resources 60 --incidents 200 ``` #### 9. 启动开发服务器 ``` python manage.py runserver ``` ## 🎯 快速入门 1. **启动开发服务器**: python manage.py runserver 2. **打开您的浏览器并导航到**: - 主应用:http://127.0.0.1:8000/ - 管理面板:http://127.0.0.1:8000/admin/ 3. **使用演示凭据登录**: - 用户名:`admin` - 密码:`admin` 4. **探索仪表板**: - 查看活动事件 - 创建新事件 - 使用交互式地图分配资源 - 查看分析和报告 ## 📁 项目结构 ``` RescueNet/ ├── core/ # Django project settings │ ├── settings.py # Main Django configuration │ ├── urls.py # URL routing │ ├── wsgi.py # WSGI application │ └── asgi.py # ASGI application │ ├── management/ # Main Django app │ ├── migrations/ # Database migrations │ ├── static/ │ │ ├── css/ # Static stylesheets │ │ └── js/ # Static JavaScript (map-picker) │ ├── templates/ │ │ └── management/ # HTML templates │ ├── models.py # Database models (User, Incident, Resource) │ ├── views.py # View logic │ ├── forms.py # Django forms │ ├── admin.py # Django admin configuration │ └── management/ │ └── commands/ │ └── seed_database.py # Demo data seeding command │ ├── setup.py # Automated installation script ├── manage.py # Django management CLI ├── requirements.txt # Python dependencies ├── README.md # This file ├── ROLE_PERMISSIONS.md # Detailed role documentation ├── LICENSE # License └── .env # Environment configuration (created during setup) ``` ## 🗂️ 关键模型 ### 用户 - 扩展 Django 的 AbstractUser 的自定义用户模型 - 角色:`rescuer`、`dispatcher`、`admin` - 基于角色的权限检查 ### 事件 - 类型(11 个类别:道路事故、医疗紧急情况、火灾等) - 优先级(低、中、高、危急) - 状态(已报告、进行中、已关闭) - 位置(纬度/经度) - 时间戳和报告者跟踪 ### 资源 - 类型(救护车、警察、消防车、技术) - 专业化(根据类型而异) - 状态(可用、已分配、不可用) - 位置跟踪和事件分配 ## 📊 分析 **报告和存档**部分提供了四个交互式图表的视觉分析: 1. **按类型的事件**(饼图)- 具有独特颜色调色的不同事件类型的分布 2. **事件状态**(柱状图)- 已报告、进行中和已关闭事件的计数 3. **资源类型**(饼图)- 资源类型的分布 4. **资源状态**(柱状图)- 可用、已分配和不可用资源的计数 ## 🔧 可用命令 ### 运行开发服务器 ``` python manage.py runserver ``` ### 创建演示数据 ``` python manage.py seed_database --admins 3 --dysp 50 --rescuers 50 --resources 60 --incidents 200 ``` ### 应用迁移 ``` python manage.py migrate ``` ### 创建新超级用户 ``` python manage.py createsuperuser ``` ### 访问 Django 管理面板 访问:http://127.0.0.1:8000/admin/ ## 🔐 安全注意事项 - 所有密码都必须通过环境变量(`.env`)配置 - 权限检查在所有修改端点上强制执行 - UI 隐藏用户不应执行的操作,但保护始终在服务器端 - 在所有表单上启用 CSRF 保护 - 数据库凭据绝不应提交到版本控制 ## 📝 环境变量 `.env` 文件(在安装期间创建)包含: ``` DATABASE_NAME # PostgreSQL database name DATABASE_USER # PostgreSQL user DATABASE_PASSWORD # PostgreSQL user password DATABASE_HOST # PostgreSQL host (default: localhost) DATABASE_PORT # PostgreSQL port (default: 5432) DJANGO_SECRET_KEY # Django secret key (auto-generated) RESCUENET_SUPERUSER_NAME # Default admin username RESCUENET_SUPERUSER_EMAIL # Default admin email RESCUENET_SUPERUSER_PASSWORD # Default admin password ``` ## 🐛 故障排除 ### 数据库连接错误 - 确保 PostgreSQL 正在运行:`psql -U postgres -c "\l"` - 检查 `.env` 是否具有正确的数据库凭据 - 验证数据库是否存在:`psql -U postgres -c "\l rescuenet"` ### 虚拟环境未激活 **Windows**:使用 `.\venv\Scripts\Activate.ps1`(不是 `.venv\Scripts\...`) **macOS/Linux**:使用 `source .venv/bin/activate` ### 端口 8000 已被占用 ``` python manage.py runserver 8001 ``` ### 丢失依赖项 ``` pip install -r requirements.txt --upgrade ``` ## 📚 其他资源 - [Django 文档](https://docs.djangoproject.com/) - [PostgreSQL 文档](https://www.postgresql.org/docs/) - [Leaflet.js 文档](https://leafletjs.com/reference.html) - [Chart.js 文档](https://www.chartjs.org/docs/latest/) ## 👥 创建者 - [@Hikaritora](https://github.com/Hikaritora) - [@Private-AS](https://github.com/Private-AS) - [@ToTenPatryk](https://github.com/ToTenPatryk) ## 📄 许可证 本项目采用 MIT 许可证 — 请参阅[许可证](https://github.com/Hikaritora/RescueNET/blob/main/LICENSE)文件以获取详细信息。 这是一个大学课程项目。我们与任何名为“RescueNet”的其他项目或公司无关联。 **用❤️为应急管理系统制作**
标签:DFIR, Django, DNS解析, PostgreSQL, Python, 事故管理, 代码示例, 后端开发, 地图服务, 实时地图, 应急管理系统, 开源项目, 救援团队, 数据分析, 数据可视化, 数据导出, 数据库管理, 无后门, 测试用例, 紧急事件响应, 角色权限控制, 调度系统, 资源管理, 逆向工具