Las queries de Metabase tienen fecha_desde y fecha_hasta como parametros
requeridos con valores por defecto. Cuando se envia null, Metabase rechaza
la query. Ahora usamos los defaults cuando no se especifican fechas.
- Crear endpoint /api/metabase/panorama.post.ts que ejecuta las 9 queries en paralelo
- Restaurar y adaptar panorama.vue para usar el nuevo endpoint
- Crear componentes auxiliares: SecosVendidos, TotalesIngresoCompra, TotalesMonetarios, TotalesVerde, MetricBox, RechazosRechazoCard
- Adaptar RechazosSubproductos para recibir data directamente de Metabase
- Toda la transformación de datos ocurre en las queries SQL de Metabase
- Sin uso de stores ni composables de métricas
- Agregar documentación de queries en archivos MD
- Crear componente MetabaseCardDisplay para mostrar detalles de queries
- Crear componente MetabaseCardsTable para listar todas las queries
- Crear página /metabase-debug con vistas de tabla, cards y queries Panorama
- Agregar API routes para cards de Metabase (GET, POST, export)
- Actualizar metabase.ts para soportar API Key authentication
- Agregar configuración de Metabase API Key en nuxt.config.ts
- Documentar todos los endpoints disponibles en METABASE_API_ENDPOINTS.md
Metabase API returns {data: [...], total: number} instead of
a direct array. Update databases endpoint to extract and return
only the data array for easier frontend consumption.
Verified working with:
- facturador supabase (PostgreSQL, ID: 2)
- Sample Database (H2, ID: 1)
Add complete integration with Metabase API to fetch data from
'facturador supabase' database.
Features:
- Server-side Metabase authentication using session tokens
- Utility functions for Metabase API requests with auto-retry
- API endpoints to proxy Metabase requests
- GET /api/metabase/databases - List all databases
- GET /api/metabase/tables/:databaseId - Get tables and metadata
- POST /api/metabase/query - Execute queries against tables
- useMetabase() composable for frontend consumption
- getDatabases() - Fetch available databases
- getDatabaseMetadata() - Get tables and fields info
- queryTable() - Execute queries with filters and limits
- resultToObjects() - Helper to convert results to objects
Session tokens are cached and auto-refreshed when expired.
This enables the application to display real data from the
facturador database without using embeds or iframes.
BREAKING CHANGE: Remove all data analysis features
This commit removes all database-dependent functionality and simplifies
the application to focus on authentication and user management only.
Changes:
- Remove all /api/data and /api/metadata server endpoints
- Remove Supabase configuration from nuxt.config.ts and .env.example
- Remove @supabase/supabase-js dependency from package.json
- Delete data analysis pages: explorer, metadatos, rawExplorer, panorama,
comparativa-cosechas, informe-ingresos
- Simplify sidebar navigation to show only "Inicio"
- Update home page to focus on authentication and profile management
- Remove "Supabase" and "Solo lectura" badges from navbar
- Keep only auth-related API endpoints: /api/auth/status and /api/auth/check-group
The application now serves as an authentication-protected portal with:
- Authentik SSO integration
- User profile management
- Settings and notifications pages (coming soon)
- No database or data analysis features
- Create /api/auth/status endpoint for session verification
- Create /api/auth/check-group endpoint for group membership validation
- These endpoints read Authentik proxy headers to provide auth state
- Required for SessionStatusButton and backend group verification
- Migrar de useAuth() a useAuthentik() para autenticación SSR
- Actualizar componentes UserMenu, AppSidebar y profile.vue
- Configurar docker-compose.yml con variables dinámicas
- Agregar Gitea Actions workflow para build y deploy automático
- Implementar hook de monitoreo de Gitea Actions
- Configurar secrets y variables para deploy seguro
- Actualizar configuración de Traefik con Authentik Forward Auth