Files

56 lines
1.8 KiB
Markdown

# Constitución del Proyecto (gemini.md)
## 1. Esquemas de Datos (Data Schemas)
> **Mandatorio**: Definir JSON Input/Output antes de la fase de Arquitectura.
## 1. Esquemas de Datos (Data Schemas)
> **Mandatorio**: Definir JSON Input/Output antes de la fase de Arquitectura.
### Database Schema (Supabase)
Table: `reservations`
```json
{
"id": "uuid (PK)",
"created_at": "timestamptz",
"start_date": "date (NOT NULL)",
"end_date": "date (NOT NULL)",
"client_name": "text (NOT NULL)",
"origin": "text (NOT NULL) ENUM('Teneriffa2000', 'Naturcalabacera')",
"invoice_number": "text",
"adults_count": "integer (DEFAULT 0)",
"children_count": "integer (DEFAULT 0)",
"has_cleaning": "boolean (DEFAULT false)",
"has_pool_heating": "boolean (DEFAULT false)",
"has_flies_products": "boolean (DEFAULT false)",
"government_registration": "text"
}
```
### Webhook Payload (Output)
Trigger: When `government_registration` changes from EMPTY/NULL to VALUE.
```json
{
"event": "registration_filled",
"reservation_id": "uuid",
"client_name": "text",
"government_registration": "text",
"invoice_number": "text",
"start_date": "YYYY-MM-DD",
"end_date": "YYYY-MM-DD"
}
```
## 2. Reglas de Comportamiento
- **Prioridad**: Fiabilidad > Velocidad.
- **UX**: Single Page Application (SPA). Modals para todo. No recargas.
- **Source of Truth**: Supabase. No sync con iCal externo.
- **Frontend Logic**: Cálculos en tiempo real (Total Personas, Total Días).
- **Triggers**: Webhook solo dispara si `registro` cambia de vacío a lleno.
## 3. Invariantes Arquitectónicas
- `tools/` solo contiene scripts atómicos.
- `architecture/` contiene la lógica (SOPs).
- `tú` (Gemini) eres el enrutador.
- **Stack**: React (Vite), TailwindCSS, Supabase JS Client, React Big Calendar / FullCalendar.