/** * API-Modul: Schnittstelle zur Backend-API /results * Rolle: Data Layer für Analyseergebnisse * © 2026 Donau2Space.de */ /** * Führt einen GET-Request auf /results aus und gibt strukturierte Daten zurück. * @param {Object} [filters] - optionale Filterparameter (z. B. { run_type: string, time_range: string }) * @returns {Promise>} */ export async function loadResults(filters = {}) { const params = new URLSearchParams(); if (filters.run_type) params.append('filter', filters.run_type); if (filters.time_range) params.append('time_range', filters.time_range); const queryString = params.toString() ? `?${params.toString()}` : ''; try { const response = await fetch(`/results${queryString}`, { method: 'GET', headers: { 'Accept': 'application/json' } }); if (!response.ok) { throw new Error(`Fehler beim Laden der Ergebnisse: ${response.status}`); } const data = await response.json(); // Validierung der erwarteten Struktur if (!Array.isArray(data)) { throw new Error('Ungültiges Antwortformat. Erwartet: Array'); } return data.map(item => ({ run_id: String(item.run_id ?? ''), category: String(item.category ?? ''), delta_t: Number(item.delta_t ?? 0), timestamp: String(item.timestamp ?? ''), status: String(item.status ?? '') })); } catch (error) { console.error('API-Fehler in loadResults:', error); return []; } }