mostrarNotificacionProblema: La función mostrarNotificacion en salas.js estaba causando un stack overflow debido a una llamada recursiva.
Error en consola:
Uncaught RangeError: Maximum call stack size exceeded
at mostrarNotificacion (salas.js:61:29)
Causa: La función intentaba acceder a window.notifications.mostrarNotificacion cuando debería acceder a window.mostrarNotificacion.
Solución Aplicada:
// ANTES (causaba recursión infinita)
function mostrarNotificacion(mensaje, tipo = 'info') {
if (window.notifications && window.notifications.mostrarNotificacion) {
window.notifications.mostrarNotificacion(mensaje, tipo);
} else {
alert(mensaje);
}
}
// DESPUÉS (corregido)
function mostrarNotificacion(mensaje, tipo = 'info') {
if (window.mostrarNotificacion) {
window.mostrarNotificacion(mensaje, tipo);
} else {
console.log(`[${tipo.toUpperCase()}] ${mensaje}`);
}
}
Problema: El código intentaba acceder a la columna inicio que no existe en la tabla sesiones.
Error en consola:
Error: Error consultando sesiones: column sesiones.inicio does not exist
Causa: El esquema de la base de datos usa fecha_inicio pero el código buscaba inicio.
Solución Aplicada:
Cambié todas las referencias de sesion.inicio a sesion.fecha_inicio en:
obtenerSesiones:
```javascript
// ANTES
ordenPor: { campo: ‘inicio’, direccion: ‘desc’ }// DESPUÉS ordenPor: { campo: ‘fecha_inicio’, direccion: ‘desc’ }
2. **Función `calcularTiempoRestante`**:
```javascript
// ANTES
const inicio = new Date(sesion.inicio);
// DESPUÉS
const inicio = new Date(sesion.fecha_inicio);
formatearTemporizadorPreciso:
```javascript
// ANTES
const inicio = new Date(sesion.inicio);// DESPUÉS const inicio = new Date(sesion.fecha_inicio);
4. **Función `finalizarSesion`**:
```javascript
// ANTES
const fechaInicio = new Date(sesion.inicio);
// DESPUÉS
const fechaInicio = new Date(sesion.fecha_inicio);
verDetalleConsumo:
```javascript
// ANTES
${new Date(sesion.inicio).toLocaleString(‘es-ES’)}// DESPUÉS ${new Date(sesion.fecha_inicio).toLocaleString(‘es-ES’, {hour12: true})}
## Archivos Creados para Diagnóstico
### 1. `test_database_connection.html`
Archivo de prueba para verificar la conexión a la base de datos y la estructura de las tablas.
### 2. `verificar_estructura_sesiones.html`
Archivo específico para verificar la estructura de la tabla `sesiones` y detectar problemas de columnas.
### 3. `verificar_tabla_sesiones.sql`
Script SQL para verificar y corregir la estructura de la tabla `sesiones` en Supabase.
## Verificación del Esquema de Base de Datos
Según `database_schema.sql`, la tabla `sesiones` tiene la siguiente estructura correcta:
```sql
CREATE TABLE sesiones (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
sala_id UUID NOT NULL REFERENCES salas(id) ON DELETE CASCADE,
usuario_id UUID REFERENCES usuarios(id) ON DELETE SET NULL,
estacion VARCHAR(50) NOT NULL,
cliente VARCHAR(100) NOT NULL,
email_cliente VARCHAR(255),
telefono_cliente VARCHAR(20),
fecha_inicio TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), -- ✅ Columna correcta
fecha_fin TIMESTAMP WITH TIME ZONE,
tiempo_contratado INTEGER NOT NULL,
-- ... otras columnas
);
test_database_connection.html para verificar la conexión básicaverificar_estructura_sesiones.html para verificar la estructura específicasalas.html para verificar que los errores se han resueltoDespués de aplicar estas correcciones: