---
name: "Sincronizacion de Reservas"
description: "Sincroniza reservas entre PostgreSQL y Google Sheets"
version: "1.0.0"
author: "Pa-Cartagena"
mcp_tools:
- db_get_reservas_futuras
- db_get_tours_terceros
- db_count_reservas
- sheets_read_range
- sheets_write_range
- sheets_append_rows
- sheets_get_rows
triggers:
- "sincronizar reservas"
- "sync reservas"
- "actualizar spreadsheet"
---
# Protocolo de Sincronizacion de Reservas
Este skill gestiona la sincronizacion bidireccional entre la base de datos PostgreSQL y Google Sheets para las reservas de Pa'Cartagena.
## Flujo de Trabajo
### 1. Verificacion Inicial
Antes de cualquier sincronizacion:
1. Usar `db_count_reservas` para obtener estadisticas actuales
2. Verificar conexion a Google Sheets con `sheets_get_info`
3. Reportar estado inicial al usuario
### 2. Sincronizacion DB -> Sheet
```
1. Obtener reservas futuras con db_get_reservas_futuras
2. Leer estado actual del sheet con sheets_get_rows
3. Comparar por bookingId (clave primaria)
4. Para registros nuevos: usar sheets_append_rows
5. Para registros existentes: usar sheets_write_range (solo campos permitidos)
```
### 3. Sincronizacion Sheet -> DB
```
1. Leer cambios manuales del sheet (columnas E-G)
2. Validar formatos de fecha
3. Solo actualizar campos permitidos en la DB
```
## Reglas de Negocio
### Columnas Protegidas
- **Columnas E-G**: Datos manuales del usuario, NUNCA sobrescribir
- Incluyen: notas personales, estado de pago manual, observaciones
### Formato de Datos
- **Fechas**: DD/MM/YYYY
- **Zona horaria**: America/Bogota
- **Moneda**: COP (pesos colombianos)
### Filtros Aplicados
- Excluir reservas con status que contenga "cancel"
- Solo apartamentos de Pa'Cartagena (roomIds especificos)
- Solo reservas con departure >= hoy
## Mapeo de Columnas
| DB Column | Sheet Column | Editable |
|-----------|--------------|----------|
| bookingid | Booking ID | No |
| arrival | Check-in | No |
| departure | Check-out | No |
| guestfirstname | Nombre | No |
| guestlastname | Apellido | No |
| channel | Canal | No |
| status | Estado | No |
| - | Notas Manuales | Si |
| - | Pago Confirmado | Si |
| - | Observaciones | Si |
## Manejo de Errores
1. Si falla la conexion a DB: reportar y abortar
2. Si falla Sheets API: reintentar 3 veces con backoff
3. Si hay conflicto de datos: priorizar datos manuales del sheet
## Ejemplo de Uso
```
Usuario: Sincroniza las reservas de la base de datos al spreadsheet
Claude:
1. Verifico estado actual...
2. Encontre 45 reservas futuras en DB
3. Sheet tiene 42 registros
4. Sincronizando 3 nuevas reservas...
5. Listo! Agregadas 3 reservas, actualizadas 0.
```