From 1f0229461b8bacfd5319638a59baa1bf6c08ec02 Mon Sep 17 00:00:00 2001 From: Hanzo_dev <2002samudiojohan@gmail.com> Date: Thu, 26 Feb 2026 20:58:10 -0500 Subject: [PATCH] chore: build and UI fixes --- frontend/src/composables/useParadaCercana.ts | 5 +++-- frontend/src/services/analyticsService.ts | 2 +- frontend/src/services/reportsService.ts | 7 +++++++ frontend/src/services/telemetryService.ts | 2 -- frontend/src/views/AdminDashboard.vue | 2 +- frontend/src/views/DriverDashboard.vue | 4 ++-- frontend/src/views/FavoritesView.vue | 2 -- frontend/src/views/PromoterDashboard.vue | 2 +- frontend/src/views/RoutesView.vue | 7 +------ frontend/src/views/SchedulesView.vue | 2 +- 10 files changed, 17 insertions(+), 18 deletions(-) diff --git a/frontend/src/composables/useParadaCercana.ts b/frontend/src/composables/useParadaCercana.ts index 7be72fa..f9b8dfb 100644 --- a/frontend/src/composables/useParadaCercana.ts +++ b/frontend/src/composables/useParadaCercana.ts @@ -65,6 +65,7 @@ export function useParadaCercana() { if (response.routes && response.routes.length > 0) { const route = response.routes[0]; + if (!route) continue; let distTotal = 0; let durTotal = 0; @@ -89,8 +90,8 @@ export function useParadaCercana() { // 3. Fallback a la más cercana lineal si falla API if (!mejorParada) { - mejorParada = top5[0]; - minimaDistanciaCalles = paradasConDistLineal[0].distancia * 1000; + mejorParada = top5[0] || null; + minimaDistanciaCalles = (paradasConDistLineal[0]?.distancia || 0) * 1000; mejorDuracion = (minimaDistanciaCalles / 1000) / 5 * 60 * 60; // asumiendo caminata a 5km/h } diff --git a/frontend/src/services/analyticsService.ts b/frontend/src/services/analyticsService.ts index cd2668e..eb8a388 100644 --- a/frontend/src/services/analyticsService.ts +++ b/frontend/src/services/analyticsService.ts @@ -1,6 +1,6 @@ /** analyticsService — stub. Analytics via Supabase can be implemented in v3 */ export const analyticsService = { - logEvent(_event: { event_name: string; properties?: Record }) { + logEvent(_event: any) { // no-op }, async getDashboardStats() { diff --git a/frontend/src/services/reportsService.ts b/frontend/src/services/reportsService.ts index e8490b1..140c906 100644 --- a/frontend/src/services/reportsService.ts +++ b/frontend/src/services/reportsService.ts @@ -26,6 +26,13 @@ export const reportsService = { if (error) throw new Error(error.message) }, + async sendReport(message: string): Promise { + const { error } = await supabase.from('reports').insert([ + { message, status: 'pending' } + ]); + if (error) throw new Error(error.message); + }, + async getRoutesReport() { const { data, error } = await supabase.from('routes').select('*') if (error) throw new Error(error.message) diff --git a/frontend/src/services/telemetryService.ts b/frontend/src/services/telemetryService.ts index fa54303..ffe5a73 100644 --- a/frontend/src/services/telemetryService.ts +++ b/frontend/src/services/telemetryService.ts @@ -1,5 +1,3 @@ -import { supabase } from '@/supabase'; - /** telemetryService — Previously sent GPS data to the Python backend. * Now it's a no-op stub since we don't have a custom backend. * Realtime GPS tracking can be implemented via Supabase Realtime in the future. */ diff --git a/frontend/src/views/AdminDashboard.vue b/frontend/src/views/AdminDashboard.vue index 88c0a27..0896d08 100644 --- a/frontend/src/views/AdminDashboard.vue +++ b/frontend/src/views/AdminDashboard.vue @@ -178,7 +178,7 @@ const lastRefreshed = ref('') async function loadStats() { isLoading.value = true try { - stats.value = await analyticsService.getStats() + stats.value = await analyticsService.getDashboardStats() || {} lastRefreshed.value = new Date().toLocaleTimeString() } catch (e) { console.error('Error loading stats') diff --git a/frontend/src/views/DriverDashboard.vue b/frontend/src/views/DriverDashboard.vue index 4771da7..7120f67 100644 --- a/frontend/src/views/DriverDashboard.vue +++ b/frontend/src/views/DriverDashboard.vue @@ -152,7 +152,7 @@ async function startService() { // Throttling updates to save battery/bandwidth if (now - lastUpdate.value >= minUpdateInterval) { try { - await telemetryService.sendTelemetry({ + await telemetryService.sendLocation({ latitude: position.coords.latitude, longitude: position.coords.longitude, speed: position.coords.speed || undefined, @@ -192,7 +192,7 @@ function stopService() { localStorage.setItem('driver_in_service', 'false') // Optionally notify backend that we are offline - telemetryService.sendTelemetry({ + telemetryService.sendLocation({ latitude: 0, longitude: 0, status: 'offline' diff --git a/frontend/src/views/FavoritesView.vue b/frontend/src/views/FavoritesView.vue index 93308ca..fc4aa8e 100644 --- a/frontend/src/views/FavoritesView.vue +++ b/frontend/src/views/FavoritesView.vue @@ -1,11 +1,9 @@