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, 事件管理, 仪表盘, 全栈应用, 安全监控系统, 实时预警, 库, 应急响应, 文件上传, 旅游安全, 旅游预警系统, 游客安全, 用户管理, 电子围栏, 系统健康监测, 统计图表, 自定义脚本, 角色权限控制, 跨平台桌面应用