Mahek2710/Sahaay

GitHub: Mahek2710/Sahaay

Sahaay 是一个基于角色的实时紧急事件报告与响应协调平台,解决高压场景下市民快速上报和救援资源统一调度的问题。

Stars: 0 | Forks: 0

# Sahaay — 紧急可视化与响应平台 这是一个为高紧急、时间紧迫情况构建的实时紧急报告与响应平台。其设计理念基于这样一个假设:处于压力下的用户需要以尽可能少的步骤来报告事件并获取帮助。 ## 技术栈 - **前端** — React (Vite)、shadcn/ui、Mapbox GL JS - **后端** — Node.js、Express - **数据库** — MongoDB - **实时通信** — Socket.io - **测试** — Selenium (Java + TestNG)、Playwright、Cypress ## 功能 **市民门户** - 单屏事件报告 — 类别、严重程度、位置、备注 - 交互式 Mapbox 地图,用于精确定位 - 根据事件类型动态生成的表单字段 - 实时提交并即时确认 **响应工作台** - 带有按严重程度颜色编码标记的实时地图 - 包含状态管理的事件详情视图 - 响应能力追踪(可用 / 已部署 / 不可用) - 通过 Socket.io 在所有打开的会话中实时更新 ## 测试 该应用程序拥有一个专门的 QA 自动化测试套件,涵盖功能测试、跨浏览器测试和 API 测试。 **Selenium (Java + TestNG)** — 使用页面对象模型(Page Object Model)模式的功能 UI 测试。涵盖身份验证流程、基于角色的访问控制(在 URL 级别进行验证,而不仅是 UI 层面)、事件提交和表单验证。包含通过 TestNG `@DataProvider` 实现的由数据驱动的测试,具有 20 多种输入组合,以及对所有输入字段的安全探测(SQL 注入、XSS)。 **Playwright** — 在 Chromium、Firefox 和 WebKit 上并行运行的跨浏览器测试。包含视觉回归测试(截图差异对比)、用于测试后端故障下 UI 行为的网络拦截,以及通过 axe-playwright 进行的可访问性检查。 **Cypress** — 针对所有后端 endpoint 的 API 契约测试。验证响应结构、HTTP 状态码、JWT 格式以及安全属性(例如,响应 body 中绝不可返回密码字段)。自定义的 `cy.loginAs()` 命令抽象了跨测试文件的身份验证。 所有三个测试套件都已接入 GitHub Actions CI pipeline,在每次 push 时运行,支持并行执行并生成 Allure 报告。 ## 数据模型 **Incident** ``` category String detail String severity Low | Medium | High | Critical notes String (optional) lat, lng Number timestamp Date status Active | Resolved ``` **Response Capability** ``` domain String description String status Available | Deployed | Unavailable lat, lng Number ``` ## 设置 **后端** ``` cd backend npm install # .env (提供默认值) # MONGODB_URI=mongodb://localhost:27017/sahaay # FRONTEND_URL=http://localhost:5173 # PORT=3000 npm run dev ``` **前端** ``` cd frontend npm install npm run dev ``` 前端 → `http://localhost:5173` 后端 → `http://localhost:3000` ## 设计思路 深色与浅色高对比度主题切换。大面积的触控区域。无装饰性元素。红色被专门保留用于标识“严重”(Critical)级别。该界面的设计基于这样一个假设:使用它的人正处于压力之中 —— 每一次交互只需一步,而不是三步。
标签:MITM代理, RBAC权限控制, 事件报告, 实时地图, 应急救援平台, 特征检测, 自定义脚本