Files
ocean-cleanup/server/src/routes/analyticsRoutes.ts
Paul Bailey 052ba46bdc feat: implement hotspot calculation system with scheduled jobs
- Add hotspot calculation methods to analytics service
- Implement MySQL spatial queries for clustering (5+ reports within 500m)
- Calculate severity scores based on report count and frequency
- Create GET /api/analytics/hotspots endpoint
- Create GET /api/analytics/hotspots/:id endpoint for details
- Create POST /api/analytics/hotspots/calculate for manual trigger
- Implement scheduled job with node-cron (runs every 5 minutes)
- Add comprehensive test scripts for hotspot functionality
- Create detailed implementation documentation

Requirements addressed:
- 3.2: Identify areas with 5+ reports within 500m radius
- 3.3: Rank hotspots by severity score
- 3.4: Update calculations within 5 minutes
- 3.5: Provide data for map visualization with severity indicators
2025-11-17 00:19:35 +00:00

19 lines
905 B
TypeScript

import { Router } from 'express';
import { analyticsController } from '../controllers/analyticsController';
const router = Router();
// Analytics endpoints
router.get('/summary', analyticsController.getSummary.bind(analyticsController));
router.get('/trends', analyticsController.getTrends.bind(analyticsController));
router.get('/comparison', analyticsController.getComparison.bind(analyticsController));
router.get('/export', analyticsController.exportCSV.bind(analyticsController));
router.get('/aggregated', analyticsController.getAggregatedData.bind(analyticsController));
// Hotspot endpoints
router.get('/hotspots', analyticsController.getHotspots.bind(analyticsController));
router.get('/hotspots/:id', analyticsController.getHotspotDetails.bind(analyticsController));
router.post('/hotspots/calculate', analyticsController.calculateHotspots.bind(analyticsController));
export default router;