How jeet8499/oceanwatch works
OceanWatch AI is a post-event oil-spill forensics product: investigators review a case, inspect satellite-derived slick evidence and drift, examine AIS vessel histories, and compare ranked attribution candidates in a GIS dashboard. The README documents a processing sequence from Sentinel-1 imagery through physical validation, drift, AIS matching and anomaly analysis to attribution; only the drift implementation and portions of the demo/API and map wiring were sampled. The graph preserves documented stages and UI branches, but omits uncertain implementation-level links.
Main entry points: AppContext.tsx Case and playback state · drift.py Drift ensemble · App.tsx SPA routes · EnnoreDemoScreen.tsx Case investigation
Components 23
Investigator dashboard
- SPA routes
frontend/src/App.tsx - Case investigation
frontend/src/screens/EnnoreDemoScreen.tsx - GIS map
frontend/src/components/map/MapLibreMap.tsx - Vessel tracking
frontend/src/screens/VesselTrackingScreen.tsx - Analysis screens
frontend/src/screens - Case and playback state
frontend/src/context/AppContext.tsx - AIS time state
frontend/src/utils/ais.ts - API client
frontend/src/services/api.ts
Demo API and assets
- FastAPI app
backend/app/main.py - Demo case endpoint
backend/app/api/demo.py - Incident endpoints
backend/app/api/incidents.py - Case artifacts
artifacts/demo/ennore
Forensic processing
- SAR preprocessing and readers
backend/app/worker/stages - Slick detection
backend/app/worker/stages/ship_detection.py - Physical validation
backend/app/worker/stages/cfar.py - Drift ensemble
backend/app/worker/stages/drift.py - AIS reconstruction
scripts - AIS anomaly analysis
backend/app/worker/stages/attribution/ais.py - Candidate attribution
backend/app/worker/stages/attribution
Evidence sources
- Sentinel-1 imagery
- Wind and currents
- AIS tracks
Other components
- Investigator
Connections 25
- Investigator → SPA routes: opens dashboard
- SPA routes → Case investigation: routes case
- Case investigation → Case and playback state: reads case state
- Case and playback state → Demo case endpoint: fetches demo
- Case and playback state → Case artifacts: fetches playback
- Case investigation → GIS map: renders scene
- GIS map → Case and playback state: reads layers and data
- GIS map → AIS time state: resolves vessel state
- Vessel tracking → AIS time state: resolves vessel state
- SPA routes → Analysis screens: routes analysis
- API client → FastAPI app: requests API
- FastAPI app → Demo case endpoint: dispatches demo route
- FastAPI app → Incident endpoints: dispatches incident route
- Demo case endpoint → Case artifacts: reads and serves artifacts
- Sentinel-1 imagery → SAR preprocessing and readers: supplies scenes
- SAR preprocessing and readers → Slick detection: prepares imagery
- Slick detection → Physical validation: produces candidate slicks
- Physical validation → Drift ensemble: passes validated slicks
- Wind and currents → Drift ensemble: supplies vectors
- AIS tracks → AIS reconstruction: supplies tracks
- Drift ensemble → AIS reconstruction: defines origin window
- AIS reconstruction → AIS anomaly analysis: provides trajectories
- AIS anomaly analysis → Candidate attribution: provides anomaly evidence
- Drift ensemble → Candidate attribution: provides drift evidence
- Candidate attribution → Case artifacts: ranks candidates