Backend¶
Fitxers principals¶
| Fitxer | Línies aprox. | Responsabilitat |
|---|---|---|
Codigo.gs |
2242 | Nucli: CRUD reserves, auth, cache, doGet(), email |
AdminFunctions.gs |
2164 | Funcions admin: CRUD recursos/tramos/usuaris, estadístiques |
ReservasRecurrentes.gs |
1945 | Reserves recurrents (UI desactivada, no tocar) |
Incidencias.gs |
431 | Incidències: creació, actualització, resolució |
Setup.gs |
239 | Wizard d'instal·lació |
Funcions exposades al client¶
El client crida les funcions GAS via google.script.run. Han de ser funcions de primer nivell als fitxers .gs.
Lectura¶
| Funció | Fitxer | Descripció |
|---|---|---|
getStaticData() |
Codigo.gs | Recursos, tramos, usuaris, cursos (cachejat 1h) |
getDisponibilidadRecurso(recursoId) |
Codigo.gs | Disponibilitat setmanal d'un recurs |
getMyActiveReservationsData(email) |
Codigo.gs | Reserves actives de l'usuari |
getAdminData() |
AdminFunctions.gs | Totes les dades pel panel admin (rol Admin) |
getAdminDataGestor() |
AdminFunctions.gs | Subconjunt de dades (rol Gestor) |
getEstadistiques(filtre) |
AdminFunctions.gs | Dades del dashboard |
Escriptura¶
| Funció | Fitxer | Descripció |
|---|---|---|
crearNuevaReserva(reservaData) |
Codigo.gs | Crea reserva amb totes les validacions |
cancelarReservaCliente(reservaId) |
Codigo.gs | Cancel·la reserva pròpia |
adminCancelarReserva(idReserva) |
AdminFunctions.gs | Cancel·la qualsevol reserva (admin/gestor) |
saveBatchRecursos(data) |
AdminFunctions.gs | Desa canvis massius de recursos |
saveBatchTramos(data) |
AdminFunctions.gs | Desa canvis massius de tramos |
saveBatchUsuaris(data) |
AdminFunctions.gs | Desa canvis massius d'usuaris |
saveBatchConfig(data) |
AdminFunctions.gs | Desa canvis de configuració |
Validacions a crearNuevaReserva()¶
Per ordre d'execució:
- Usuari actiu i autoritzat
- Mode manteniment (
validarModoMantenimiento) - Antelació mínima (
validarAntelacionMinima) - Finestra de dies vista (
validarDiasVista) - Disponibilitat del recurs per dia i tram (
checkAvailability) - Límit de reserves simultànies (
validarLimiteReservas) - Restriccions multi-tram (
validarPermisMultitram)
Cache¶
CacheService.getScriptCache() amb dues capes:
| Clau | Contingut | TTL |
|---|---|---|
STATIC_DATA_V5 |
Recursos, Tramos, Usuarios, Cursos, Dispositivos | 3600s |
DISP_{recursoId} |
Disponibilitat per recurs | 1800s |
configuracion_v1 |
Config sheet sencera | 3600s |
Les escriptures admin invaliden les caches afectades explícitament.
Auth¶
checkUserAuthorization() (Codigo.gs:273):
1. Obté l'email via Session.getActiveUser().getEmail()
2. Busca l'email al full Usuarios
3. Comprova Activo=TRUE
4. Determina el rol: isAdmin (columna D) → isGestor (columna F) → usuari
Retorna: { isAdmin, isGestor, userName, userEmail, isAuthorized }