Debug: agregar logging extensivo al endpoint de panorama
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 44s
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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user