Mappa Hub

Architettura completa del portale: pagine, API, tabelle DB e relazioni

← Hub
MAP
10 pagine
5 file API
22 tabelle DB
~50 endpoint

Pagine

Codice Nome File API Descrizione
IDX Dashboard index.html api.php Login, sidebar, link, calendario scadenze, gestione utenti
BGT Analytics — Generale analytics.html budget-api.php Consuntivo full year: Netto A, Netto B, confronto budget vs reale per tutte le strutture
BGI Gestione Budget gestione-budget.html budget-api.php Input budget previsionale: notti, soggiorno medio, prezzo netto per struttura/mese. Freeze/unfreeze
BGA Analytics — Appartamento analytics-appartamento.html budget-api.php Dettaglio singola struttura: confronto mensile budget vs consuntivo
BCF Analytics — Cash Flow analytics-cashflow.html budget-api.php Proiezione incassi settimanale/mensile basata su prenotazioni confermate
CST Costi costi.html costi-api.php Gestione costi fissi e variabili per sede (Assisi, Roma, Veneto). Budget e consuntivo
PUL Pulizie pulizie.html pulizie-api.php Gestione pulizie Veneto: ore, costi, pagamenti, saldi operatrici
CFW Cash Flow Cecilia cashflow.html cashflow-api.php Entrate, uscite e saldo dell'appartamento di Cecilia. Export verso Google Sheets
UKB Upload KB upload-kb.html budget-api.php Upload export xlsx Kross Booking per aggiornare prenotazioni nel DB
MAP Mappa Hub hub-map.html - Questa pagina: inventario architettura. Accessibile da Impostazioni (solo admin)

API Endpoints

api.php — Autenticazione, Link, Scadenze, Utenti

ActionMetodoDescrizioneTabelle
check-setupPOSTVerifica se esiste almeno un adminusers
setup-step1POSTRegistra primo admin (username, email)users
setup-step2POSTVerifica TOTP e attiva adminusers
login-step1POSTLogin: verifica username e passwordusers
login-step2POSTLogin: verifica codice TOTPusers, sessions
check-sessionPOSTVerifica sessione attiva da cookiesessions, users
logoutPOSTDistrugge sessionesessions
register-step1POSTRegistra nuovo utente con invitousers, invites
register-step2POSTConferma TOTP nuovo utenteusers, invites
get-linksPOSTElenco link per categorialinks, categories
save-linkPOSTCrea/aggiorna un linklinks
delete-linkPOSTElimina un linklinks
move-linkPOSTRiordina un linklinks
get-categoriesPOSTElenco categorie linkcategories
add-categoryPOSTNuova categoriacategories
delete-categoryPOSTElimina categoriacategories, links
move-categoryPOSTRiordina categoriacategories
get-deadlinesPOSTElenco scadenzedeadlines
save-deadlinePOSTCrea/aggiorna scadenzadeadlines
delete-deadlinePOSTElimina scadenzadeadlines
complete-deadlinePOSTCompleta scadenza (rigenera se ricorrente)deadlines
get-usersPOSTElenco utenti (admin)users
send-invitePOSTInvia invito registrazioneinvites
change-passwordPOSTCambio password utenteusers
export-dataPOSTExport JSON completolinks, categories, deadlines
import-dataPOSTImport JSONlinks, categories, deadlines

budget-api.php — Budget, Prenotazioni, Generale

ActionMetodoDescrizioneTabelle
get-budget-dataGETDati budget tutte le strutture (per BGT)budget_riepilogo, appartamenti, centri_costo, sedi
get-booking-dataGETDati prenotazioni tutte le struttureprenotazioni, prenotazione_appartamenti
get-data-for-apartmentGETBudget singola struttura (per BGA)budget_riepilogo, appartamenti, centri_costo
get-booking-data-for-apartmentGETPrenotazioni singola strutturaprenotazioni, prenotazione_appartamenti
get-generale-dataGETDati generali aggregati (per BGT)generale_mensile, generale_struttura, utili_mensili
get-budget-inputGETDati input budget per struttura/mese (per BGI)budget_riepilogo, costi_mensili, appartamenti, centri_costo, budget_stato
save-budget-inputPOSTSalva input budget (notti, sogg medio, prezzo netto)budget_riepilogo, costi_mensili
freeze-budgetPOSTCongela budget anno: fotografa costibudget_riepilogo, costi_mensili, budget_stato
unfreeze-budgetPOSTSblocca budget annobudget_stato
upload-kbPOSTUpload export Kross Booking (xlsx)prenotazioni, prenotazione_appartamenti, appartamenti
import-budget-csvPOSTImport CSV budgetbudget_riepilogo
import-bookings-csvPOSTImport CSV prenotazioniprenotazioni
purge-yearPOSTElimina dati di un annobudget_riepilogo, prenotazioni, generale_mensile, generale_struttura, utili_mensili
debug-struttureGETDebug: elenco strutture e appartamentiappartamenti, centri_costo, sedi

costi-api.php — Gestione Costi

ActionMetodoDescrizioneTabelle
get-costiGETDati costi per sede/anno con parametricosti_mensili, dati_mensili, parametri, appartamenti, centri_costo, sedi, biancheria_listino, biancheria_set
save-costiPOSTSalva costi modificati (budget e consuntivo)costi_mensili, dati_mensili, parametri

pulizie-api.php — Pulizie Veneto

ActionMetodoDescrizioneTabelle
get-allGETTutte le puliziepulizie
get-summaryGETRiepilogo mese x dovepulizie
addPOSTNuova puliziapulizie
updatePOSTModifica puliziapulizie
deletePOSTElimina puliziapulizie
mark-paidPOSTSegna come pagatapulizie
get-creditiGETCrediti operatricipulizie
get-saldiGETSaldi operatricisaldi_sv
add-saldoPOSTAggiunge movimento saldosaldi_sv
delete-saldoPOSTElimina movimento saldosaldi_sv
get-sync-logGETLog sincronizzazionepulizie_sync_log

cashflow-api.php — Cash Flow Cecilia

ActionMetodoDescrizioneTabelle
get-allGETTutti i movimenticashflow
addPOSTNuovo movimentocashflow
updatePOSTModifica movimentocashflow
deletePOSTElimina movimentocashflow
verifyPOSTVerifica movimentocashflow
unverifyPOSTAnnulla verificacashflow
export-to-gsheetPOSTEsporta verso Google Sheetscashflow, cashflow_sync_log
upload-kbPOSTUpload Knowledge Base-
get-sync-logGETLog sincronizzazionecashflow_sync_log

Tabelle Database

Database: u831498254_hub su Hostinger (MySQL/InnoDB, utf8mb4)

Tabella PK Colonne principali Relazioni (FK) Usata da
Autenticazione & Sistema
users id username, email, password_hash, role, totp_secret, is_active - IDX
sessions id user_id, token, expires_at user_id → users.id IDX (tutte le pagine)
invites id email, code, role, created_by, used created_by → users.id IDX
Dashboard (Link & Scadenze)
links id category_id, title, url, description, position category_id → categories.id IDX
categories id name, position, created_by - IDX
deadlines id title, due_date, recurrence, assignee, completed - IDX
Struttura Appartamenti
sedi id codice (assisi/roma/veneto), nome, attiva - CST BGT
appartamenti id sede_id, codice, nome, centro_costo, num_unita, letti_matr/sing/medi, affitto_mensile sede_id → sedi.id; centro_costo → centri_costo.codice BGT BGI CST
centri_costo id sede_id, codice, nome sede_id → sedi.id BGT BGI CST
Prenotazioni
prenotazioni id codice_prenotazione, ospite, checkin, checkout, notti, importo_lordo, ota, stato, anno - BGT BGA BCF UKB
prenotazione_appartamenti id prenotazione_id, appartamento_id prenotazione_id → prenotazioni.id; appartamento_id → appartamenti.id BGT BGA
Budget & Costi
budget_riepilogo id anno, mese, struttura, notti_nom, notti_bgt, notti_cons, pm_lordo_bgt, pm_lordo_cons, ricavo_bgt, ricavo_cons, comm_bgt, comm_cons, netto_a_bgt, netto_a_cons, tot_fissi, tot_variabili, netto_b_bgt, netto_b_cons - BGT BGI BGA
budget_stato anno confermato, confermato_da, confermato_il, note - BGI
dati_mensili id centro_costo_id, anno, mese, notti_potenziali, notti_budget, notti_consuntivo, soggiorni_budget, soggiorni_consuntivo centro_costo_id → centri_costo.id CST
costi_mensili id centro_costo_id, anno, mese, voce, tipo (fisso/variabile), importo_budget, importo_consuntivo centro_costo_id → centri_costo.id CST BGI
parametri id sede_id, centro_costo_id, anno, chiave, valore sede_id → sedi.id; centro_costo_id → centri_costo.id CST
biancheria_listino id fornitore, tipo_biancheria, prezzo_unitario - CST
biancheria_set id centro_costo_id, biancheria_listino_id, quantita centro_costo_id → centri_costo.id; biancheria_listino_id → biancheria_listino.id CST
ricarichi id struttura, anno, mese, percentuale - BGT
Aggregati Generali
generale_mensile id anno, mese, notti_bgt, notti_cons, ricavo_bgt, ricavo_cons, netto_a_bgt, netto_a_cons, costi_fissi, costi_variabili, netto_b_bgt, netto_b_cons - BGT
generale_struttura id anno, struttura, notti_bgt, notti_cons, ricavo_bgt, ricavo_cons, netto_a_bgt, netto_a_cons, netto_b_bgt, netto_b_cons - BGT
utili_mensili id anno, mese, struttura, utile_bgt, utile_cons - BGT
Pulizie & Cash Flow
pulizie id mese, data, dove, chi, ore, costo_ora, totale_1, trasferta, pagato, note - PUL
saldi_sv id operatrice, data, tipo, importo, descrizione - PUL
pulizie_sync_log id azione, dettagli, utente, created_at - PUL
cashflow id mese, data, ota, descrizione, entrate, uscite, saldo, inserito_da, verificato - CFW
cashflow_sync_log id azione, dettagli, utente, created_at - CFW

Relazioni tra Pagine

Come le pagine si influenzano reciprocamente attraverso le tabelle condivise

CST BGI

costi_mensili viene letto da BGI per popolare la colonna Costi.
Quando il budget viene congelato (freeze), i costi vengono fotografati in budget_riepilogo.

BGI BGT

BGI scrive in budget_riepilogo i dati previsionali.
BGT li legge per il confronto budget vs consuntivo.

UKB BGT BGA BCF

UKB importa prenotazioni in prenotazioni e prenotazione_appartamenti.
Queste alimentano i dati consuntivo in BGT, BGA e BCF.

BGT BGA

Stesse tabelle (budget_riepilogo, prenotazioni).
BGT = vista aggregata, BGA = dettaglio singola struttura.

PUL (isolata)

Usa solo pulizie e saldi_sv.
Non ha dipendenze con altre pagine.

CFW (isolata)

Usa solo cashflow.
Export opzionale verso Google Sheets.

File di Supporto

FileTipoDescrizioneStato
config.php CONFIG Connessione DB (PDO), CORS, session, helper json_response() Attivo
install.php SETUP Crea tabelle base: users, sessions, links, categories, invites Eseguito
migrate.php MIGRAZIONE Crea tabelle dati: sedi, appartamenti, centri_costo, prenotazioni, costi_mensili, budget_riepilogo, ecc. Eseguito
schema.sql SCHEMA Schema SQL completo di riferimento (non eseguibile direttamente) Riferimento
update-db.php MIGRAZIONE Aggiunge tabella deadlines Eseguito
update-db-v2.php MIGRAZIONE Aggiunge deadlines (v2), budget_rows, bookings, budget_sync_log Eseguito
update-db-pulizie.php MIGRAZIONE Crea pulizie, pulizie_sync_log, saldi_sv Eseguito
update-db-cashflow.php MIGRAZIONE Crea cashflow, cashflow_sync_log Eseguito
update-db-budget.php MIGRAZIONE Aggiunge colonna num_unita ad appartamenti (Doria = 3) Eseguito
update-db-freeze.php MIGRAZIONE Crea tabella budget_stato per freeze budget DA ESEGUIRE

File di debug da eliminare dal server: google-sheets.php, test-apps-script.php, debug-generale.php, debug-dati.php, debug-confronto.php, debug-luigi.php, debug-costi-vs-utili.php

Note Architetturali

ArgomentoDettaglio
Consolidamento 2025 Per il 2025, Respiro + Luce + Riflesso sono consolidati in LeVolte. Dal 2026 sono 7 strutture separate. La funzione getStructureConfig() in budget-api.php gestisce questa logica.
Doria = 3 unita La struttura Doria (Roma) ha 3 appartamenti (Clelia, Drusilla, Ottavia) ma 1 solo record in appartamenti. La colonna num_unita = 3 viene usata per calcolare le notti potenziali: giorni_mese × SUM(num_unita).
Formula prezzi BGI Prezzo Netto (editabile) → Prezzo Lordo = Netto / 0.80 → Ricavo Lordo = Lordo × Notti BGT → Comm OTA = Ricavo × 20% → Netto A = Ricavo - Comm → Netto B = Netto A - Costi
Freeze budget Quando confermato, i costi da costi_mensili vengono fotografati in budget_riepilogo (tot_fissi, tot_variabili). Da quel momento BGI legge i costi dal riepilogo, non piu in tempo reale.
Autenticazione TOTP (Google Authenticator) + cookie da_hub_token. Ogni API verifica il token via checkSession(). Sessione 24h (30gg con remember).
Formato numeri Italiano con separatore migliaia sempre: 1.095, 38.721,25. Regex: /\B(?=(\d{3})+(?!\d))/g
Sedi e centri costo Assisi (LeVolte, Respiro, Luce, Riflesso), Roma (Doria → Clelia+Drusilla+Ottavia), Veneto (Jesolo, Motta). Join: appartamenti.centro_costo (TEXT) → centri_costo.codice