8.7 KiB
Actualización de Recursos - AnchorOS
Cambios Realizados
Recursos Anteriores (Eliminados)
Los recursos tenían nombres descriptivos como:
- "Sillón Pedicure 1", "Sillón Pedicure 2", "Sillón Pedicure 3"
- "Estación Manicure 1", "Estación Manicure 2", "Estación Manicure 3", "Estación Manicure 4"
- "Estación Maquillaje"
- "Cama Pestañas"
Nuevos Recursos (Implementados)
Los recursos ahora usan códigos alfanuméricos estandarizados:
| Tipo | Código | Cantidad | Descripción |
|---|---|---|---|
| Maquillaje | mkup |
3 | Estaciones de maquillaje |
| Pestañas | lshs |
1 | Cama de pestañas |
| Pedicure | pedi |
4 | Estaciones de pedicure |
| Manicure | mani |
4 | Estaciones de manicure |
Formato de Nombres
Los recursos siguen el patrón: {código}-{número}
Ejemplos:
mkup-01,mkup-02,mkup-03lshs-01pedi-01,pedi-02,pedi-03,pedi-04mani-01,mani-02,mani-03,mani-04
Detalles por Tipo
Maquillaje (mkup)
- Total: 3 estaciones por location
- Tipo: station
- Capacidad: 1 persona por estación
- Uso: Servicios de maquillaje profesional
Pestañas (lshs)
- Total: 1 cama por location
- Tipo: station
- Capacidad: 1 persona
- Uso: Extensiones de pestañas
Pedicure (pedi)
- Total: 4 estaciones por location
- Tipo: station
- Capacidad: 1 persona por estación
- Uso: Servicios de pedicure
Manicure (mani)
- Total: 4 estaciones por location
- Tipo: station
- Capacidad: 1 persona por estación
- Uso: Servicios de manicure
Impacto en el Sistema
Bookings Eliminados
⚠️ IMPORTANTE: Debido a la restricción CASCADE DELETE en la tabla resources, todos los bookings que referenciaban los recursos anteriores han sido eliminados.
Esto significa que:
- No hay bookings activos en el sistema
- Los clientes deberán reprogramar sus citas
- Se debe informar a los usuarios del cambio
Cómo Afecta al Kiosko
El kiosko ahora asignará recursos usando los nuevos códigos:
- Cuando un cliente solicita maquillaje → asigna
mkup-XX - Cuando un cliente solicita pestañas → asigna
lshs-01 - Cuando un cliente solicita pedicure → asigna
pedi-XX - Cuando un cliente solicita manicure → asigna
mani-XX
Mapeo de Servicios a Recursos
Para mantener la consistencia, los servicios deberían asignarse a los recursos correctos:
| Servicio | Recurso Recomendado | Notas |
|---|---|---|
| Maquillaje Profesional | mkup-XX |
Cualquiera de las 3 estaciones |
| Extensión de Pestañas | lshs-01 |
Único recurso disponible |
| Pedicure Spa | pedi-XX |
Cualquiera de las 4 estaciones |
| Manicure Gel | mani-XX |
Cualquiera de las 4 estaciones |
| Uñas Acrílicas | mani-XX |
Cualquiera de las 4 estaciones |
Ejecutar la Migración
Opción 1: Via Supabase Dashboard
- Ve a: https://supabase.com/dashboard/project/pvvwbnybkadhreuqijsl/sql
- Copia el contenido de
supabase/migrations/20260116010000_update_resources.sql - Pega en el SQL Editor
- Haz clic en "Run"
- Verifica el output en la consola
Opción 2: Via CLI (si está configurado)
supabase db push
Verificar la Migración
Consulta SQL para Ver Recursos
SELECT
l.name AS location,
r.name AS resource_code,
r.type AS resource_type,
r.capacity,
r.is_active
FROM resources r
JOIN locations l ON l.id = r.location_id
WHERE l.is_active = true
ORDER BY l.name, r.name;
Resultado Esperado
location | resource_code | resource_type | capacity | is_active
------------------|---------------|---------------|----------|----------
ANCHOR:23 - Via KLAVA | lshs-01 | station | 1 | true
ANCHOR:23 - Via KLAVA | mani-01 | station | 1 | true
ANCHOR:23 - Via KLAVA | mani-02 | station | 1 | true
ANCHOR:23 - Via KLAVA | mani-03 | station | 1 | true
ANCHOR:23 - Via KLAVA | mani-04 | station | 1 | true
ANCHOR:23 - Via KLAVA | mkup-01 | station | 1 | true
ANCHOR:23 - Via KLAVA | mkup-02 | station | 1 | true
ANCHOR:23 - Via KLAVA | mkup-03 | station | 1 | true
ANCHOR:23 - Via KLAVA | pedi-01 | station | 1 | true
ANCHOR:23 - Via KLAVA | pedi-02 | station | 1 | true
ANCHOR:23 - Via KLAVA | pedi-03 | station | 1 | true
ANCHOR:23 - Via KLAVA | pedi-04 | station | 1 | true
TEST - Salón Principal | lshs-01 | station | 1 | true
TEST - Salón Principal | mani-01 | station | 1 | true
TEST - Salón Principal | mani-02 | station | 1 | true
TEST - Salón Principal | mani-03 | station | 1 | true
TEST - Salón Principal | mani-04 | station | 1 | true
TEST - Salón Principal | mkup-01 | station | 1 | true
TEST - Salón Principal | mkup-02 | station | 1 | true
TEST - Salón Principal | mkup-03 | station | 1 | true
TEST - Salón Principal | pedi-01 | station | 1 | true
TEST - Salón Principal | pedi-02 | station | 1 | true
TEST - Salón Principal | pedi-03 | station | 1 | true
TEST - Salón Principal | pedi-04 | station | 1 | true
Actualizar el Seed Data (Opcional)
Si deseas mantener el archivo de seed consistente, actualiza la sección de recursos en 20260115235900_seed_data.sql:
-- REEMPLAZAR ESTA SECCIÓN EN EL SEED
-- 2. Crear Resources (solo si no existen)
DO $$
BEGIN
-- Para ANCHOR:23 - Via KLAVA
FOR i IN 1..3 LOOP
IF NOT EXISTS (
SELECT 1 FROM resources r
JOIN locations l ON l.id = r.location_id
WHERE l.name = 'ANCHOR:23 - Via KLAVA' AND r.name = 'mkup-' || LPAD(i::TEXT, 2, '0')
) THEN
INSERT INTO resources (location_id, name, type, capacity, is_active)
SELECT id, 'mkup-' || LPAD(i::TEXT, 2, '0'), 'station', 1, true
FROM locations WHERE name = 'ANCHOR:23 - Via KLAVA';
END IF;
END LOOP;
INSERT INTO resources (location_id, name, type, capacity, is_active)
SELECT id, 'lshs-01', 'station', 1, true
FROM locations l
WHERE l.name = 'ANCHOR:23 - Via KLAVA'
AND NOT EXISTS (
SELECT 1 FROM resources r
WHERE r.location_id = l.id AND r.name = 'lshs-01'
);
FOR i IN 1..4 LOOP
IF NOT EXISTS (
SELECT 1 FROM resources r
JOIN locations l ON l.id = r.location_id
WHERE l.name = 'ANCHOR:23 - Via KLAVA' AND r.name = 'pedi-' || LPAD(i::TEXT, 2, '0')
) THEN
INSERT INTO resources (location_id, name, type, capacity, is_active)
SELECT id, 'pedi-' || LPAD(i::TEXT, 2, '0'), 'station', 1, true
FROM locations WHERE name = 'ANCHOR:23 - Via KLAVA';
END IF;
END LOOP;
FOR i IN 1..4 LOOP
IF NOT EXISTS (
SELECT 1 FROM resources r
JOIN locations l ON l.id = r.location_id
WHERE l.name = 'ANCHOR:23 - Via KLAVA' AND r.name = 'mani-' || LPAD(i::TEXT, 2, '0')
) THEN
INSERT INTO resources (location_id, name, type, capacity, is_active)
SELECT id, 'mani-' || LPAD(i::TEXT, 2, '0'), 'station', 1, true
FROM locations WHERE name = 'ANCHOR:23 - Via KLAVA';
END IF;
END LOOP;
-- Repetir mismo patrón para otras locations...
END $$;
Notas Importantes
IDs de Resources
Cada location tendrá sus propios recursos con IDs únicos. Por ejemplo:
- ANCHOR:23 - Via KLAVA →
mkup-01tiene un ID específico - TEST - Salón Principal →
mkup-01tiene un ID diferente
Agregar Nuevas Locations
Cuando agregues una nueva location, la migración de actualización de recursos (20260116010000_update_resources.sql) creará automáticamente los 12 recursos para ella:
- 3 mkup
- 1 lshs
- 4 pedi
- 4 mani
Modificar Cantidades
Si necesitas cambiar las cantidades en el futuro, modifica la migración:
-- Ejemplo: cambiar a 5 estaciones de maquillaje
FOR i IN 1..5 LOOP
INSERT INTO resources ...
END LOOP;
Soporte y Troubleshooting
Error: "Resources table is empty"
- Ejecuta la migración de actualización de recursos
- Verifica que las locations estén activas
Error: "Booking references non-existent resource"
- Esto es normal después de la migración
- Los bookings anteriores fueron eliminados por CASCADE DELETE
- Crea nuevos bookings con el sistema actualizado
Consulta para Ver Locations sin Recursos
SELECT l.id, l.name
FROM locations l
LEFT JOIN resources r ON r.location_id = l.id
WHERE l.is_active = true
AND r.id IS NULL;