Spaces:
Running
Running
| import axios from 'axios' | |
| const BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:7860' | |
| const api = axios.create({ baseURL: BASE_URL, timeout: 600000 }) | |
| api.interceptors.response.use( | |
| (res) => res, | |
| (err) => { | |
| const message = err.response?.data?.detail || err.message || 'Error desconocido' | |
| return Promise.reject(new Error(message)) | |
| } | |
| ) | |
| export const uploadFile = (file, onProgress) => { | |
| const formData = new FormData() | |
| formData.append('file', file) | |
| return api.post('/upload', formData, { | |
| headers: { 'Content-Type': 'multipart/form-data' }, | |
| onUploadProgress: (e) => { | |
| if (e.total && onProgress) onProgress(Math.round((e.loaded * 100) / e.total)) | |
| }, | |
| }) | |
| } | |
| export const extractVideoFrames = (videoId) => | |
| api.post(`/extract-video-frames?video_id=${videoId}`) | |
| export const runDetection = (imageIds, modelName, assetType, confThreshold = 0.45, engineerNotes = '') => | |
| api.post('/detect', { | |
| image_ids: imageIds, | |
| model_name: modelName, | |
| asset_type: assetType, | |
| conf_threshold: confThreshold, | |
| engineer_notes: engineerNotes, | |
| }) | |
| export const generateReport = (inspectionId, engineerNotes) => | |
| api.post('/generate-report', { inspection_id: inspectionId, engineer_notes: engineerNotes }) | |
| export const getModels = () => api.get('/models') | |
| export const getInspections = () => api.get('/inspections') | |
| export const getInspection = (id) => api.get(`/inspection/${id}`) | |
| export const getDownloadUrl = (path) => `${BASE_URL}${path}` | |
| export default api | |