chunky152/emergency-response
GitHub: chunky152/emergency-response
乌干达紧急响应系统(UDERS)是一个基于 Express.js 和 MongoDB 的全栈应急事件上报与调度平台,让市民能便捷地报告事故并由调度中心统一分派给对应机构处理。
Stars: 0 | Forks: 0
# UDERS — 乌干达紧急响应系统
**版本 2.0 | Express.js + MongoDB 后端**
## 项目结构
```
emergency-response/
├── backend/ ← Express.js API server
│ ├── index.js ← Server entry point
│ ├── seed.js ← Seed agencies (essential for dispatch)
│ ├── clear-db.js ← Wipe incidents/logs for a clean state
│ ├── .env ← Environment config
│ ├── models/ ← Mongoose schemas
│ ├── routes/ ← API route handlers
│ └── uploads/ ← Media file storage (auto-created)
│
└── frontend/ ← Static assets (served by Express)
├── citizen.html ← Public reporting app
├── dispatch.html ← Dispatch dashboard
├── styles.css ← Shared stylesheet
└── app.js ← Frontend logic
```
## 近期更新与改进
- **逆地理编码**:集成了 OpenStreetMap Nominatim API。所有新报告现在都会根据 GPS 坐标自动包含人类可读的地址(例如,“Nakawa, Kampala”)。
- **Nodemon 集成**:添加了 `npm run dev` 脚本,在文件更改时自动重启,从而改善开发人员体验。
- **简化调度**:操作员现在可以在模态框中一键调度单位。选择后立即触发该操作。
- **门户解耦**:
- 公民页面现在仅用于报告(已移除调度链接)。
- 调度门户仅用于管理(已移除公民报告链接)。
- **整洁的界面**:从 UI 和后端日志中移除了所有开发需求标签(`REQ-X`),呈现专业外观。
- **改进的反馈**:添加了 Toast 通知系统,为提交和调度操作提供清晰的确认。
- **Bug 修复**:修正了 MongoDB 连接字符串问题,并优化了成功提交后的表单重置逻辑。
## 前置条件
- **Node.js** v18+
- 在本地端口 27017 上运行的 **MongoDB**(例如,通过 Docker 运行:`docker run -d -p 27017:27017 --name mongo mongo`)
## 运行方式
### 1. 安装依赖
```
cd backend
npm install
```
### 2. 配置环境
```
# 检查或创建 .env
cp .env.example .env
```
### 3. 启动开发服务器
```
npm run dev
```
## API 接口
| 方法 | 接口 | 描述 |
|--------|----------------------------------|----------------------------|
| GET | `/api/incidents` | 列出所有事件 |
| GET | `/api/incidents/stats` | 统计卡片摘要 |
| GET | `/api/incidents/:id` | 单个事件详情 |
| POST | `/api/incidents` | 创建事件(包含媒体) |
| PATCH | `/api/incidents/:id/dispatch` | 立即调度机构 |
| PATCH | `/api/incidents/:id/resolve` | 标记事件为已解决 |
| GET | `/api/agencies` | 列出可用机构 |
| GET | `/api/alerts` | 实时警报日志 |
## 架构
```
citizen.html / dispatch.html
│
│ fetch() — RESTful JSON API
▼
Express.js (backend/index.js)
│
────┼───────────────────────────
Routes (incidents, agencies, alerts)
│
▼
MongoDB (emergency database)
```
标签:CISA项目, CMS安全, CSS, Express.js, GIS, GNU通用公共许可证, GPS定位, HTML, JavaScript, MITM代理, MongoDB, Mongoose, Node.js, Nodemon, Nominatim API, OpenStreetMap, 乌干达, 事件报告, 公众报警, 公共服务, 前后端分离, 地理信息系统, 多模态安全, 应急响应系统, 报警平台, 政务系统, 数据可视化, 文件上传, 灾难响应, 紧急救援, 自定义脚本, 请求拦截, 调度指挥系统, 逆向地理编码