AGENDA DW E SD — VERSIONE TEAM 1.0 App web installabile su Android e Windows tramite Chrome. Non sono necessari APK, EXE o pubblicazione negli store. PRIMA DI CARICARE Il pacchetto lavora esclusivamente in /dw-agenda/ e nel database Sql1568794_2. Non modificare file, DNS o impostazioni PHP del sito aziendale. Conserva una copia privata della cartella dw-agenda attuale prima di aggiornare. Non caricare ZIP, backup o queste istruzioni nella radice pubblica del sito. 1. CARICAMENTO Estrai lo ZIP sul PC. Dentro trovi la cartella dw-agenda. Caricane il CONTENUTO nella cartella dw-agenda già presente su Aruba. Non creare dw-agenda/dw-agenda. Puoi sostituire i file omonimi del precedente pacchetto OAuth: callback e collegamento vengono aggiornati per l'accesso multiutente. Carica anche TUTTA la cartella private/vendor e le sottocartelle. Questo pacchetto NON contiene e NON sostituisce: private/config.php (password database e chiave cifratura) private/oauth-config.php (Client ID, Client secret e callback) private/web.config (protezione 404.7 già verificata) Questi tre file devono rimanere sul server. Non condividere la chiave d'installazione con i colleghi: serve solo al server per cifrare i token. Non ricaricare il vecchio setup.php né l'esportazione SQL del sito .it. 2. PRIMO ACCESSO E DATABASE Apri https://www.dental-world.eu/dw-agenda/index.php con Chrome. Premi Accedi con Jira e usa l'account Luca Morea già utilizzato. Autorizza il sito dentalworldsrl.atlassian.net. È normale dover autorizzare di nuovo: questa versione registra separatamente ogni account. Apri Impostazioni → Configurazione amministratore → Prepara database versione 2. Questa operazione amplia SOLO il campo meta_value della tabella agenda_meta da TEXT a MEDIUMTEXT e registra la versione; non elimina i dati. È necessaria per memorizzare l'elenco completo di eventi e task. Premi Aggiorna Jira. La prima richiesta prima dell'aggiornamento schema mostra un avviso: è previsto. Ripetila dopo aver preparato il database. 3. CONTROLLARE EVENTI E TASK Calendario: tutti gli eventi CSM leggibili dal tuo account, anche completati. Story = Sviluppo Dentale 2.0; Epic = Dental World, secondo la convenzione indicata. Tipi diversi sono segnalati come Da classificare. Sono mostrati sia i giorni feriali sia il weekend. Gli eventi senza date rimangono visibili in una sezione apposita. Attività del team: tutti i ticket KAN leggibili, con assegnatari e stati. Le mie attività: solo quelle assegnate all'account che ha effettuato accesso. La scadenza DA FARE ENTRO ha precedenza sulla Data di scadenza, se compilata. Le date degli eventi non vengono confuse con le date di preparazione KAN. Apri un evento e abbina la scheda KAN corretta: i titoli corrispondenti sono proposti in alto ma l'app non abbina automaticamente. Include i sottotask. Gli abbinamenti sono personali, salvati nell'app, e non modificano Jira. Con filtro azienda attivo i task non abbinati non vengono mostrati. COMPLETAMENTO: il cerchio accanto a un task chiede conferma e invia a Jira la transizione di completamento disponibile. La spunta appare solo dopo la conferma letta da Jira. Non completa l'evento CSM o i task fratelli. Se ci sono transizioni ambigue/campi obbligatori, usa Apri in Jira. La prima verifica va fatta con un'attività che vuoi davvero completare, poi controlla lo stato su Jira. Non sono state effettuate modifiche reali durante lo sviluppo o i test del pacchetto. La riapertura di un task completato si gestisce da Jira. 4. INSTALLAZIONE SUI DISPOSITIVI ANDROID: apri l'agenda in Chrome, menu ⋮ → Aggiungi a schermata Home → Installa. WINDOWS: apri l'agenda in Chrome, icona Installa nella barra indirizzi; in alternativa menu → Trasmetti, salva e condividi → Installa pagina come app. Le etichette possono variare con la versione di Chrome. L'app avrà icona e finestra propria, ma richiede Internet. La sessione dura fino a 12 ore e può scadere prima in base alla gestione sessioni dell'hosting. In quel caso Accedi con Jira senza fornire chiavi. In questa versione il percorso di installazione e notifiche previsto è Chrome. 5. NOTIFICHE DI PROVA Sul telefono (o PC) apri Impostazioni → Attiva notifiche e consenti gli avvisi. Premi Invia una prova. Verifica che la notifica arrivi, anche a schermo bloccato. Un invio accettato dal servizio push non garantisce che il sistema mostri subito l'avviso: controlla Non disturbare, autorizzazioni e risparmio batteria. In Windows il browser deve poter eseguire le attività in background. Se manca mbstring o OpenSSL nelle verifiche di Impostazioni, comunicare il risultato prima di attivare i promemoria. Le librerie sono già incluse. Ogni account può registrare fino a 8 dispositivi. Su un PC condiviso disattiva le notifiche prima di lasciare il dispositivo: Esci termina la sessione ma non disattiva gli avvisi già autorizzati. 6. PREFERENZE PROMEMORIA Sono disattivati inizialmente. Attivali da Impostazioni e salva. Eventi: avviso il giorno prima della data di inizio (o scadenza se manca). Task non completati: il giorno prima e il giorno della scadenza. Default: solo i propri task; ogni utente può scegliere tutto il team. Ora predefinita: 09:00, fuso Europe/Rome (ora legale automatica). Il controllo invia alla prima esecuzione dopo l'ora scelta, non al minuto esatto. I promemoria uguali non vengono reinviati a ogni controllo sullo stesso dispositivo; una consegna interrotta può essere ritentata. 7. SCHEDULER ARUBA — UNA SOLA CONFIGURAZIONE PER IL TEAM Solo l'account di Luca vede le credenziali in Impostazioni → Scheduler Aruba. URL: https://www.dental-world.eu/dw-agenda/cron.php Nome task: Agenda Jira — promemoria Ripetizione: ogni 30 minuti Username: agenda Password: COPIA quella mostrata nella sezione Scheduler dell'app. NON usare password MySQL, password Jira o Client secret. Imposta data inizio attuale e data termine futura (es. fra un anno). Verifica il fuso orario del pannello Aruba; l'app calcola i promemoria in ora italiana. Usa Test URL prima di abilitare e controlla poi l'ultimo controllo nell'app. La chiamata deve essere HTTPS: non inviare credenziali su HTTP. Se il menu Aruba consente soltanto HTTP, oppure il Test URL restituisce 401, non attivare il task: serve verificare con Aruba come effettuare la chiamata HTTPS autenticata. Il pulsante Esegui controllo adesso serve a verificare manualmente la logica, ma NON sostituisce lo scheduler automatico. Il cron processa fino a 5 account per chiamata con un budget indicativo di 80 secondi fra account; per team più grandi procede a rotazione nei passaggi successivi. Ritardi o limiti dell'hosting possono allungare l'intervallo. Le credenziali non vanno condivise con i colleghi. 8. ABILITARE I COLLEGHI Nella console Atlassian dell'app Agenda DW e SD apri Distribution e abilita Enable sharing. Compila gli eventuali dati richiesti dalla console con informazioni aziendali corrette. Non serve pubblicare sul Marketplace. Il callback resta https://www.dental-world.eu/dw-agenda/oauth-callback.php Non modificare i tre scope già configurati. L'app richiede anche offline_access nel flusso di accesso per il rinnovo del token. Invia ai colleghi SOLO https://www.dental-world.eu/dw-agenda/ Ognuno accede con Jira e autorizza l'integrazione; non crea una propria app. Può comparire l'avviso di app non ancora revisionata da Atlassian. La condivisione della tua integrazione NON concede i tuoi permessi personali: ogni collega vede e modifica soltanto ciò che Jira gli consente e agisce a proprio nome. Le limitazioni aziendali alle integrazioni restano valide. Prima della distribuzione generale prova con un collega: identità distinta, attività personali corrette, accesso negato alle attività non consentite. 9. GESTIONE E LIMITI Accedi con Jira è l'unico accesso pubblico dell'app; config e segreti rimangono nella cartella private protetta. Token e iscrizioni push sono cifrati nel DB. La cache di eventi/task e le preferenze sono separate per account. Non viene memorizzata una copia offline dei dati Jira. L'app non sincronizza Google Calendar: calendario e notifiche sono nell'app. Non ci sono avvisi al minuto o reminder un'ora prima: i dati esaminati hanno date senza orario. Non sono inclusi allegati e commenti Jira nell'interfaccia. In caso di revoca permessi Jira, il prossimo aggiornamento ne rispetta l'esito; una cache precedente può restare visibile fino al successivo aggiornamento. Scollega account elimina i dati personali dall'app. La revoca dell'accesso OAuth si gestisce anche in Atlassian → app collegate. L'archivio cacert.pem va aggiornato periodicamente da curl.se, verificandone l'integrità. La verifica HTTPS resta sempre attiva. VERIFICHE EFFETTUATE Sintassi dei file PHP verificata con PHP 8.5, dipendenze risolte per PHP 8.4. Test di separazione account, evidenziazione assegnatario, date e promemoria, rifiuto endpoint push arbitrari, cifratura token, rifiuto token alterati, generazione VAPID e cifratura notifiche su Windows. Interfaccia controllata nel browser a dimensione desktop e 390px mobile con dati DIMOSTRATIVI; nessun errore JavaScript rilevato nelle viste provate. Audit Composer: nessuna vulnerabilità nota segnalata al momento del controllo. Da verificare sull'ambiente reale: OAuth multiutente, aggiornamento schema, API Jira e transizioni reali, notifica Android/Windows e scheduler Aruba. MANUTENZIONE LIBRERIE Le versioni sono bloccate in private/composer.lock. Sono inclusi codice e licenze delle dipendenze. Due adattamenti locali passano il percorso esplicito openssl.cnf a openssl_pkey_new/export in ECKey.php ed Encryption.php, per compatibilità con hosting Windows. Conservare gli adattamenti negli upgrade.