suezcanalxyz/seacommons

GitHub: suezcanalxyz/seacommons

开源海上搜救与态势感知平台,整合遇险信号、漂移轨迹建模和取证文档,为海事救援行动提供端到端决策支持。

Stars: 0 | Forks: 0

# Seacommons Console 开源的海上救援与态势感知平台,连接实时遇险信号、拉格朗日轨迹建模和取证文档记录。 采用 AGPL-3.0 许可证。 ## 链接 - 项目页面:`https://www.suezcanal.xyz/tools/seacommons/` - 在线控制台路径:`https://www.suezcanal.xyz/seacommons/` - 代码库:`https://github.com/suezcanalxyz/seacommons` ## 仓库结构 ``` apps/ api/ FastAPI backend, drift engine, forensic and integrations web/ React/Vite operational console deploy/ Docker, Render and hosting manifests docs/ Methodology, governance and deployment notes scripts/ Local developer entrypoints ``` ## 快速开始 只需 3 条命令即可安装并运行完整的技术栈: ``` # 安装系统依赖(TID 模块必需) sudo apt-get install gcc g++ libcurl4-openssl-dev libgeos-dev git clone https://github.com/suezcanalxyz/seacommons.git cd seacommons cp .env.example .env docker compose -f deploy/docker-compose.yml up -d ``` 通用作战图 (COP) 将在 `http://localhost:3000` 提供。 API 将在 `http://localhost:8000` 提供。 ## 试点运行环境 当前的代码库在低成本试点模式下最为可靠,并配有独立的 Seacommons 仪表板。 推荐的启动方式: ``` docker compose -f deploy/docker-compose.pilot.yml up --build ``` 试点 URL: - 仪表板:`http://localhost:3000` - API:`http://localhost:8000` - API 文档:`http://localhost:8000/docs` 该仪表板独立于公开站点,并使用了轻量的轮询接口。在 Suez Canal 域名上发布时,推荐的公开路径为 `/seacommons/`。 - `/api/v1/ops/summary` - `/api/v1/vessels` - `/api/v1/alerts/geojson` - `/api/v1/weather` - `/api/v1/alert` ## 公开演示 对于托管的公开演示,请勿依赖同源 API 猜测。 - 前端:设置 `VITE_API_BASE=https://your-api-host` - 后端:设置 `MOCK=true` - 后端:设置 `DEMO_PUBLIC_MODE=true` `DEMO_PUBLIC_MODE` 会保持 API 轻量化,并允许 SAR 案例在托管演示没有完整 OpenDrift runtime 时使用 Gaussian 回退机制。 [deploy/render.yaml](./deploy/render.yaml) 中包含了一个 Render 入门蓝图。在 Render 部署该技术栈之前,仍需要将此文件夹存放在 Git 仓库或已发布的镜像源中。 若要进行零成本的在线演示,推荐方案为: - 前端部署在 Cloudflare Pages - 后端部署在 Oracle Cloud Always Free 参见 [docs/DEPLOY_CLOUDFLARE_ORACLE.md](./docs/DEPLOY_CLOUDFLARE_ORACLE.md)。 ## 无 Docker 本地开发 ``` bash scripts/run_dev.sh all ``` 这将启动: - 来自 `apps/api` 的 API - 来自 `apps/web` 的控制台 ## OpenDrift Runtime 后端可以通过专用的 Python 解释器调用真实的 OpenDrift `Leeway` 模拟。 在本代码库中,实际配置如下: - API/后端可以继续在本地默认的 Python 上运行 - OpenDrift 安装在 Python 3.12 上 - `OPENDRIFT_PYTHON` 指向该解释器 当前的集成使用了真实的 OpenDrift 轨迹,并支持可配置的恒定强迫场: - `OPENDRIFT_WIND_X` - `OPENDRIFT_WIND_Y` - `OPENDRIFT_CURRENT_X` - `OPENDRIFT_CURRENT_Y` - `OPENDRIFT_PARTICLES` - `OPENDRIFT_TIMESTEP_SECONDS` - `OPENDRIFT_OUTPUT_SECONDS` 这是一个真实的轨迹引擎,但尚未使用实时的 CMEMS/ERA5 读取器。当您需要来自业务化数据集的海洋和大气强迫场时,这应是下一步的优化方向。 ## 硬件物料清单 (BOM) — 完整船舶节点 | 组件 | 成本 | 功能 | | :--- | :--- | :--- | | Raspberry Pi 4 (4GB) | ~€55 | 主计算单元 | | RTL-SDR v4 dongle | ~€35 | 射频 / 无人机检测 | | VHF 天线 (海事) | ~€25 | AIS + 射频 | | Raspberry Boom HAT (OSOP) | ~€180 | 次声波 0.05–20 Hz | | ADXL355 加速度计 (SPI) | ~€15 | 船体耦合地震监测 | | 压电水听器 | ~€50 | 水下声学 (可选) | | MCP3208 ADC | ~€5 | 仅在不使用 Boom HAT 时需要 | | SSD 256GB USB | ~€30 | 存储 | | IP65 防护箱 | ~€20 | 适应海洋环境 | | **总计 (含 Boom HAT)** | **~€410** | **完整节点** | | **总计 (DIY boom,无 HAT)** | **~€240** | **预算版本** | ## 使用模拟警报进行测试 要测试完整的 pipeline,请提交一个模拟的遇险信号: ``` curl -X POST http://localhost:8000/api/v1/alert \ -H "Content-Type: application/json" \ -d '{ "lat": 35.123, "lon": 15.456, "timestamp": "2026-03-21T12:00:00Z", "persons": 45, "vessel_type": "rubber_boat", "domain": "ocean_sar" }' ``` 这会将漂移计算任务加入队列,对取证数据包进行签名,并将其广播到已配置的见证节点 endpoint。
标签:AV绕过, FastAPI, HTTP/HTTPS抓包, React, Syscalls, 态势感知, 海上救援, 请求拦截, 轨迹建模, 逆向工具