Partner Program

Integrazione tecnica per CTO

Documentazione essenziale per valutare l’integrazione con CLOe e i percorsi di modernizzazione legacy. Richiedi un Technical Audit in fondo alla pagina.

1 Safe-Path Migration

Piano in 4 step per migrare un’applicazione Yii Legacy (PHP < 7.4) verso PHP 8.x, minimizzando i downtime e garantendo la retrocompatibilità delle funzioni core. Approccio step-by-step come per CLOe.

Step 1 – Inventario e isolamento. Mappare codice e dipendenze: estensioni PHP deprecate/rimosse, librerie non compatibili con 8.x, utilizzo di costrutti deprecati (costruttori con nome della classe, each(), create_function(), parametri passati per riferimento implicito). Introdurre un layer di compatibilità (polyfill o wrapper) solo per le parti critiche e delimitare i moduli da migrare per primi (auth, presenze, export).

Step 2 – Ambiente parallelo e primo target 7.4. Allestire un ambiente (staging/mirror) identico al production. Portare l’applicazione su PHP 7.4 con Yii 1.x (o bridge verso Yii2 se già previsto), correggendo deprecation e type hints dove necessario. Obiettivo: zero breaking change per le funzioni core; test funzionali e regression su flussi critici (login, timbrature, report). CLOe ha seguito questo passaggio mantenendo le stesse API e contratti dati.

Step 3 – Upgrade a PHP 8.x e type safety. Eseguire l’upgrade a PHP 8.0/8.1 (o 8.2) nell’ambiente parallelo. Introdurre tipizzazione progressiva (parametri e return type), sostituire costrutti obsoleti con equivalenti 8.x (union types, named arguments dove utile, attributi se si pianifica evoluzione verso Yii2/3). Validare estensioni e dipendenze (Composer) e aggiornare solo ciò che è necessario; il resto resta invariato per ridurre il rischio.

Step 4 – Cut-over e rollback pianificato. Definire una finestra di cut-over con backup e script di rollback. Eseguire il passaggio in produzione, monitorare errori e performance (log, APM, health check). Mantenere la possibilità di ripristino rapido alla versione precedente. Documentare le modifiche e le configurazioni (PHP, web server, env) per ripetibilità e per futuri upgrade.

L’approccio step-by-step usato per CLOe permette di non “riscrivere tutto in un colpo”, di conservare la stabilità del core e di allineare progressivamente il codice agli standard PHP 8.x e alla sicurezza dei dati.

2 CLOe API-First Integration

Il modulo presenze CLOe espone i dati di timbratura (anche georeferenziati) tramite REST API e Webhook, in modalità API-First, per integrare con sistemi legacy o terze parti.

Metodo Uso Autenticazione
REST APIPolling, report, syncToken Bearer / API Key
WebhookEventi in tempo reale (consigliato)Firma HMAC + segreto

Endpoint REST (esempio): GET/POST https://[tenant].cloe.example/api/v1/punches

Il vostro sistema espone un endpoint HTTPS che CLOe chiama a ogni timbratura. Payload inviato da CLOe (esempio):

{
  "event": "punch.registered",
  "timestamp_utc": "2025-03-01T14:32:00.000Z",
  "payload": {
    "user_id": "usr_7f2a9b1c",
    "punch_id": "pch_abc123",
    "timestamp": "2025-03-01T15:32:00+01:00",
    "lat_long": {
      "latitude": 45.5456,
      "longitude": 11.5354
    },
    "accuracy": 12.5,
    "status_geofence": "inside",
    "geofence_id": "gf_office_vicenza",
    "source": "webapp_geofencing"
  }
}
Campo Descrizione
user_idIdentificativo univoco utente CLOe
timestampISO 8601, timezone dell’evento
lat_longCoordinate solo se timbratura georeferenziata
accuracyAccuratezza posizione in metri (es. GPS)
status_geofenceinside | outside | unknown
geofence_idId del perimetro autorizzato (se applicabile)

HTTPS obbligatorio. Validazione firma HMAC (header X-CLOe-Signature) con segreto condiviso per i webhook.

3 GDPR & Geofencing

CLOe gestisce il geofencing nella WebApp in modo da non memorizzare la posizione continua dell’utente e da minimizzare i dati di geolocalizzazione trattati, in linea con il principio di minimizzazione (GDPR art. 5).

Flusso. (1) La WebApp richiede una tantum il permesso di geolocalizzazione e ottiene coordinate e accuratezza solo nel momento della timbratura (entrata/uscita), senza tracciamento continuo. (2) Vengono inviate al server solo le coordinate del singolo evento di timbratura (timestamp, lat/long, accuracy). (3) Il server calcola la distanza (o il containment) rispetto ai perimetri autorizzati (geofence); l’esito è binario: “dentro/fuori” (e eventuale geofence_id). Il calcolo avviene solo sul server, con logica centralizzata e auditabile. (4) In database vengono memorizzati: identificativo utente, timestamp della timbratura, esito del geofence (es. status_geofence: inside/outside). Le coordinate grezze (lat/long) possono essere non memorizzate o conservate solo per il tempo strettamente necessario (es. contestazione) e poi cancellate o anonimizzate.

Conformità. Minimizzazione (nessun tracciamento continuo; dati di posizione limitati all’istante della timbratura). Finalità: verifica che la timbratura avvenga in prossimità di un’area consentita. Base giuridica: tipicamente obblighi contrattuali/legali (controllo presenze), da indicare in informativa e DPR. Sicurezza: HTTPS, accessi e log solo per ruoli autorizzati, retention limitata per le coordinate.

In sintesi: il geofencing in CLOe è progettato come verifica puntuale (match con il perimetro autorizzato) con calcolo lato server e senza memorizzazione della posizione continua, riducendo il rischio per la privacy e allineando il trattamento ai principi GDPR.

Technical Audit

Prenota una sessione tecnica con il nostro team: analisi del vostro stack, valutazione dell’integrazione CLOe e roadmap di modernizzazione su misura.

Richiedi un appuntamento

Oppure scrivici a info@digital-horizon.it con oggetto «Technical Audit».