kaur-jass/Sahayak
GitHub: kaur-jass/Sahayak
一个全栈灾害响应与志愿者协调平台,通过实时事件报告、AI 辅助评估和基于角色的任务管理来优化紧急救援流程。
Stars: 1 | Forks: 2
# Sahayak
基于 AI 的灾害响应与志愿者协调平台
## 目录
1. 引言
2. 问题陈述
3. 目标
4. 系统架构
5. 核心功能
6. 工作流程
7. 技术栈
8. 项目结构
9. 数据库设计
10. API 端点
11. 安装指南
12. 环境变量
13. 部署
14. 安全性考量
15. 当前实现
16. 未来增强
17. 作者
# 1. 引言
Sahayak 是一个全栈灾害响应与志愿者协调平台,旨在改善自然灾害、事故、医疗急救、火灾、洪水和基础设施故障等突发事件的应急管理。
该平台允许市民报告紧急情况,使管理员能够验证并优先处理事件,自动分配合适的志愿者,跟踪任务执行情况,收集任务完成的证明,并通过管理审查流程验证已完成的任务。
该系统旨在缩短响应时间,提高志愿者利用率,并在整个灾害管理生命周期中提供透明度。
# 2. 问题陈述
在紧急情况下,信息通常分散在多个渠道中。市民难以联系到响应人员,管理员缺乏集中的可见性,而志愿者的分配是人工进行的,未考虑技能、可用性或位置。
现有系统通常存在以下问题:
* 事件报告延迟
* 志愿者协调不力
* 缺乏基于凭证的验证
* 态势感知能力有限
* 没有集中的监控仪表板
* 人工分配任务
Sahayak 通过集成的紧急响应平台来解决这些挑战。
# 3. 目标
Sahayak 的主要目标是:
* 实现快速紧急报告
* 提供 AI 辅助的事件评估
* 提高志愿者分配效率
* 保持基于凭证的问责制
* 为管理员提供集中监控
* 减少紧急响应延误
* 提高灾害管理透明度
# 4. 系统架构
该平台采用客户端-服务器架构。
市民门户
↓
REST API
↓
Node.js / Express 后端
↓
MongoDB Atlas
其他集成:
* 使用 Cloudinary 进行图像存储
* 使用 Socket.IO 进行实时通信
* 使用 Geolocation API 进行事件映射
* 使用 AI 分类引擎进行紧急情况分析
# 5. 核心功能
## 市民门户
市民门户允许用户直接从现场报告紧急情况。
功能:
* 紧急情况报告提交
* GPS 坐标捕获
* 事件分类
* 证据图像上传
* 基于 AI 的事件分析
* 严重程度评估
* 事件跟踪
## 管理仪表板
管理仪表板提供集中的灾害管理功能。
功能:
* 审查紧急报告
* 批准或拒绝事件
* 监控活动紧急情况
* 分配志愿者
* 审查凭证提交
* 验证已完成的任务
* 跟踪事件状态
## 志愿者仪表板
志愿者仪表板可实现高效的任务管理。
功能:
* 查看已分配的任务
* 任务状态跟踪
* 联系受影响的市民
* 上传完成凭证
* 接收通知
* 更新可用性状态
## 验证系统
确保问责制和透明度。
功能:
* 凭证图像提交
* Cloudinary 集成
* 管理验证
* 任务关闭工作流
## 通知系统
支持实时通信。
功能:
* 分配通知
* 验证通知
* 任务状态更新
* 紧急警报
# 6. 工作流程
## 事件报告
市民
→ 提交紧急报告
→ 上传证据
→ AI 分析
→ 生成严重性评分
## 事件审查
AI 分析
→ 管理仪表板
→ 报告审查
→ 批准决定
## 志愿者分配
批准的报告
→ 志愿者推荐引擎
→ 创建任务
→ 志愿者通知
## 任务完成
志愿者
→ 完成分配的任务
→ 上传凭证图像
→ 提交验证请求
## 验证
验证队列
→ 管理员审查
→ 批准 / 拒绝凭证
→ 任务关闭
# 7. 技术栈
## 前端
框架:
* React.js
构建工具:
* Vite
路由:
* React Router DOM
样式:
* Tailwind CSS
图标:
* Lucide React
实时通信:
* Socket.IO Client
## 后端
运行环境:
* Node.js
框架:
* Express.js
身份验证:
* JWT
文件上传:
* Multer
实时通信:
* Socket.IO
## 数据库
数据库:
* MongoDB Atlas
ODM:
* Mongoose
## 云服务
Cloudinary
用途:
* 证据图像存储
* 任务凭证存储
# 8. 项目结构
Sahayak/
client/
src/
components/
pages/
Admin/
Volunteer/
Citizen/
services/
utils/
App.jsx
main.jsx
public/
package.json
server/
models/
Report.js
Volunteer.js
Task.js
Verification.js
Notification.js
User.js
routes/
reports.js
tasks.js
volunteers.js
notifications.js
verifications.js
middleware/
uploads/
utils/
server.js
package.json
README.md
# 9. 数据库设计
## Report 集合
存储紧急报告。
字段:
* _id
* name
* phone
* location
* latitude
* longitude
* category
* description
* imageUrl
* severityScore
* confidence
* status
* createdAt
## Volunteer 集合
存储志愿者信息。
字段:
* _id
* name
* email
* phone
* skills
* location
* availability
* rating
* tasksCompleted
## Task 集合
存储分配的任务。
字段:
* _id
* reportId
* volunteerId
* status
* proofImageUrl
* createdAt
## Verification 集合
存储凭证审查记录。
字段:
* _id
* reportId
* volunteerId
* volunteerName
* proofImageUrl
* aiConfidence
* status
## Notification 集合
存储用户通知。
字段:
* _id
* volunteerId
* title
* message
* type
* read
* createdAt
# 10. API 端点
## 报告
POST /api/reports
创建紧急报告
GET /api/reports
获取所有报告
PATCH /api/reports/:id
批准或更新报告状态
## 志愿者
GET /api/volunteers
获取志愿者
POST /api/volunteers
注册志愿者
PATCH /api/volunteers/:id
更新志愿者状态
## 任务
GET /api/tasks
获取任务
GET /api/tasks/volunteer/:id
获取志愿者任务
POST /api/tasks/:id/complete
完成任务并上传凭证
PATCH /api/tasks/:id/verify
验证已完成的任务
## 通知
GET /api/notifications/:volunteerId
获取志愿者通知
PATCH /api/notifications/:id/read
将通知标记为已读
# 11. 安装指南
克隆仓库
git clone https://github.com/yourusername/sahayak.git
cd sahayak
安装后端依赖
cd server
npm install
npm start
安装前端依赖
cd client
npm install
npm run dev
# 12. 环境变量
后端
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
前端
VITE_API_URL=http://localhost:5000
# 13. 部署
前端
推荐平台:
* Vercel
* Netlify
后端
推荐平台:
* Render
* Railway
* AWS EC2
数据库
* MongoDB Atlas
存储
* Cloudinary
# 14. 安全性考量
已实现:
* 基于 JWT 的身份验证
* 受保护的管理路由
* 输入验证
* 使用 Cloudinary 进行安全图像存储
计划中:
* 速率限制
* Refresh token 轮换
* 基于角色的访问控制
* 审计日志
# 15. 当前实现
已完成:
* 紧急报告
* AI 事件分析
* 管理员审查队列
* 志愿者分配
* 志愿者仪表板
* Cloudinary 凭证上传
* 验证队列
* 任务验证
* MongoDB 集成
* 通知存储
* 事件映射
# 16. 未来增强
计划功能:
* 实时通知
* AI 聊天机器人助手
* 重复报告检测
* 热力图可视化
* 灾害预测分析
* 多语言支持
* 移动应用程序
* 政府集成
* 短信通知
# 17. 作者
Jaspreet Kaur
工程技术学士(信息技术)
Dr. B. R. Ambedkar National Institute of Technology, Jalandhar
# 许可证
本项目出于教育、研究和社会影响目的而开发。
标签:MITM代理, Streamlit, 任务分配, 地理定位地图, 实时通知, 应急救援平台, 志愿者协调, 自定义脚本, 访问控制