Documentazione tecnica
Architettura della piattaforma
Vista d'insieme di frontend, microservizi, database e scheduler, con le note sul perimetro open source. Vedi anche la guida all'installazione · Torna ai download
Architettura
Vista d'insieme
- Frontend: portale web Angular (
portale_angular_18) e app mobile Ionic/Capacitor (app-data-smart). Entrambi parlano REST/JSON con i microservizi, autenticandosi con JWT (headerAuthorization: Bearer). - Backend: microservizi Spring (WAR su Tomcat), uno per dominio
funzionale. Ogni servizio ha il proprio database o schema PostgreSQL;
le letture cross-database usano
postgres_fdw(vedi le migrations FDW nel repositorydatabase). - Multi-tenant per installazione: la configurazione per installazione vive
in
config/<company>/dentro ogni servizio ed è selezionata a runtime con-Dspring.profiles.company=...e-Dspring.profiles.active=.... - Autorizzazioni: il portale espone menu e pagine in base a
azienda → preset → servizi → pagine (+ ruoli), tutto guidato dal database
(
ws_spring_portal_manager). I ruoli viaggiano nel JWT.
Domini e database principali
| Servizio | Database/schema | Note |
|---|---|---|
| ws_spring_portal_login / portal_manager | kcs-portal |
utenti, 2FA, pagine, ruoli, traduzioni, notifiche |
| ws_spring_cmp | companydb |
aziende, CRM, chat, recensioni, cantieri/SAL/certificati, fatture |
| ws_spring_biz_appointments | bizappointments |
appuntamenti (FDW verso companydb/kcs-portal) |
| ws_spring_booking | bk_booking |
prenotazioni risorse |
| ws_spring_bakeka | Bakeka |
bacheca, luoghi, audioguide |
| sw_e_ecommerce | onlineshop |
catalogo, carrello, ordini |
| ws_spring_documentary | filesystem + DB | repository documentale |
Scheduler
Lo scheduler è incluso nella distribuzione: l'host Windows
kondorcs.scheduleservices (KCSSchedule.exe) carica via reflection le
librerie di job (ILibraryProcess) e le esegue secondo la pianificazione
configurata nel database dello scheduler (SqlDataProviders).
Job inclusi (kondorcs.schedulelibrary.datasmart /
kondorcs.schedulelibrary.aifileprocessor):
- Notificatore — invio SMS/OTP del 2FA (token pendenti del login a due
fattori) e fan-out della coda notifiche
users_notify(kcs-portal) via SMTP/push; i record contypesentNULL vengono recapitati e marcati. Le preferenze utente sono inuser_mail_settings; per il push serve il proprioserviceAccountKey.jsonFirebase inws_spring_portal_manager. Endpoint di supporto inws_spring_portal_login(SchedulerLoginController, IP consentiti viascheduler.allowed.ips). - ReportFotovoltaico — riepilogo periodico della produzione
(tabelle
cmp_pv_*incompanydb). - CreditoSmsHosting — controllo del credito residuo del provider SMS.
- AIFileProcessor — estrazione dati dai PDF caricati nel documentale (certificati di pagamento, SAL, PDF generici con fallback AI).
Funzione NON inclusa, da fornire dall'installazione: la scadenza automatica
di prenotazioni/preventivi e i promemoria programmatici di BizAppointments
(nella piattaforma di origine fanno parte di un job del modulo enterprise;
gli helper dati sono già presenti in DBController della libreria datasmart).
Riferimento: biz_appointments_add_scaduto_status.sql nel repo database.
Note sul perimetro
Questa distribuzione è il perimetro open source del progetto MyTown e corrisponde ai risultati delle attività di ricerca e sviluppo del progetto cofinanziato (PR FESR Abruzzo 2021-2027, Intervento 1.1.1.1): Core Framework, servizi applicativi trasversali e moduli verticali di settore, rilasciati con licenza AGPL v3.
Alcuni moduli della piattaforma di origine (helpdesk ticketing, gestione
flotte, HR/sicurezza, magazzino, webmail, import listini) non fanno parte
del progetto finanziato né di questa distribuzione: sono funzionalità
enterprise e personalizzazioni realizzate su commessa, distribuite da
Kondor CS con licenza commerciale e nella titolarità di Kondor CS ovvero,
ove contrattualmente previsto, dei rispettivi clienti che ne hanno
commissionato lo sviluppo (vedi LICENSING.md, "Titolarità e doppia
licenza").
Il perimetro open source è completo e funzionante senza tali moduli: i punti
di estensione corrispondenti (es. chiavi hrurl/urlRFIService negli
environment del portale) sono opzionali e possono restare vuoti.
