diya200d/Smart-Tourist-Safety-Monitoring-Incident-Response-System
GitHub: diya200d/Smart-Tourist-Safety-Monitoring-Incident-Response-System
一套基于桌面端的旅游安全监测与事件响应系统,解决游客在出行中的安全预警与事件上报问题。
Stars: 0 | Forks: 0
# 智能旅游安全监控与事件响应系统
一个使用 React、Node.js 和 MySQL 构建的综合性桌面应用程序,用于监控旅游安全和管理事件响应。
## 功能
### 🔐 认证与授权
- 用户注册与登录
- 基于角色的访问控制(管理员、安全官员、游客)
- 安全的 JWT 令牌认证
- 个人资料管理
### 📊 仪表板
- 实时安全统计数据
- 带有图表和图形的事件概览
- 最近活动监控
- 系统健康指标
### 🚨 事件管理
- 报告包含详细信息的新事件
- 跟踪事件状态(已报告、调查中、已解决、已关闭)
- 严重级别(低、中、高、严重)
- 事件类型(盗窃、事故、医疗、走失、自然灾害、其他)
- 基于位置的事件跟踪
- 文件附件支持
### 📍 位置管理
- 添加和管理旅游地点
- 地点类型(海滩、山脉、城市、纪念碑、公园、其他)
- 安全级别评估
- GPS 坐标支持
- 基于位置的事件统计
### 🛡️ 安全警报
- 创建和管理安全警报
- 警报类型(天气、交通、安全、医疗、通用)
- 严重级别(信息、警告、危险)
- 位置特定的警报
- 过期管理
### 👥 用户管理(管理员)
- 用户账户管理
- 角色分配
- 账户激活/停用
- 用户活动监控
### 🖥️ 桌面应用程序
- 使用 Electron 构建的跨平台桌面应用
- 原生菜单集成
- 键盘快捷键
- 系统托盘支持
- 自动更新准备就绪
## 技术栈
### 前端
- **React 18** - UI 框架
- **React Router** - 客户端路由
- **Styled Components** - CSS-in-JS 样式
- **React Icons** - 图标库
- **Recharts** - 数据可视化
- **React Hot Toast** - 通知
- **Axios** - HTTP 客户端
### 后端
- **Node.js** - 运行时环境
- **Express.js** - Web 框架
- **MySQL** - 数据库
- **JWT** - 认证
- **Bcrypt** - 密码哈希
- **Joi** - 数据验证
- **Helmet** - 安全头
- **CORS** - 跨域资源共享
### 桌面
- **Electron** - 桌面应用框架
- **Electron Builder** - 应用打包
## 安装与设置
### 先决条件
- Node.js(v16 或更高版本)
- MySQL(v8.0 或更高版本)
- Git
### 1. 克隆仓库
```
git clone https://github.com/your-username/smart-tourist-safety.git
cd smart-tourist-safety
```
### 2. 安装依赖
```
# 安装根依赖
npm install
# 安装后端依赖
cd backend
npm install
# 安装前端依赖
cd ../frontend
npm install
# 返回根目录
cd ..
```
### 3. 数据库设置
1. 创建 MySQL 数据库:
```
CREATE DATABASE smart_tourist_safety;
```
2. 导入数据库架构:
```
mysql -u root -p smart_tourist_safety < backend/database/schema.sql
```
### 4. 环境配置
在 `backend` 目录中创建 `.env` 文件:
```
# 数据库配置
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=smart_tourist_safety
# JWT 配置
JWT_SECRET=your_super_secret_jwt_key_here
JWT_EXPIRE=7d
# 服务器配置
PORT=5000
NODE_ENV=development
```
### 5. 启动应用程序
#### 开发模式(Web)
```
# 同时启动前端和后端
npm run dev
# 或单独启动:
# 仅后端
npm run server
# 仅前端
npm run client
```
#### 桌面应用程序
```
# 在开发模式下启动桌面应用
npm run electron-dev
# 构建并打包桌面应用
npm run dist
```
## 用法
### 默认登录凭据
- **管理员**: adm***@smarttourist.com / password
- **用户**: use***@example.com / password
### 开始使用
1. 启动应用程序
2. 注册新账户或使用演示凭据
3. 浏览仪表板查看安全统计数据
4. 报告事件或创建安全警报
5. 管理地点和用户账户(仅管理员)
### 关键功能用法
#### 报告事件
1. 导航到“事件”页面
2. 点击“报告事件”
3. 填写事件详细信息:
- 标题和描述
- 事件类型和严重级别
- 地点(如适用)
- GPS 坐标(可选)
4. 提交报告
#### 创建安全警报
1. 进入“安全警报”页面
2. 点击“创建警报”
3. 提供警报信息:
- 标题和消息
- 警报类型和严重级别
- 目标地点
- 过期日期
4. 发布警报
#### 管理地点
1. 访问“地点”页面
2. 添加新地点,包括:
- 名称和地址
- 地点类型
- 安全级别评估
- GPS 坐标
- 描述
3. 编辑或删除现有地点
## API 端点
### 认证
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/login` - 用户登录
- `GET /api/auth/profile` - 获取用户资料
- `PUT /api/auth/profile` - 更新用户资料
### 事件
- `GET /api/incidents` - 获取事件(带过滤)
- `GET /api/incidents/:id` - 获取单个事件
- `POST /api/incidents` - 创建事件
- `PUT /api/incidents/:id` - 更新事件
- `GET /api/incidents/stats/overview` - 获取事件统计
### 地点
- `GET /api/locations` - 获取地点(带过滤)
- `GET /api/locations/:id` - 获取单个地点
- `POST /api/locations` - 创建地点
- `PUT /api/locations/:id` - 更新地点
- `DELETE /api/locations/:id` - 删除地点
- `GET /api/locations/stats/overview` - 获取地点统计
## 数据库架构
该应用程序使用以下主要表:
- `users` - 用户账户和认证
- `locations` - 旅游地点和安全数据
- `incidents` - 事件报告和跟踪
- `safety_alerts` - 安全警报和通知
- `emergency_contacts` - 紧急联系信息
- `safety_tips` - 安全提示和指南
## 安全特性
- 使用 bcrypt 进行密码哈希
- JWT 令牌认证
- 基于角色的访问控制
- 使用 Joi 进行输入验证
- 防止 SQL 注入
- CORS 配置
- 使用 Helmet 设置安全头
- 速率限制
## 开发
### 项目结构
```
smart-tourist-safety/
├── backend/ # Node.js backend
│ ├── config/ # Database configuration
│ ├── middleware/ # Express middleware
│ ├── routes/ # API routes
│ ├── database/ # Database schema
│ └── server.js # Main server file
├── frontend/ # React frontend
│ ├── public/ # Static files
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── contexts/ # React contexts
│ │ └── App.js # Main app component
│ └── package.json
├── electron/ # Electron desktop app
│ ├── main.js # Main process
│ └── preload.js # Preload script
└── package.json # Root package.json
```
### 脚本
- `npm run dev` - 启动开发服务器
- `npm run server` - 仅启动后端
- `npm run client` - 仅启动前端
- `npm run electron` - 启动桌面应用
- `npm run electron-dev` - 在开发模式下启动桌面应用
- `npm run build` - 构建前端用于生产
- `npm run dist` - 构建桌面应用用于分发
## 许可证
本项目根据 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## 支持
如有支持需求,请发送电子邮件至 support@smarttourist.com 或在 GitHub 仓库中创建问题。
## 路线图
- [ ] 使用 WebSocket 实现实时通知
- [ ] 移动应用伴侣
- [ ] 高级分析和报告
- [ ] 与外部安全 API 集成
- [ ] 多语言支持
- [ ] 离线模式支持
- [ ] 高级地图集成
- [ ] AI 驱动的风险评估
标签:Electron, GNU通用公共许可证, GPS定位, JWT认证, MITM代理, Node.js, RBAC, React, SEO旅游安全, Syscalls, 事件管理, 仪表盘, 全栈应用, 安全监控系统, 实时预警, 库, 应急响应, 文件上传, 旅游安全, 旅游预警系统, 游客安全, 用户管理, 电子围栏, 系统健康监测, 统计图表, 自定义脚本, 角色权限控制, 跨平台桌面应用