- Added health check to the camera management API service in docker-compose.yml for better container reliability. - Updated installation scripts in Dockerfile to check for existing dependencies before installation, improving efficiency. - Enhanced error handling in the USDAVisionSystem class to allow partial operation if some components fail to start, preventing immediate shutdown. - Improved logging throughout the application, including more detailed error messages and critical error handling in the main loop. - Refactored WebSocketManager and CameraMonitor classes to use debug logging for connection events, reducing log noise.
25 lines
1.2 KiB
TypeScript
25 lines
1.2 KiB
TypeScript
type VideoListParams = { camera_name?: string; start_date?: string; end_date?: string; limit?: number; page?: number; offset?: number; include_metadata?: boolean; min_size_mb?: number; max_size_mb?: number }
|
|
type VideoFile = { file_id: string; camera_name: string; filename: string; file_size_bytes: number; format: string; status: string; created_at: string; is_streamable: boolean; needs_conversion: boolean }
|
|
type VideoListResponse = { videos: VideoFile[]; total_count: number; page?: number; total_pages?: number }
|
|
|
|
const BASE = (import.meta as any).env?.VITE_MEDIA_API_URL || (import.meta as any).env?.VITE_VISION_API_URL || '/api'
|
|
|
|
async function get<T>(path: string): Promise<T> {
|
|
const res = await fetch(path, { headers: { 'Accept': 'application/json' } })
|
|
if (!res.ok) throw new Error(`Request failed: ${res.status}`)
|
|
return res.json() as Promise<T>
|
|
}
|
|
|
|
export async function fetchVideos(params: VideoListParams = {}): Promise<VideoListResponse> {
|
|
const search = new URLSearchParams()
|
|
Object.entries(params).forEach(([k, v]) => {
|
|
if (v !== undefined && v !== null) search.append(k, String(v))
|
|
})
|
|
const qs = search.toString()
|
|
return get(`${BASE}/videos/${qs ? `?${qs}` : ''}`)
|
|
}
|
|
|
|
|
|
|
|
|