import axiosClient from '../axios/axios'; import { Detection } from '@/types'; import { projectService } from './project.service'; /** * Detection Service */ export const detectionService = { /** * Fetch all detections from completed videos * Uses the summary endpoint to get detections for each project */ getAllDetections: async (): Promise => { try { // First get all projects const projectsResponse = await projectService.getProjects(); const projects = projectsResponse.items; // Then fetch detections for each project const allDetections: Detection[] = []; for (const project of projects) { try { const response = await axiosClient.get<{ packages: { [key: string]: { chainages: { [key: string]: { detections: Detection[]; }; }; }; }; }>(`/summary/projects/${project.id}`); const summary = response.data; // Extract detections from the nested structure for (const pkg of Object.values(summary.packages || {})) { for (const loc of Object.values(pkg.chainages || {})) { allDetections.push(...(loc.detections || [])); } } } catch (e) { // Skip projects that fail to load console.warn(`Failed to load detections for project ${project.id}:`, e); } } return allDetections; } catch (e) { console.error('Failed to fetch all detections:', e); return []; } }, };