PRESENZE QR - PROTOTIPO PHP + SQLITE ==================================== Contenuto - config.php: configurazione database SQLite e URL base - schema.sql: struttura SQLite, creata automaticamente al primo avvio - migrate_mysql_to_sqlite.php: importazione una tantum dei dati MySQL esistenti (solo CLI) - login.php / logout.php: autenticazione - admin.php: pannello responsabili, creazione addette/cantieri, link QR e timbrature - timbra.php: pagina mobile raggiunta dal QR del cantiere - salva_timbro.php: endpoint POST per registrare la timbratura - assets/app.css: stile responsive - assets/app.js: geolocalizzazione e conferma REQUISITI - PHP 8.1+ con PDO SQLite - PDO MySQL richiesto solo per importare i dati preesistenti - Nginx configurato per servire PHP tramite PHP-FPM - HTTPS obbligatorio per uso reale (geolocalizzazione e sessioni sicure) INSTALLAZIONE 1. Verifica che PHP abbia PDO SQLite abilitato. 2. In config.php imposta sqlite_path a un percorso fuori dalla cartella pubblica (predefinito /var/lib/presenze/presenze.sqlite). La directory deve essere scrivibile dall'utente che esegue PHP sia da CLI sia dal server web. 3. Carica i file in una directory accessibile tramite Nginx/PHP-FPM. 4. Per conservare i dati del precedente MySQL, lascia temporaneamente la vecchia sezione db in config.php ed esegui da terminale: php migrate_mysql_to_sqlite.php. Lo script è solo CLI e interrompe l'import se SQLite contiene già dati. 5. Dopo aver verificato il numero di record e il funzionamento dell'app, rimuovi le credenziali MySQL da config.php e archivia un backup del vecchio database. 6. Accedi al pannello responsabili per gestire utenti e cantieri. Gli operatori accedono con account worker. 7. Per ogni cantiere usa il link "Apri/QR" e stampa la pagina del QR. Il prototipo usa un generatore QR esterno (api.qrserver.com) solo per visualizzare il codice: il link testuale rimane disponibile. FUNZIONAMENTO - Il QR contiene un URL con codice pubblico casuale del cantiere. - L'operatrice effettua il login sul browser del telefono. La sessione resta attiva per un periodo limitato (7 giorni); il browser può richiedere nuovamente il login. - La pagina chiede la posizione solo al momento della timbratura. - Il server verifica la distanza dalle coordinate del cantiere e registra soltanto esito, distanza stimata e accuratezza, NON le coordinate GPS grezze. - La timbratura viene registrata solo dopo il tocco esplicito su Entrata/Uscita. - Il prototipo non registra automaticamente le uscite e non gestisce turni pianificati, assenze, offline, reset password o ruoli multipli. AVVERTENZE IMPORTANTI Questo è un prototipo tecnico iniziale, non un sistema certificato né pronto per l'uso lavorativo senza verifiche. Prima di usare dati reali: - far valutare al consulente privacy/lavoro informativa, base giuridica, minimizzazione, tempi di conservazione e adempimenti lavoristici; - definire raggio GPS e procedura alternativa quando la posizione non è disponibile o imprecisa; - configurare HTTPS, backup, aggiornamenti, limitazione tentativi, log e policy di conservazione; - cambiare tutte le credenziali e proteggere la directory; - testare su dispositivi reali e valutare le condizioni di rete dei cantieri.