Skip to content

Latest commit

 

History

History
155 lines (124 loc) · 4.47 KB

File metadata and controls

155 lines (124 loc) · 4.47 KB

Piano di Refactoring - SCORM Builder App

Obiettivo

Trasformare l'app prototipale in un'applicazione Shiny modulare e user-friendly per:

  1. Autenticazione Microsoft
  2. Navigazione gerarchica SharePoint (Sito → Drive → Cartelle)
  3. Selezione multipla di video
  4. Assegnazione di titoli in batch
  5. Generazione SCORM in parallelo con feedback utente

Decisioni Architetturali

Struttura Organizzativa

  • Moduli Shiny (R/mod_*.R) per logica riutilizzabile
  • Utilities (R/utils_*.R, R/fct_*.R) per funzioni di supporto
  • app.R come orchestratore principale
  • config.yml per configurazioni multi-ambiente

Workflow Utente

  1. Login: Redirect OAuth Microsoft
  2. Navigazione SharePoint: Selezione sequenziale (Sito → Drive → Cartelle)
  3. Selezione Video: Caricamento multiplo di file .mp4
  4. Assegnazione Titoli: Form per ogni video selezionato
  5. Generazione SCORM: Batch processing con progress e notifiche

Storage Temporaneo

  • Video scaricati in tempdir()
  • SCORM generati in tempdir()
  • Caricamento su SharePoint al completamento
  • Pulizia automatica con file.remove()

Feedback Utente

  • Toast notifications: Conferme rapide, successi, avvertimenti
  • Modal con progress bar: Operazioni lunghe (download, generazione, upload)
  • Stato in tempo reale nella UI

Struttura di File Proposta

scorm-builder/
├── app.R                          # App principale + UI
├── R/
│   ├── mod_auth.R                 # Modulo autenticazione
│   ├── mod_sharepoint_nav.R       # Modulo navigazione SharePoint
│   ├── mod_video_selector.R       # Modulo selezione video e titoli
│   ├── mod_scorm_generator.R      # Modulo generazione SCORM
│   ├── fct_microsoft.R            # Funzioni Microsoft365R
│   ├── fct_scorm.R                # Funzioni SCORM (refactored da appunti.R)
│   ├── fct_validation.R           # Validazioni
│   └── utils_ui.R                 # Helper UI (toast, modals, etc.)
├── config.yml                     # Configurazione OAuth
├── scorm_template/                # Template SCORM (presente)
└── .Renviron                       # Credenziali (presente)

Fasi di Implementazione

Fase 1: Preparazione

  • Creare struttura cartella R/
  • Refactor appunti.RR/fct_scorm.R con funzione make_scorm() migliorata
  • Estrarre funzioni Microsoft325R → R/fct_microsoft.R
  • Creare helper UI → R/utils_ui.R

Fase 2: Moduli Base

  • mod_auth.R: Gestire token Azure, stato autenticazione
  • mod_sharepoint_nav.R:
    • Caricamento siti
    • Selezione drive
    • Navigazione cartelle
    • Lista file .mp4

Fase 3: Selezione e Configurazione

  • mod_video_selector.R:
    • Visualizzazione video disponibili
    • Selezione multipla (checkbox)
    • Form dinamico per assegnazione titoli
    • Validazione nomi SCORM

Fase 4: Generazione e Upload

  • mod_scorm_generator.R:
    • Orchestrazione generazione batch
    • Modal progress bar
    • Toast notifications
    • Upload su SharePoint

Fase 5: UI/UX e Test

  • Tema bslib coerente (Bootstrap 5)
  • Layout responsive
  • Gestione errori e edge cases
  • Test flusso completo

Miglioramenti Specifici

fct_scorm.R (refactored da appunti.R)

make_scorm(video_path, title, scorm_name, output_dir)
# + gestione errori
# + logging
# + validazione input

mod_sharepoint_nav.R

  • Caricamento lazy delle cartelle (non tutto in una volta)
  • Caching dei siti per performance
  • Gestione errori connessione

mod_video_selector.R

  • DataTable reattivo con selezione
  • Form dinamico per titoli
  • Suggerimenti auto-compilati da nome file

UI Principale

  • Sidebar con bslib: Steps (Autenticazione → SharePoint → Video → Titoli → Genera)
  • Main panel: Contenuti dinamici
  • Footer: Status e notifiche

Considerazioni Tecniche

  • Autenticazione: Token memorizzato in session$userData
  • Reattività: reactive() per SharePoint tree, reactiveValues() per stato selezioni
  • Performance: Debounce/throttle per API calls
  • Errori: Try-catch con notifiche user-friendly

Dipendenze Attuali

  • shiny, bslib
  • AzureAuth, AzureGraph, Microsoft365R
  • dplyr, purrr, tidyverse
  • fs, zip
  • log4r

Possibili aggiunte:

  • shinyFeedback (validazione form)
  • promises, future (operazioni async)

Timeline Stimato

  • Fase 1: 1h
  • Fase 2: 2h
  • Fase 3: 2h
  • Fase 4: 2h
  • Fase 5: 1h
  • Totale: ~8h