Debug: agregar logging extensivo al endpoint de panorama
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 44s

- Agregar logs para verificar que las cards se encuentren correctamente
- Agregar logs detallados de los parámetros enviados a cada query
- Agregar logs de la estructura de respuesta de Metabase
- Agregar logs de la transformación de datos (single row y multiple rows)
- Esto ayudará a diagnosticar por qué las respuestas están vacías
This commit is contained in:
2025-10-29 10:22:51 -06:00
parent ad1050b256
commit b4ec8d5444

View File

@@ -18,15 +18,21 @@ export default defineEventHandler(async (event) => {
const cards: Record<string, any> = {} const cards: Record<string, any> = {}
console.log('[Panorama] Available cards:', allCards.map((c: any) => ({ id: c.id, name: c.name })))
console.log('[Panorama] Looking for queries:', queryNames)
for (const [key, name] of Object.entries(queryNames)) { for (const [key, name] of Object.entries(queryNames)) {
const card = allCards.find((c: any) => c.name === name) const card = allCards.find((c: any) => c.name === name)
if (!card) { if (!card) {
console.warn(`[Panorama] Query not found: ${name}`) console.warn(`[Panorama] Query not found: ${name}`)
} else { } else {
console.log(`[Panorama] Found card ${key}: ${name} (ID: ${card.id})`)
cards[key] = card cards[key] = card
} }
} }
console.log('[Panorama] Cards to execute:', Object.keys(cards))
// Build parameters array for Metabase queries // Build parameters array for Metabase queries
// Convertir null a string vacío para que las queries usen NULLIF correctamente // Convertir null a string vacío para que las queries usen NULLIF correctamente
const parameters = [ const parameters = [
@@ -55,12 +61,17 @@ export default defineEventHandler(async (event) => {
} }
try { try {
console.log(`[Panorama] Executing query: ${name} (ID: ${cardId})`) console.log(`[Panorama] Executing query: ${name} (ID: ${cardId}) with params:`, JSON.stringify(parameters))
const result = await executeCardQuery(cardId, parameters) const result = await executeCardQuery(cardId, parameters)
console.log(`[Panorama] Query ${name} returned ${result.data?.rows?.length || 0} rows`) console.log(`[Panorama] Query ${name} result:`, {
hasData: !!result.data,
rowsLength: result.data?.rows?.length || 0,
colsLength: result.data?.cols?.length || 0,
firstRow: result.data?.rows?.[0] || null
})
return result return result
} catch (error: any) { } catch (error: any) {
console.error(`[Panorama] Error executing ${name}:`, error.message) console.error(`[Panorama] Error executing ${name}:`, error.message, error.stack)
return defaultValue return defaultValue
} }
} }
@@ -89,7 +100,18 @@ export default defineEventHandler(async (event) => {
// Transform Metabase responses to objects for easier frontend consumption // Transform Metabase responses to objects for easier frontend consumption
const transformSingleRow = (result: any) => { const transformSingleRow = (result: any) => {
if (!result.data?.rows?.[0] || !result.data?.cols) return {} console.log('[Panorama] transformSingleRow input:', {
hasData: !!result.data,
hasRows: !!result.data?.rows,
hasCols: !!result.data?.cols,
rowsLength: result.data?.rows?.length,
colsLength: result.data?.cols?.length
})
if (!result.data?.rows?.[0] || !result.data?.cols) {
console.warn('[Panorama] transformSingleRow: Missing data, rows, or cols')
return {}
}
const row = result.data.rows[0] const row = result.data.rows[0]
const cols = result.data.cols const cols = result.data.cols
@@ -99,20 +121,34 @@ export default defineEventHandler(async (event) => {
obj[col.name] = row[index] obj[col.name] = row[index]
}) })
console.log('[Panorama] transformSingleRow output:', obj)
return obj return obj
} }
const transformMultipleRows = (result: any) => { const transformMultipleRows = (result: any) => {
if (!result.data?.rows || !result.data?.cols) return [] console.log('[Panorama] transformMultipleRows input:', {
hasData: !!result.data,
hasRows: !!result.data?.rows,
hasCols: !!result.data?.cols,
rowsLength: result.data?.rows?.length
})
if (!result.data?.rows || !result.data?.cols) {
console.warn('[Panorama] transformMultipleRows: Missing data, rows, or cols')
return []
}
const cols = result.data.cols const cols = result.data.cols
return result.data.rows.map((row: any[]) => { const transformed = result.data.rows.map((row: any[]) => {
const obj: any = {} const obj: any = {}
cols.forEach((col: any, index: number) => { cols.forEach((col: any, index: number) => {
obj[col.name] = row[index] obj[col.name] = row[index]
}) })
return obj return obj
}) })
console.log('[Panorama] transformMultipleRows output:', transformed.length, 'rows')
return transformed
} }
// Return all data in a structured format // Return all data in a structured format