Vai al contenuto

Audit Chiusura SafeOps - 2026-04-22

Esito

Audit chiuso sul perimetro operativo lavorato in questa sessione:

  • calendario globale tenant;
  • calendario personale condiviso/privato;
  • condivisione eventi calendario per utenti tenant selezionati;
  • tipologie calendario operative, incluse intervento, ticket e promemoria;
  • menu calendario globale su tenant NetOpen;
  • ticket e calendario ticket nel perimetro permessi roem;
  • interventi;
  • rapportini intervento;
  • navigazione HTTPS sulle schermate rapportini;
  • firma tecnico/cliente su rapportino.

Il perimetro verificato e utilizzabile. Resta aperto solo il controllo dell'invio email calendario verso client Outlook/ICS reali. Non e una certificazione dell'intero working tree, perche nel branch sono presenti modifiche parallele non appartenenti a questo intervento.

Stato Repository

Branch rilevato: wip/integration-safeops-20260421.

Working tree non pulito. File principali nel perimetro audit:

  • app/__init__.py
  • app/modules/calendar_global.py
  • app/modules/interventi/models.py
  • app/modules/interventi/views.py
  • app/services/calendar_hub.py
  • app/templates/appbuilder/custom/calendar_global.html
  • app/templates/appbuilder/custom/intervento_rapportino.html
  • app/templates/appbuilder/custom/intervento_rapportino_add.html
  • app/templates/appbuilder/custom/intervento_rapportino_list.html
  • app/modules/iam/menu_runtime.py
  • migrations/versions/a7e4c2f9d830_add_user_calendar_event_sharing.py

Sono presenti molte altre modifiche e file non tracciati, inclusi asset demo, frontend e documentazione. Non sono stati valutati come parte della chiusura di questo audit.

Verifiche Eseguite

Compilazione Python

Comando:

python -m py_compile app/__init__.py app/modules/calendar_global.py app/modules/interventi/models.py app/modules/interventi/views.py app/services/calendar_hub.py

Esito: OK.

Parsing Template Jinja

Template verificati:

  • appbuilder/custom/calendar_global.html
  • appbuilder/custom/intervento_rapportino.html
  • appbuilder/custom/intervento_rapportino_add.html
  • appbuilder/custom/intervento_rapportino_list.html

Esito: OK.

Stato Servizio

Comando:

systemctl is-active safeops-web.service

Esito: active.

Smoke Live HTTPS

Route verificate su netopen.nxt-sense.eu:

  • https://netopen.nxt-sense.eu/calendario-globale/
  • https://netopen.nxt-sense.eu/intervento-rapportino-admin/add
  • https://netopen.nxt-sense.eu/interventi/list/
  • https://netopen.nxt-sense.eu/ticketview/list/
  • https://netopen.nxt-sense.eu/intervento-rapportino-admin/list/

Esito: tutte rispondono 302 FOUND verso login con next relativo. Nessun 500, nessun redirect http:// rilevato nello smoke non autenticato.

Verifiche DB e Permessi

  • Tabelle presenti: user_calendar_event, user_calendar_event_share, intervento_rapportino.
  • Utente roem attivo.
  • Ruoli roem: Public, ROLE_PROFILE_ADMIN_TENANT, USR_roem.
  • Permessi verificati per calendario globale, ticket, interventi e rapportini.
  • Tenant NetOpen verificato con utenti tenant-scoped: admin, ids_tecnico, roem.

Verifiche Funzionali Calendario

Eseguiti test temporanei con cleanup immediato:

  • evento Promemoria globale tenant visibile a owner, utente tenant e admin;
  • evento Ticket condiviso con utente selezionato visibile a owner, destinatario e admin;
  • evento privato non visibile ad altro utente tenant;
  • cleanup degli eventi test completato.

Esito: OK.

Test Automatici

Comando tentato:

python -m pytest tests/test_analytics_engine_integration.py tests/test_chat_integration.py

Esito: non eseguito, pytest non installato nell'ambiente Python corrente.

Funzionalita Consolidate

Calendario Globale

  • Vista calendario globale disponibile a livello tenant.
  • Voce menu visibile in tenant sotto Operativo -> Calendario Globale.
  • Eventi personali con visibilita Globale tenant, Utenti selezionati, Solo personale.
  • Condivisione confinata agli utenti assegnati al tenant.
  • Invito email con destinatari selezionabili, confinati al tenant.
  • Campi aggiunti per modalita incontro, luogo, telefono e link videocall.
  • Tipologie personali estese: intervento, ticket, promemoria, riunione, videocall, ferie, malattia, permesso, altro.
  • Export ICS.
  • Redirect control-plane verso tenant host gestito dove possibile.
  • Permessi assegnati ai ruoli operativi rilevanti su NetOpen.

Ticket

  • Lista ticket raggiungibile.
  • Calendario ticket nel perimetro operativo.
  • Collegamento eventi ticket nel calendario globale.
  • Permessi roem attivati per ticket, calendario ticket, chat/conversazioni e funzioni operative collegate.

Rapportini Intervento

  • Lista rapportini accessibile da menu operativo.
  • Inserimento rapportino tramite flusso guidato.
  • Modifica rapportino reindirizzata al form operativo custom.
  • Paginazione dei rapportini per ticket.
  • Export CSV dalla lista rapportini.
  • Calcolo ore da orario inizio/fine quando il campo ore e vuoto.
  • Firme tecnico e cliente tramite canvas.
  • Firma aggiornata per supportare pointer, mouse e touch.
  • Link principali rapportini forzati su https://.
  • Redirect interni http://<stesso-host> riscritti in https:// per host pubblici .nxt-sense.eu.
  • next login normalizzato a path relativo.

Rischi Residui

  1. Invio email calendario / Outlook. Resta aperto il controllo su ricezione invito, visualizzazione organizzatore e accettazione ICS da client reale.

  2. pytest assente. La suite esistente non e stata eseguita per mancanza dipendenza nell'ambiente corrente.

  3. Working tree ampio. Ci sono modifiche parallele non valutate in questo audit. Prima di merge/rilascio va separato il perimetro calendario/rapportini dal resto.

  4. DDL runtime. Alcune tabelle/colonne vengono garantite a runtime. Per rilascio pulito e consigliato consolidare in migrazione Alembic.

Raccomandazione di Chiusura

Audit chiuso per il perimetro calendario globale, ticket e rapportini intervento.

Resta aperta solo la verifica invio email calendario:

  1. creare un evento calendario reale con invito email;
  2. verificare ricezione su roberto.emiliani@netopen.it;
  3. verificare che l'organizzatore sia nome/cognome utente e non SafeOps;
  4. verificare accettazione invito da Outlook senza errore ICS.