diff --git a/3-PB/documentidiprogetto/analisideirequisiti_1.2.0.typ b/3-PB/documentidiprogetto/analisideirequisiti_2.0.0.typ similarity index 58% rename from 3-PB/documentidiprogetto/analisideirequisiti_1.2.0.typ rename to 3-PB/documentidiprogetto/analisideirequisiti_2.0.0.typ index cf578ea..4a8a475 100644 --- a/3-PB/documentidiprogetto/analisideirequisiti_1.2.0.typ +++ b/3-PB/documentidiprogetto/analisideirequisiti_2.0.0.typ @@ -7,9 +7,14 @@ verificatori: ("Pietro Crotti", "Matteo Marangon", "Aleena Mathew", "Carmelo Russello", "Marco Egidi"), tipo: "Documento Esterno", destinatari: ("Sigma18", "Prof. Tullio Vardanega", "Prof. Riccardo Cardin", "Var Group S.p.A."), - versioneAttuale: "1.2.0", + versioneAttuale: "2.0.0", content: content, versioni: ( + "2.0.0", + "2025/08/29", + "Matteo Marangon", + "Carmelo Russello", + "Ristrutturazione requisiti, tracciamento e riepilogo", "1.2.0", "2025/07/17", "Carmelo Russello", @@ -111,14 +116,14 @@ Il flusso di lavoro verrà quindi visualizzato attraverso un #glossario("client" Nell'interfaccia, i *blocchi* rappresentano le azioni effettuabili, mentre gli *archi* che li collegano tra loro corrispondono a relazioni tra i singoli componenti dell'automazione. == Glossario -Per assicurare la massima chiarezza e prevenire possibili malintesi legati all'interpretazione dei termini utilizzati nei documenti, è stato redatto un glossario. #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/glossario.pdf")[Questo] strumento raccoglie e definisce in maniera precisa tutti i termini che potrebbero risultare ambigui, tecnici o comunque soggetti a interpretazioni diverse. +Per assicurare la massima chiarezza e prevenire possibili malintesi legati all'interpretazione dei termini utilizzati nei documenti, è stato redatto un glossario. #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/glossario_2.0.0.pdf")[Questo] strumento raccoglie e definisce in maniera precisa tutti i termini che potrebbero risultare ambigui, tecnici o comunque soggetti a interpretazioni diverse. All'interno dei documenti, ogni termine presente nel Glossario sarà opportunamente segnalato tramite la seguente notazione: #glossario("parola"), in modo da permettere al lettore di identificarne facilmente il significato esatto facendo riferimento al glossario stesso. == Riferimenti === Riferimenti normativi -- #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/normediprogetto_1.0.0.pdf")[Norme di progetto (1.0.0)] +- #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/normediprogetto_2.0.0.pdf")[Norme di progetto (2.0.0)] - #link("https://www.math.unipd.it/~tullio/IS-1/2024/Progetto/C3.pdf")[Capitolato C3: Automatizzare le _routine_ digitali tramite l'intelligenza generativa] (*Ultimo accesso il: 16/07/2025*) @@ -128,7 +133,7 @@ All'interno dei documenti, ogni termine presente nel Glossario sarà opportuname === Riferimenti informativi -- #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/glossario.pdf")[Glossario (0.11.0)] +- #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/glossario_2.0.0.pdf")[Glossario (2.0.0)] - #link("https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T05.pdf")[Dispensa T05: Analisi dei requisiti] (*Ultimo accesso il: 16/07/2025*) @@ -211,7 +216,10 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 4. Il sistema verifica le credenziali e permette di accedere alla #glossario("dashboard"). - *Estensioni*: - Credenziali non valide (#link()[*UC[4]*]). - - Errore generico (#link()[*UC[5]*]). + - Errore "Utente non trovato" (#link()[*UC[5]*]). + - Errore "Troppi tentativi di accesso" (#link()[*UC[6]*]). + - Errore "Account non verificato" (#link()[*UC[7]*]). + - Errore generico (#link()[*UC[8]*]). === UC[2]: Inserimento _E-mail_ @@ -245,14 +253,60 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente inserisce le proprie credenziali. - 2. Il sistema individua le credenziali errate e invia un messaggio di errore all'utente. + 2. Il sistema mostra un messaggio di errore "_Invalid email or password_". 3. L'utente può ripetere l'inserimento delle credenziali precedentemente errate. +=== UC[5] Errore "Utente non trovato" + +- *Attore principale*: utente non autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di login. + +- *Post-condizioni*: l'utente visualizza il messaggio di errore. + +- *Scenario principale*: + 1. L'utente tenta di eseguire il login con una mail non registrata. + 2. Il sistema mostra un messaggio di errore "_User not found_". + + +=== UC[6] Errore "Troppi tentativi di accesso" + +- *Attore principale*: utente non autenticato. + +- *Pre-condizioni*: l'utente ha effettuato più tentativi di accesso falliti. + +- *Post-condizioni*: l'utente visualizza il messaggio di errore. + +- *Scenario principale*: + 1. L'utente tenta di accedere all'applicativo ripetutamente. + 2. Il sistema mostra un messaggio di errore "_Too many login attempts. Please try again later_". + + + +=== UC[7] Errore "Account non verificato" + +- *Attore principale*: utente non autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di login. + +- *Post-condizioni*: l'utente visualizza il messaggio di errore. + +- *Scenario principale*: + 1. L'utente tenta di eseguire il login con un account creato ma non verificato con codice di conferma. + 2. Il sistema mostra un messaggio di errore "_User account not confirmed_". + +//User account not confirmed + +// User not found + +//Too many login attempts. Please try again later -=== UC[5]: Errore generico +// Errore Generico + +=== UC[8]: Errore generico - *Attore principale*: utente. @@ -264,13 +318,24 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. Il sistema riceve dei dati da processare. 2. Il sistema non riesce a processare i dati e mostra un messaggio di errore all'utente. -#figure(image("../../assets/usecasediagrams/1,2,3,4,5.svg"), caption: [Diagramma casi d'uso UC[1], UC[2], UC[3], UC[4], UC[5]]) +#figure( + image("../../assets/usecasediagrams/Login.svg"), + caption: [Diagramma casi d'uso UC[1], UC[2], UC[3], UC[4], UC[5], UC[6], UC[7], UC[8]], +) + + + -=== UC[6]: Registrazione + + + + + +=== UC[9]: Registrazione - *Attore principale*: utente non autenticato. @@ -286,11 +351,16 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 5. L'utente reinserisce la _password_ creata. 6. Il sistema crea l'_account_ e salva le credenziali nel _database_. - *Estensioni*: - - _E-mail_ già in uso (#link()[*UC[9]*]). - - Errore generico (#link()[*UC[5]*]). + - Errore generico (#link()[*UC[8]*]). + - Errore "_User already exists_" (#link()[*UC[12]*]). + - Errore "È richiesta la password" (#link()[*UC[13]*]). + - Errore "È richiesto un codice di verifica" (#link()[*UC[14]*]). + - Errore "Le password non corrispondono" (#link()[*UC[15]*]). + - Errore "Password troppo corta" (#link()[*UC[16]*]). + - Errore "_Email quota limit exceeded_" (#link()[*UC[17]*]). -=== UC[7]: Creazione Password +=== UC[10]: Creazione Password - *Attore principale*: utente non autenticato. @@ -301,7 +371,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente inserisce la propria _password_ per la creazione dell'_account_. -=== UC[8]: Conferma Password +=== UC[11]: Conferma Password - *Attore principale*: utente non autenticato. @@ -312,7 +382,8 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente inserisce la propria _password_ per la creazione dell'_account_. -=== UC[9]: Errore "_E-mail_ già in uso" +// Diventa "User already exists" +=== UC[12]: Errore "_User already exists_" - *Attore principale*: utente non autenticato. - *Pre-condizioni*: l'utente non possiede un _account_, l'utente ha confermato il _form_ di registrazione. @@ -322,151 +393,259 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente inserisce i suoi dati nell'apposito form di registrazione. 2. Il sistema individua che esiste già un _account_ che utilizza la _e-mail_ scelta. - 3. Il sistema ritorna un messaggio di errore all'utente. + 3. Il sistema ritorna un messaggio di errore all'utente "_User already exists_". + -#figure(image("../../assets/usecasediagrams/2,5,6,7,8,9.svg"), caption: [Diagramma casi d'uso UC[2], UC[5], UC[6], UC[7], UC[8], UC[9]]) +=== UC[13] Errore "È richiesta la password" +- *Attore principale*: utente non autenticato. +- *Pre-condizioni*: l'utente si trova nella pagina di registrazione. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. +- *Scenario principale*: + 1. L'utente tenta di registrarsi senza inserire una password. + 2. Il sistema mostra un messaggio di errore "È richiesta la password". +=== UC[14] Errore "È richiesto un codice di verifica" -=== UC[10]: Creazione nuova _routine_ -- *Attore principale*: utente autenticato. +- *Attore principale*: utente non autenticato. -- *Pre-condizioni*: l'utente ha effettuato l'accesso e si trova nella _dashboard_. +- *Pre-condizioni*: l'utente si trova nella pagina di registrazione. -- *Post-condizioni*: viene creata una nuova _routine_. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. - *Scenario principale*: - 1. L'utente preme il tasto di creazione di una nuova _routine_ nella _dashboard_. - 2. L'utente inserisce il nome della _routine_. - 3. Il sistema crea una nuova _routine_ e l'utente viene portato alla pagina di modifica del flusso. + 1. L'utente tenta di registrarsi senza inserire un codice di verifica. + 2. Il sistema mostra un messaggio di errore "_Verification code is required_". -- *Estensioni*: - - Nome _routine_ già in uso (#link()[*UC[11]*]) - - Errore generico (#link()[*UC[5]*]). +=== UC[15] Errore "Le password non corrispondono" + +- *Attore principale*: utente non autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di registrazione. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. +- *Scenario principale*: + 1. L'utente inserisce una password e una conferma password non corrispondente. + 2. Il sistema mostra un messaggio di errore "_Passwords don't match_". -=== UC[11]: Errore "Nome _routine_ già in uso" -- *Attore principale*: utente autenticato. + === UC[16] Errore "Password troppo corta" -- *Pre-condizioni*: il sistema riceve il nome della _routine_ da creare. +- *Attore principale*: utente non autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di registrazione. -- *Post-condizioni*: il sistema verifica se il nome della _routine_ è univoco. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. - *Scenario principale*: - 1. L'utente inserisce il nome della _routine_. - 2. Il sistema verifica se il nome della _routine_ è univoco. - 3. Se il nome è univoco, il sistema crea la _routine_ e l'utente viene portato alla pagina di modifica del flusso. - 4. Se il nome non è univoco, il sistema mostra un messaggio di errore all'utente. + 1. L'utente inserisce una password con meno di 8 caratteri. + 2. Il sistema mostra un messaggio di errore "_Your password must have at least 8 characters_". + -#figure(image("../../assets/usecasediagrams/5,10,11.svg"), caption: [Diagramma casi d'uso UC[5], UC[10], UC[11]]) +=== UC[17] Errore "Email quota limit exceeded" +*Attore principale*: utente non autenticato. +- *Pre-condizioni*: l'utente ha tentato di registrarsi con un'email già utilizzata. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. +- *Scenario principale*: + 1. L'utente tenta di registrarsi con un'email già utilizzata. + 2. Il sistema mostra un messaggio di errore "_Email quota limit exceeded_". +// Email quota limit exceeded +// Errore Generico + +#figure( + image("../../assets/usecasediagrams/Registrazione.svg"), + caption: [Diagramma casi d'uso UC[2], UC[9], UC[10], UC[11], UC[12], UC[13], UC[14], UC[15], UC[16], UC[17]], +) -=== UC[12]: Generare una _routine_ mediante linguaggio naturale -- *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente si trova nella pagina di un flusso. -- *Post-condizioni*: vengono generati i blocchi all'interno dell'interfaccia. -- *Scenario principale*: - 1. L'utente preme il tasto dedicato nella pagina. - 2. L'utente inserisce la descrizione della _routine_ in linguaggio naturale. - 3. Il sistema genera i blocchi e gli archi all'interno dell'interfaccia. - 4. Il sistema mostra il flusso generato all'utente. +=== UC[18] Conferma email OTP +- *Attore principale*: utente non autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di verifica. + +- *Post-condizioni*: l'utente conferma la sua email utilizzando un codice OTP. + +- *Scenario principale*: + 1. L'utente si registra nell'applicazione. + 2. Il sistema invia un'email di conferma all'utente. + 3. L'utente riceve l'email e inserisce il codice OTP nella pagina di verifica. + 4. Il sistema verifica il codice OTP e conferma l'email dell'utente. - *Estensioni*: - - Errore "Impossibile generare il flusso" (#link()[*UC[15]*]). - - Errore generico (#link()[*UC[5]*]). - - Modifica del modello _GenAI_ per la generazione (#link()[*UC[14]*]). + - Errore "Utente non trovato" (#link()[*UC[5]*]). + - Errore Generico (#link()[*UC[8]*]). + - Errore "Codice di conferma scaduto" (#link()[*UC[19]*]). + - Errore "Codice di conferma non valido" (#link()[*UC[20]*]). + +=== UC[19] Errore "Codice di conferma scaduto" +- *Attore principale*: utente autenticato. +- *Pre-condizioni*: l'utente si trova nella pagina di verifica dell'account tramite codice di conferma. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. +- *Scenario principale*: + 1. L'utente inserisce il codice di conferma in seguito alla sua scadenza. + 2. Il sistema mostra un messaggio di errore "_Code expired_". -=== UC[13]: Visualizza modello _GenAI_ per la generazione -- *Attore principale*: utente esperto autenticato. -- *Pre-condizioni*: l'utente sta generando una routine mediante linguaggio naturale. +=== UC[20] Errore "Codice di conferma non valido" + +- *Attore principale*: utente autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di verifica dell'account tramite codice di conferma. -- *Post-condizioni*: il modello utilizzato per la generazione della _routine_ viene visualizzato. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. - *Scenario principale*: - 1. Il sistema mostra il modello _GenAI_ selezionato per la generazione della _routine_ nel menù a tendina. + 1. L'utente inserisce un codice di conferma errato. + 2. Il sistema mostra un messaggio di errore "_Code not valid_". +#figure( + image("../../assets/usecasediagrams/OTP.svg"), + caption: [Diagramma casi d'uso UC[5], UC[8], UC[18], UC[19], UC[20]], +) -=== UC[14]: Modifica modello _GenAI_ per la generazione -- *Attore principale*: utente esperto autenticato. -- *Pre-condizioni*: l'utente sta generando una routine mediante linguaggio naturale. -- *Post-condizioni*: il modello utilizzato per la generazione della _routine_ viene modificato. + +//Errori: +// User not found +// Code not valid +// Code expired +// Errore Generico + +//Diagramma per conferma +=== UC[21]: Creazione nuova _routine_ +- *Attore principale*: utente autenticato. + +- *Pre-condizioni*: l'utente ha effettuato l'accesso e si trova nella _dashboard_. + +- *Post-condizioni*: viene creata una nuova _routine_. - *Scenario principale*: - 1. Il sistema mostra il modello _GenAI_ selezionato per la generazione della _routine_ nel menù a tendina. + 1. L'utente preme il tasto di creazione di una nuova _routine_ nella _dashboard_. + 2. L'utente inserisce il nome della _routine_. + 3. Il sistema crea una nuova _routine_ e l'utente viene portato alla pagina di modifica del flusso. + +- *Estensioni*: + - Errore generico (#link()[*UC[8]*]). + - Errore "Il _workflow_ deve avere un nome" (#link()[*UC[22]*]). + - Errore "Il nome del _workflow_ deve avere meno di 25 caratteri" (#link()[*UC[23]*]). + +=== UC[22] Errore "Il _workflow_ deve avere un nome" + +- *Attore principale*: utente autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di modifica di un flusso. + +- *Post-condizioni*: l'utente visualizza il messaggio di errore. + +- *Scenario principale*: + 1. L'utente tenta di modificare un flusso. + 2. Viene richiesto all'utente di assegnare un nome al flusso. + 3. L'utente prova ad avanzare senza inserire un nome per il flusso + 4. Il sistema mostra un messaggio di errore "_Workflow name is required_". + - 2. L'utente seleziona un nuovo modello _GenAI_ dal menù a tendina. +=== UC[23] Errore "Il nome del _workflow_ deve avere meno di 25 caratteri" +- *Attore principale*: utente autenticato. + +- *Pre-condizioni*: l'utente si trova nella pagina di modifica di un flusso. + +- *Post-condizioni*: l'utente visualizza il messaggio di errore. + +- *Scenario principale*: + 1. L'utente tenta di modificare un flusso. + 2. Viene richiesto all'utente di assegnare un nome al flusso. + 3. L'utente prova ad inserire un nome più lungo di 25 caratteri + 4. Il sistema mostra un messaggio di errore "_Workflow name must be less than 25 characters_". +// Errore: Workflow name required +// Errore: Workflow name must be less than 25 characters -=== UC[15]: Visualizzazione dell'errore "Impossibile generare il flusso" +#figure( + image("../../assets/usecasediagrams/CreazioneRoutine.svg"), + caption: [Diagramma casi d'uso UC[8], UC[21], UC[22], UC[23]], +) + +=== UC[24]: Generare una _routine_ mediante linguaggio naturale - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente sta tentando di generare i blocchi del flusso tramite linguaggio naturale, ma si verifica un errore. +- *Pre-condizioni*: l'utente si trova nella pagina di un flusso. -- *Post-condizioni*: il sistema mostra il messaggio di errore all'utente. +- *Post-condizioni*: vengono generati i blocchi all'interno dell'interfaccia. - *Scenario principale*: - 1. L'utente l'inserisce il _prompt_ in linguaggio naturale. - 2. L'LLM non riesce a generare il flusso dei blocchi - 3. Il sistema mostra un messaggio di errore. + 1. L'utente preme il tasto dedicato nella pagina. + 2. L'utente inserisce la descrizione della _routine_ in linguaggio naturale. + 3. Il sistema genera i blocchi e gli archi all'interno dell'interfaccia. + 4. Il sistema mostra il flusso generato all'utente. +- *Estensioni*: + - Errore generico (#link()[*UC[8]*]). + - Errore "_Prompt is required_" (#link()[*UC[25]*]). -#figure(image("../../assets/usecasediagrams/5,12,13,14,15.svg"), caption: [Diagramma casi d'uso UC[5], UC[12], UC[13], UC[14], UC[15]]) +=== UC[25] Errore "_Prompt is required_" +- *Attore principale*: utente autenticato. +- *Pre-condizioni*: l'utente si trova nella pagina di creazione di un flusso. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. +1. L'utente tenta di generare un flusso utilizzando il linguaggio naturale senza fornire un prompt. +2. Il sistema mostra un messaggio di errore "_Prompt is required_". +// ERRORE: Prompt is required +#figure( + image("../../assets/usecasediagrams/Generazione.svg"), + caption: [Diagramma casi d'uso UC[8], UC[24], UC[25]], +) -=== UC[16]: Visualizzare i dettagli di una _routine_ esistente +=== UC[26]: Visualizzare i dettagli di una _routine_ esistente - *Attore principale*: utente autenticato. - *Pre-condizioni*: l'utente si trova nella _dashboard_. @@ -481,52 +660,44 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - - - -=== UC[17]: Visualizzazione nome di una _routine_ esistente +=== UC[27]: Visualizzazione nome di una _routine_ esistente - *Attore principale*: utente autenticato. - *Pre-condizioni*: - - Il sistema memorizza il nome della routine. + - Il sistema memorizza il nome della _routine_. - l'utente si trova nella pagina di modifica di un flusso. -- *Post-condizioni*: il sistema mostra il nome della routine selezionata. +- *Post-condizioni*: il sistema mostra il nome della _routine_ selezionata. - *Scenario principale* - 1. L'utente visualizza il nome della routine selezionata. + 1. L'utente visualizza il nome della _routine_ selezionata. -=== UC[18]: Visualizzazione diagramma dei blocchi di una _routine_ esistente +=== UC[28]: Visualizzazione diagramma dei blocchi di una _routine_ esistente - *Attore principale*: utente autenticato. - *Pre-condizioni*: - - Il sistema memorizza il diagramma dei blocchi della routine. + - Il sistema memorizza il diagramma dei blocchi della _routine_. - l'utente si trova nella pagina di modifica di un flusso. - *Post-condizioni*: Il sistema mostra il diagramma dei blocchi della _routine_ selezionata. - *Scenario principale* - 1. l'utente visualizza il diagramma dei blocchi della routine selezionata. - - + 1. l'utente visualizza il diagramma dei blocchi della _routine_ selezionata. -#figure(image("../../assets/usecasediagrams/16,17,18.svg"), caption: [Diagramma casi d'uso UC[16], UC[17], UC[18]]) +#figure(image("../../assets/usecasediagrams/VisDettagli.svg"), caption: [Diagramma casi d'uso UC[26], UC[27], UC[28]]) - - - -=== UC[19]: Eliminare una _routine_ esistente +=== UC[29]: Eliminare una _routine_ esistente - *Attore principale*: utente autenticato. - *Pre-condizioni*: l'utente si trova nella pagina di modifica di un flusso. @@ -538,38 +709,28 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 2. L'utente seleziona l'opzione di eliminazione della _routine_. 3. Il sistema mostra un messaggio di conferma dell'eliminazione. 4. Se l'utente conferma l'eliminazione, il sistema elimina la _routine_ e ritorna l'utente alla _dashboard_. +- *Estensioni*: + - Errore generico (#link()[*UC[8]*]). + - Errore "_Workflow_ non trovato" (#link()[*UC[30]*]). -#figure(image("../../assets/usecasediagrams/19.svg"), caption: [Diagramma casi d'uso UC[19]]) - - - - - +// AGGIUNGERE ERRORE GENERICO -=== UC[20]: Modifica del nome di una _routine_ +=== UC[30] Errore "_Workflow_ non trovato" - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente si trova nella pagina del flusso dell'automazione. +- *Pre-condizioni*: l'utente si trova nella pagina di modifica di un flusso. -- *Post-condizioni*: viene modificato il nome della _routine_ aperta. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. - *Scenario principale*: - 1. L'utente preme nel tasto dedicato alla modifica del nome della _routine_. - 2. Il sistema mostra un campo di testo per la modifica del nome della _routine_. - 3. L'utente inserisce e conferma il nuovo nome della _routine_. - 4. Il sistema verifica che il nome della _routine_ sia univoco. - 5. Il sistema salva il nuovo nome della _routine_. - -- *Estensioni*: - - Nome _routine_ già in uso (#link()[*UC[11]*]). - - Errore generico (#link()[*UC[5]*]). - -#figure(image("../../assets/usecasediagrams/5,11,20.svg"), caption: [Diagramma casi d'uso UC[5], UC[11], UC[20]]) -\ + 1. L'utente tenta di interagire con un _workflow_ che non esiste. + 2. Il sistema mostra un messaggio di errore "_Workflow not found_". +// Errore: Workflow not found +#figure(image("../../assets/usecasediagrams/Eliminare.svg"), caption: [Diagramma casi d'uso UC[8], UC[29], UC[30]]) @@ -577,53 +738,41 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[21]: Avviare una _routine_ esistente +=== UC[31]: Modifica del nome di una _routine_ - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente ha creato almeno una routine +- *Pre-condizioni*: l'utente si trova nella pagina del flusso dell'automazione. -- *Post-condizioni*: una _routine_ viene avviata. +- *Post-condizioni*: viene modificato il nome della _routine_ aperta. - *Scenario principale*: - 1. Il sistema avvia la _routine_. + 1. L'utente preme nel tasto dedicato alla modifica del nome della _routine_. + 2. Il sistema mostra un campo di testo per la modifica del nome della _routine_. + 3. L'utente inserisce e conferma il nuovo nome della _routine_. +\ - *Estensioni*: - - Errore generico (#link()[*UC[5]*]). - - - + - Errore generico (#link()[*UC[8]*]). + - Errore "Il _workflow_ deve avere un nome" (#link()[*UC[22]*]). + - Errore "Il nome del _workflow_ deve avere meno di 25 caratteri" (#link()[*UC[23]*]). -=== UC[22]: Avviare una _routine_ esistente dalla _dashboard_ +#figure(image("../../assets/usecasediagrams/ModificaNome.svg"), caption: [Diagramma casi d'uso UC[8], UC[22], UC[23], UC[31]]) +=== UC[32]: Avviare una _routine_ esistente - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente si trova nella _dashboard_. +- *Pre-condizioni*: l'utente ha creato almeno una _routine_ - *Post-condizioni*: una _routine_ viene avviata. - *Scenario principale*: - 1. L'utente preme l'icona di avvio della _routine_ interessata. - 2. Il sistema avvia la _routine_. - - - -=== UC[23]: Avviare una _routine_ esistente tramite la pagina di modifica del flusso - -- *Attore principale*: utente autenticato. - -- *Pre-condizioni*: l'utente si trova nella pagina di modifica del flusso. - -- *Post-condizioni*: la relativa _routine_ viene avviata. - -- *Scenario principale*: - 1. L'utente preme l'icona di avvio della _routine_ interessata. - 2. Il sistema avvia la _routine_. - - - -#figure(image("../../assets/usecasediagrams/5,21,22,23.svg"), caption: [Diagramma casi d'uso UC[5], UC[21], UC[22], UC[23]]) + 1. Il sistema avvia la _routine_. +- *Estensioni*: + - Errore generico (#link()[*UC[8]*]). + - Errore "_Workflow_ non trovato" (#link()[*UC[30]*]). + - Errore "impossibile eseguire il flusso" (#link()[*UC[35]*]). @@ -631,20 +780,18 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[24]: Interrompere una _routine_ avviata +=== UC[33]: Avviare una _routine_ esistente dalla _dashboard_ - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente ha una _routine_ in esecuzione. +- *Pre-condizioni*: l'utente si trova nella _dashboard_. -- *Post-condizioni*: l'esecuzione della _routine_ viene interrotta. +- *Post-condizioni*: una _routine_ viene avviata. - *Scenario principale*: - 1. Il sistema interrompe l'esecuzione della _routine_ all'operazione corrente. + 1. L'utente preme l'icona di avvio della _routine_ interessata. + 2. Il sistema avvia la _routine_. -- *Estensioni*: - - Visualizzazione errore "Impossibile blocare la _routine_" (#link()[*UC[27]*]). - - Errore generico (#link()[*UC[5]*]). @@ -652,61 +799,43 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[25]: Interrompere una _routine_ dalla _dashboard_ +=== UC[34]: Avviare una _routine_ esistente tramite la pagina di modifica del flusso - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente si trova nella _dashboard_ e ha una _routine_ in esecuzione. +- *Pre-condizioni*: l'utente si trova nella pagina di modifica del flusso. -- *Post-condizioni*: l'esecuzione della _routine_ viene interrotta. +- *Post-condizioni*: la relativa _routine_ viene avviata. - *Scenario principale*: - 1. L'utente preme l'icona di interruzione della _routine_. - 2. Il sistema interrompe l'esecuzione della _routine_ all'operazione corrente. - - - - -=== UC[26]: Interrompere una _routine_ tramite la propria pagina di modifica - -- *Attore principale*: utente autenticato. - -- *Pre-condizioni*: l'utente si trova nella pagina di modifica di un flusso in esecuzione. + 1. L'utente preme l'icona di avvio della _routine_ interessata. + 2. Il sistema avvia la _routine_. -- *Post-condizioni*: l'esecuzione della _routine_ viene interrotta. -- *Scenario principale*: - 1. L'utente preme l'icona di interruzione della _routine_. - 2. Il sistema interrompe l'esecuzione della _routine_ all'operazione corrente. -=== UC[27]: Visualizzazione errore "Impossibile bloccare la _routine_" +=== UC[35] Errore "Impossibile eseguire il flusso" - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente ha provato a bloccare una _routine_ in esecuzione. +- *Pre-condizioni*: l'utente si trova nella dashboard e tenta di eseguire un flusso. -- *Post-condizioni*: il sistema mostra un errore. +- *Post-condizioni*: l'utente visualizza il messaggio di errore. - *Scenario principale*: - 1. L'utente prova a bloccare una _routine_ in _esecuzione_. - 2. Se l'azione della _routine_ non è bloccabile, il sistema mostra un messaggio di errore all'utente. - 3. Se la _routine_ non è più in esecuzione, il sistema mostra un messaggio di errore all'utente. - -#figure(image("../../assets/usecasediagrams/5,24,25,26,27.svg"), caption: [Diagramma casi d'uso UC[5], UC[24], UC[25], UC[26], UC[27]]) - + 1. L'utente tenta di eseguire un flusso. + 2. Il sistema mostra un messaggio di errore "_An error occurred while running the workflow_". +#figure(image("../../assets/usecasediagrams/Avviare.svg"), caption: [Diagramma casi d'uso UC[8], UC[30], UC[32], UC[34], UC[35]]) - - -=== UC[28]: Aggiunta di un blocco ad una _routine_ esistente +=== UC[36]: Aggiunta di un blocco ad una _routine_ esistente - *Attore principale*: utente esperto autenticato. - *Pre-condizioni*: l'utente si trova sulla pagina di modifica di un flusso. @@ -716,52 +845,34 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente aggiunge un blocco alla _routine_. 2. Il sistema mostra il blocco aggiunto. - - - *Estensioni*: - - Errore generico (#link()[*UC[5]*]). - - - - - - -=== UC[29]: Aggiunta del blocco "_Telegram_ - Send Bot Message" ad una _routine_ esistente - -- *Attore principale*: utente esperto autenticato. + - Errore generico (#link()[*UC[8]*]). -- *Pre-condizioni*: l'utente si trova sulla pagina di modifica di un flusso. -- *Post-condizioni*: viene aggiunto il blocco "_Telegram_ - Send Bot Message" nella _routine_. -- *Scenario principale*: - 1. L'utente apre il menù dei blocchi disponibili. - 2. L'utente preme l'apposito pulsante per aggiungere il blocco "_Telegram_ - Send Bot Message" alla routine. - 3. L'utente collega il blocco appena aggiunto a quelli già esistenti. -=== UC[30]: Aggiunta del blocco "_Pastebin_ - Create Paste" ad una _routine_ esistente +=== UC[37]: Aggiunta del blocco "_Telegram_ - Send Bot Message" ad una _routine_ esistente - *Attore principale*: utente esperto autenticato. - *Pre-condizioni*: l'utente si trova sulla pagina di modifica di un flusso. -- *Post-condizioni*: viene aggiunto il blocco "_Pastebin_ - Create Paste" nella _routine_. +- *Post-condizioni*: viene aggiunto il blocco "_Telegram_ - Send Bot Message" nella _routine_. - *Scenario principale*: 1. L'utente apre il menù dei blocchi disponibili. - 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla routine. + 2. L'utente preme l'apposito pulsante per aggiungere il blocco "_Telegram_ - Send Bot Message" alla _routine_. 3. L'utente collega il blocco appena aggiunto a quelli già esistenti. - -=== UC[31]: Aggiunta del blocco "_AI_ - Summarize" ad una _routine_ esistente +=== UC[38]: Aggiunta del blocco "_AI_ - Summarize" ad una _routine_ esistente - *Attore principale*: utente esperto autenticato. @@ -771,7 +882,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente apre il menù dei blocchi disponibili. - 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla routine. + 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla _routine_. 3. L'utente collega il blocco appena aggiunto a quelli già esistenti. @@ -779,7 +890,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[32]: Aggiunta del blocco "_System_ - Wait Second(s)" ad una _routine_ esistente +=== UC[39]: Aggiunta del blocco "_System_ - Wait Second(s)" ad una _routine_ esistente - *Attore principale*: utente esperto autenticato. @@ -789,7 +900,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente apre il menù dei blocchi disponibili. - 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla routine. + 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla _routine_. 3. L'utente collega il blocco appena aggiunto a quelli già esistenti. @@ -797,7 +908,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[33]: Aggiunta del blocco "_Notion_ - Get Page" ad una _routine_ esistente +=== UC[40]: Aggiunta del blocco "_Notion_ - Get Page" ad una _routine_ esistente - *Attore principale*: utente esperto autenticato. @@ -807,13 +918,13 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente apre il menù dei blocchi disponibili. - 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla routine. + 2. L'utente preme l'apposito pulsante per aggiungere il blocco alla _routine_. 3. L'utente collega il blocco appena aggiunto a quelli già esistenti. #figure( - image("../../assets/usecasediagrams/5,28,29,30,31,32,33.svg"), - caption: [Diagramma casi d'uso UC[5], UC[28], UC[29], UC[30], UC[31], UC[32], UC[33]], + image("../../assets/usecasediagrams/AggiuntaBlocco.svg"), + caption: [Diagramma casi d'uso UC[8], UC[36], UC[37], UC[38], UC[39], UC[40]], ) @@ -821,7 +932,11 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[34]: Visualizza le impostazioni di un singolo blocco + + + + +=== UC[41]: Visualizza le impostazioni di un singolo blocco - *Attore principale*: utente autenticato. @@ -835,7 +950,11 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[35]: Visualizzazione impostazioni del blocco "_Telegram_ - Send Bot Message" + + + + +=== UC[42]: Visualizzazione impostazioni del blocco "_Telegram_ - Send Bot Message" - *Attore principale*: utente esperto autenticato. @@ -851,21 +970,9 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[36]: Visualizzazione impostazioni del blocco "_Pastebin_ - Create Paste" - -- *Attore principale*: utente esperto autenticato. - -- *Pre-condizioni*: l'utente si trova sulla pagina di modifica di un flusso. - -- *Post-condizioni*: vengono visualizzate le impostazioni del blocco "_Pastebin_ - Create Paste". - -- *Scenario principale*: - 1. L'utente preme il pulsante dedicato per visualizzare le impostazioni del blocco. - 2. Il sistema mostra impostazioni del blocco, come il nome del _paste_, se il _paste_ è privato, pubblico o non in elenco, il formato, il contenuto del _paste_ e le chiavi di accesso all'API. - -=== UC[37]: Visualizzazione impostazioni del blocco "_System_ - Wait Second(s)" +=== UC[43]: Visualizzazione impostazioni del blocco "_System_ - Wait Second(s)" - *Attore principale*: utente esperto autenticato. @@ -882,7 +989,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[38]: Visualizzazione impostazioni del blocco "_Notion_ - Get Page" +=== UC[44]: Visualizzazione impostazioni del blocco "_Notion_ - Get Page" - *Attore principale*: utente esperto autenticato. @@ -892,13 +999,22 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente preme il pulsante dedicato per visualizzare le impostazioni del blocco. - 2. Il sistema mostra impostazioni del blocco, come il token di accesso all'API Notion ed il PAGE_ID della pagina da cui prendere i contenuti. + 2. Il sistema mostra impostazioni del blocco, l'Internal Integration Token e il Page ID. + + +#figure( + image("../../assets/usecasediagrams/VisualizzaImpostazioniBlocco.svg"), + caption: [Diagramma casi d'uso UC[41], UC[42], UC[43], UC[44]], +) + + -#figure(image("../../assets/usecasediagrams/34,35,36,37,38.svg"), caption: [Diagramma casi d'uso UC[34], UC[35], UC[36], UC[37], UC[38]]) -=== UC[39]: Modificare le impostazioni di un singolo blocco + + +=== UC[45]: Modificare le impostazioni di un singolo blocco - *Attore principale*: utente autenticato. @@ -910,15 +1026,16 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. L'utente modifica le impostazioni di un blocco. 2. Il sistema salva le modifiche del blocco. - - *Estensioni*: - - Errore generico (#link()[*UC[5]*]). - - Visualizzazione errore "Impostazioni non valide" (#link()[*UC[44]*]). + - Errore generico (#link()[*UC[8]*]). + + + -=== UC[40]: Modifica impostazioni del blocco "_Telegram_ - Send Bot Message" +=== UC[46]: Modifica impostazioni del blocco "_Telegram_ - Send Bot Message" - *Attore principale*: utente esperto autenticato. @@ -934,24 +1051,10 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[41]: Modifica impostazioni del blocco "_Pastebin_ - Create Paste" - -- *Attore principale*: utente esperto autenticato. - -- *Pre-condizioni*: l'utente si trova sulla pagina di modifica di un flusso. - -- *Post-condizioni*: vengono modificate le impostazioni del blocco "_Pastebin_ - Create Paste". - -- *Scenario principale*: - 1. L'utente preme il pulsante dedicato per visualizzare le impostazioni del blocco. - 2. L'utente modifica le impostazioni del blocco, come il nome del _paste_, se il _paste_ è privato, pubblico o non in elenco, il formato, il contenuto del _paste_ e le chiavi di accesso all'API. - 3. Il sistema salva le modifiche apportate. - - -=== UC[42]: Modifica impostazioni del blocco "_System_ - Wait Second(s)" +=== UC[47]: Modifica impostazioni del blocco "_System_ - Wait Second(s)" - *Attore principale*: utente esperto autenticato. @@ -968,7 +1071,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[43]: Modifica impostazioni del blocco "_Notion_ - Get Page" +=== UC[48]: Modifica impostazioni del blocco "_Notion_ - Get Page" - *Attore principale*: utente esperto autenticato. @@ -978,31 +1081,24 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Scenario principale*: 1. L'utente preme il pulsante dedicato per visualizzare le impostazioni del blocco. - 2. L'utente modifica le impostazioni del blocco, come il token di accesso all'API Notion e il PAGE_ID della pagina da cui prendere i contenuti. + 2. L'utente modifica le impostazioni del blocco, l'Internal Integration Token e il PAGE_ID della pagina da cui prendere i contenuti. 3. Il sistema salva le modifiche apportate. +#figure( + image("../../assets/usecasediagrams/ModificaImpostazioniBlocco.svg"), + caption: [Diagramma casi d'uso UC[8], UC[45], UC[46], UC[47], UC[48]], +) -=== UC[44]: Visualizzazione errore "Impostazioni non valide" -- *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente ha inserito nuove impostazioni all'interno di un blocco. -- *Post-condizioni*: il sistema mostra un messaggio di errore. -- *Scenario principale*: - 1. L'utente modifica le impostazioni di un blocco. - 2. Il sistema mostra un errore se le impostazioni non sono considerate valide. -#figure( - image("../../assets/usecasediagrams/5,39,40,41,42,43,44.svg"), - caption: [Diagramma casi d'uso UC[5], UC[39], UC[40], UC[41], UC[42], UC[43], UC[44]], -) -=== UC[45]: Salvare una _routine_ +=== UC[49]: Salvare una _routine_ - *Attore principale*: utente autenticato. @@ -1016,39 +1112,19 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 3. Il sistema salva le modifiche. - *Estensioni*: - - Errore generico (#link()[*UC[5]*]). - - Visualizzazione errore "Flusso incompleto" (#link()[*UC[46]*]). - - - - - - + - Errore generico (#link()[*UC[8]*]). + - Errore "Workflow non trovato" (#link()[*UC[30]*]). + - Errore "Il nome del _workflow_ deve avere meno di 25 caratteri" (#link()[*UC[23]*]). +#figure(image("../../assets/usecasediagrams/Salvare.svg"), caption: [Diagramma casi d'uso UC[8], UC[23], UC[30], UC[49]]) -=== UC[46]: Visualizzazione errore "Flusso incompleto" - -- *Attore principale*: utente autenticato. - -- *Pre-condizioni*: l'utente ha premuto il tasto per salvare le modifiche. - -- *Post-condizioni*: il sistema ritorna un messaggio di errore. - -- *Scenario principale*: - 1. L'utente preme il tasto per salvare. - 2. Il sistema verifica che il flusso sia completo e che nessun blocco sia staccato. - 3. Se il flusso non è completo, il sistema mostra un messaggio di errore all'utente. -#figure(image("../../assets/usecasediagrams/5,45,46.svg"), caption: [Diagramma casi d'uso UC[5], UC[45], UC[46]]) - - - -=== UC[47]: Eliminare un blocco da una _routine_ esistente +=== UC[50]: Eliminare un blocco da una _routine_ esistente - *Attore principale*: utente autenticato. @@ -1057,15 +1133,16 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza - *Post-condizioni*: il blocco selezionato viene rimosso dalla _routine_. - *Scenario principale*: - 1. Il sistema rimuove il blocco dalla routine. + 1. Il sistema rimuove il blocco dalla _routine_. - *Estensioni*: - - Errore generico (#link()[*UC[5]*]). + - Errore generico (#link()[*UC[8]*]). -=== UC[48]: Eliminare un blocco da una _routine_ esistente da tastiera + +=== UC[51]: Eliminare un blocco da una _routine_ esistente da tastiera - *Attore principale*: utente autenticato. @@ -1081,7 +1158,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza -=== UC[49]: Eliminare un blocco da una _routine_ esistente da interfaccia grafica +=== UC[52]: Eliminare un blocco da una _routine_ esistente da interfaccia grafica - *Attore principale*: utente autenticato. @@ -1095,11 +1172,16 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 3. Il sistema rimuove il blocco dalla _routine_. -#figure(image("../../assets/usecasediagrams/5,47,48,49.svg"), caption: [Diagramma casi d'uso UC[5], UC[47], UC[48], UC[49]]) +#figure(image("../../assets/usecasediagrams/EliminareBlocco.svg"), caption: [Diagramma casi d'uso UC[8], UC[50], UC[51], UC[52]]) + + -=== UC[50]: Collegare due blocchi di una _routine_ esistente + + + +=== UC[53]: Collegare due blocchi di una _routine_ esistente - *Attore principale*: utente esperto autenticato. @@ -1111,14 +1193,13 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. L'utente preme e trascina l'_handle_ destro di un blocco all'_handle_ sinistro di un altro blocco creando un collegamento. 2. Il sistema crea un collegamento tra i due blocchi. +#figure(image("../../assets/usecasediagrams/CollegareBlocchi.svg"), caption: [Diagramma casi d'uso UC[53]]) -#figure(image("../../assets/usecasediagrams/50.svg"), caption: [Diagramma casi d'uso UC[50]]) - -=== UC[51]: Scollegare due blocchi di una _routine_ esistente +=== UC[54]: Scollegare due blocchi di una _routine_ esistente - *Attore principale*: utente esperto autenticato. @@ -1131,43 +1212,13 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 2. L'utente preme il tasto dedicato sulla tastiera (_backspace_) per scollegare i due blocchi. 3. Il sistema rimuove il collegamento tra i due blocchi. -#figure(image("../../assets/usecasediagrams/51.svg"), caption: [Diagramma casi d'uso UC[51]]) - - - - - - - -=== UC[52]: Modifica della _password_ dell'account - -- *Attore principale*: utente autenticato. - -- *Pre-condizioni*: l'utente si trova nella _dashboard_. - -- *Post-condizioni*: la _password_ dell'utente viene aggiornata. - -- *Scenario principale*: - 1. L'utente preme il tasto dedicato alla modifica della _password_ dell'account. - 2. Il sistema mostra una pagina con le impostazioni dell'account. - 3. L'utente inserisce la nuova _password_. - 4. L'utente reinserisce la _password_ creata. - 5. L'utente conferma la modifica della _password_. - 6. Il sistema salva le credenziali nel generico. - -- *Estensioni*: - - Errore generico (#link()[*UC[5]*]). - -#figure(image("../../assets/usecasediagrams/5,7,8,52.svg"), caption: [Diagramma casi d'uso UC[5], UC[7], UC[8], UC[52]]) - - - +#figure(image("../../assets/usecasediagrams/ScollegareBlocchi.svg"), caption: [Diagramma casi d'uso UC[54]]) -=== UC[53]: Impostare _Dark Mode_ o _Light Mode_ del _client_ +=== UC[55]: Impostare _Dark Mode_ o _Light Mode_ del _client_ - *Attore principale*: utente autenticato o non autenticato. @@ -1179,18 +1230,20 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. L'utente preme l'icona del cambio tema del _client_. 2. Il sistema cambia il tema selezionato del _client_. -#figure(image("../../assets/usecasediagrams/53.svg"), caption: [Diagramma casi d'uso UC[53]]) +#figure(image("../../assets/usecasediagrams/DarkMode.svg"), caption: [Diagramma casi d'uso UC[55]]) -=== UC[54]: _Logout_ + + +=== UC[56]: _Logout_ - *Attore principale*: utente autenticato. -- *Pre-condizioni*: l'utente si trova nella pagina di visualizzazione di tutte le routine. +- *Pre-condizioni*: l'utente si trova nella pagina di visualizzazione di tutte le _routine_. - *Post-condizioni*: l'utente non è autenticato. @@ -1198,12 +1251,15 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. L'utente preme l'icona per effettuare il _logout_. 2. Il sistema disconnette l'utente e lo riporta alla pagina di _login_. +#figure(image("../../assets/usecasediagrams/Logout.svg"), caption: [Diagramma casi d'uso UC[56]]) + -#figure(image("../../assets/usecasediagrams/54.svg"), caption: [Diagramma casi d'uso UC[54]]) -=== UC[55]: Visualizzare la dashboard / lista automazioni in seguito al login + + +=== UC[57]: Visualizzare la dashboard / lista automazioni in seguito al login - *Attore principale*: utente autenticato. - *Pre-condizioni*: l'utente si trova nella pagina di login. @@ -1214,9 +1270,14 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. L'utente effettua l'accesso. 2. Il sistema rimanda l'utente alla _dashboard_. -#figure(image("../../assets/usecasediagrams/55.svg"), caption: [Diagramma casi d'uso UC[55]]) +#figure(image("../../assets/usecasediagrams/VisualizzaDashboard.svg"), caption: [Diagramma casi d'uso UC[57]]) + -=== UC[56]: Ritornare alla dashboard dalla pagina di modifica di un flusso + + + + +=== UC[58]: Ritornare alla dashboard dalla pagina di modifica di un flusso - *Attore principale*: utente autenticato. - *Pre-condizioni*: l'utente si trova nella pagina di modifica di un flusso. @@ -1227,16 +1288,7 @@ Il gruppo _Sigma18_ ha deciso di dedicare certi _use case_ a categorie di utenza 1. L'utente preme il tasto dedicato per tornare alla _dashboard_. 2. Il sistema riporta l'utente alla _dashboard_. -#figure(image("../../assets/usecasediagrams/56.svg"), caption: [Diagramma casi d'uso UC[56]]) - - - - - - - - - +#figure(image("../../assets/usecasediagrams/RitornareDashboard.svg"), caption: [Diagramma casi d'uso UC[58]]) #pagebreak() @@ -1296,163 +1348,191 @@ Nella colonna "fonti" di della tabella viene indicato in quale contesto è stato [L'utente deve poter inserire la sua _password_ per accedere all'applicativo], [#link()[*UC[1]*], #link()[*UC[3]*], Riunione esterna], - [ROF-4], [L'utente deve potersi registrare con la creazione di un nuovo account], [ #link()[*UC[6]*]], + [ROF-4], [L'utente deve potersi registrare con la creazione di un nuovo account], [ #link()[*UC[9]*]], + [ROF-5], [L'utente non autenticato deve poter inserire la sua _e-mail_ per registrarsi nell'applicativo], - [#link()[*UC[6]*], #link()[*UC[2]*], Riunione esterna], + [#link()[*UC[9]*], #link()[*UC[2]*], Riunione esterna], [ROF-6], [L'utente deve poter creare la sua _password_ per registrarsi nell'applicativo], - [#link()[*UC[7]*], #link()[*UC[3]*], Riunione esterna], + [#link()[*UC[9]*], #link()[*UC[10]*], Riunione esterna], [ROF-7], [L'utente deve poter reinserire la sua password per la registrazione nell'applicativo], - [#link()[*UC[6]*], #link()[*UC[8]*]], + [#link()[*UC[9]*], #link()[*UC[11]*]], [ROF-8], [Il sistema restituisce un errore per credenziali non valide inserite dall'utente], - [#link()[*UC[1]*], #link()[*UC[4]*], #link()[*UC[6]*]], + [#link()[*UC[1]*], #link()[*UC[4]*], #link()[*UC[9]*]], + + [ROF-9], + [Il sistema restituisce un errore se si tenta di eseguire il login con una mail non registrata], + [#link()[*UC[1]*], #link()[*UC[5]*]], - [ROF-9], [Il sistema restituisce un errore nel caso si riscontrino problemi], [#link()[*UC[5]*]], [ROF-10], - [Il sistema deve restituire un errore se l'_e-mail_ è già in uso in fase di registrazione], - [#link()[*UC[6]*], #link()[*UC[9]*]], + [Il sistema restituisce un errore se rileva ripetuti tentativi di accesso], + [#link()[*UC[1]*], #link()[*UC[6]*], Riunione interna], [ROF-11], - [Il sistema deve restituire un errore se la _password_ non adempie ai requisiti di sicurezza o le _password_ non coincidono tra loro in fase di registrazione], - [#link()[*UC[4]*], #link()[*UC[6]*]], + [Il sistema restituisce un errore se si tenta di eseguire il login con una mail non verificata], + [#link()[*UC[1]*], #link()[*UC[7]*]], + + [ROF-12], [Il sistema restituisce un errore nel caso si riscontrino problemi], [#link()[*UC[8]*]], - [ROF-12], [L'utente deve poter creare una nuova _routine_ ], [#link()[*UC[10]*], Capitolato], [ROF-13], - [Il sistema deve restituire un errore se il nome della _routine_ da creare o modificare è già in uso], - [#link()[*UC[11]*]], + [Il sistema restituisce un errore se l'_e-mail_ è già in uso in fase di registrazione], + [#link()[*UC[9]*], #link()[*UC[12]*]], - [ROF-14], - [L'utente deve poter generare una _routine_ tramite linguaggio naturale], - [#link()[*UC[10]*], #link()[*UC[12]*], Capitolato], + [ROF-14], [Il sistema restituisce un errore se si lascia il campo password vuoto], [#link()[*UC[9]*], #link()[*UC[18]*]], [ROF-15], - [L'utente deve poter visualizzare il modello di GenAI utilizzato per la generazione], - [#link()[*UC[12]*] ,#link()[*UC[13]*]], + [L'utente deve verificare l'account creato tramite codice OTP ricevuto per _e-mail_], + [#link()[*UC[9]*], #link()[*UC[13]*], #link()[*UC[18]*], Riunione interna], + + [ROF-16], + [Il sistema restituisce un errore se l'utente tenta di concludere la registrazione senza inserire il codice di verifica], + [#link()[*UC[9]*], #link()[*UC[14]*], #link()[*UC[18]*]], - [ROF-16], [L'utente deve poter modificare il modello di GenAI utilizzato per la generazione], [#link()[*UC[14]*]], [ROF-17], - [Il sistema deve restituire un errore se non é possibile generare il flusso], - [#link()[*UC[12]*], #link()[*UC[15]*]], + [Il sistema restituisce un errore se le _password_ non corrispondono tra loro in fase di registrazione], + [#link()[*UC[9]*], #link()[*UC[15]*]], + + [ROF-18], + [Il sistema restituisce un errore se la _password_ creata è inferiore a 8 caratteri in fase di registrazione], + [#link()[*UC[9]*], #link()[*UC[16]*], Riunione interna], + + [ROF-19], + [Il sistema restituisce un errore se l'_e-mail_ è già in uso in fase di verifica], + [#link()[*UC[17]*], #link()[*UC[18]*]], - [ROF-18], [L'utente deve poter visualizzare i dettagli di una _routine_ esistente], [#link()[*UC[16]*]], - [ROF-19], [L'utente deve poter visualizzare il nome di una _routine_ esistente], [#link()[*UC[16]*], #link()[*UC[17]*]], [ROF-20], - [L'utente deve poter visualizzare il diagramma dei blocchi di una _routine_ esistente], - [#link()[*UC[16]*], #link()[*UC[18]*]], + [Il sistema restituisce un errore se il codice di conferma inserito dall'utente è scaduto], + [#link()[*UC[18]*], #link()[*UC[19]*], Riunione interna], + + [ROF-21], + [Il sistema restituisce un errore se il codice di conferma inserito dall'utente è errato], + [#link()[*UC[18]*], #link()[*UC[20]*]], + + [ROF-22], [L'utente deve poter creare una nuova _routine_], [#link()[*UC[21]*], Capitolato], + + [ROF-23], [L'utente deve poter modificare il nome di una _routine_], [#link()[*UC[31]*]], - [ROF-21], [L'utente deve poter eliminare una _routine_ esistente], [#link()[*UC[19]*], Riunione esterna], - [ROF-22], [L'utente deve poter avviare una routine esistente], [#link()[*UC[21]*]], - [ROF-23], [L'utente deve poter avviare una routine esistente dalla dashboard], [#link()[*UC[21]*], #link()[*UC[22]*]], [ROF-24], - [L'utente deve poter avviare una routine esistente dalla pagina di modifica del flusso], - [#link()[*UC[21]*], #link()[*UC[23]*]], + [Il sistema restituisce un errore se il nome del _workflow_ viene lasciato vuoto], + [#link()[*UC[31]*], #link()[*UC[22]*]], + + [ROF-25], + [Il sistema restituisce un errore se il nome del _workflow_ ha più di 25 caratteri], + [#link()[*UC[31]*], #link()[*UC[23]*], Riunione interna], + + [ROF-26], + [L'utente deve poter generare una _routine_ tramite linguaggio naturale], + [#link()[*UC[21]*], #link()[*UC[24]*], Capitolato], - [ROF-25], [L'utente deve poter interrompere una routine avviata], [#link()[*UC[24]*]], - [ROF-26], [L'utente deve poter interrompere una routine avviata dalla dashboard], [#link()[*UC[24]*], #link()[*UC[25]*] ], [ROF-27], - [L'utente deve poter interrompere una routine tramite la propria pagina di modifica], - [#link()[*UC[24]*], #link()[*UC[26]*] ], + [Il sistema restituisce un errore se il prompt di generazione di una _routine_ tramite linguaggio naturale viene lasciato vuoto], + [#link()[*UC[21]*], #link()[*UC[24]*], #link()[*UC[25]*]], - [ROF-28], - [Il sistema deve restituire un errore nel caso non sia possibile interrompere una _routine_ in esecuzione], - [#link()[*UC[24]*], #link()[*UC[27]*], #link()[*UC[5]*]], + [ROF-28], [L'utente deve poter visualizzare i dettagli di una _routine_ esistente], [#link()[*UC[26]*]], + + [ROF-29], [L'utente deve poter visualizzare il nome di una _routine_ esistente], [#link()[*UC[26]*], #link()[*UC[27]*]], - [ROF-29], [L'utente deve poter aggiungere un blocco ad una _routine_ esistente], [#link()[*UC[28]*] ], [ROF-30], - [L'utente deve poter aggiungere un blocco del tipo "_Telegram_ - Send Bot Message" ad una _routine_ esistente], - [#link()[*UC[28]*],#link()[*UC[29]*]], + [L'utente deve poter visualizzare il diagramma dei blocchi di una _routine_ esistente], + [#link()[*UC[26]*], #link()[*UC[28]*]], - [ROF-31], - [L'utente deve poter aggiungere un blocco del tipo "_Pastebin_ - Create Paste" ad una _routine_ esistente], - [#link()[*UC[28]*],#link()[*UC[30]*] ], + [ROF-31], [L'utente deve poter eliminare una _routine_ esistente], [#link()[*UC[29]*], Riunione esterna], - [ROF-32], - [L'utente deve poter aggiungere un blocco del tipo "_AI_ - Summarize" ad una _routine_ esistente], - [#link()[*UC[28]*], #link()[*UC[31]*] ], + [ROF-32], [Il sistema restituisce un errore se si tenta di interagire con un _workflow_ inesistente], [#link()[*UC[30]*]], - [ROF-33], - [L'utente deve poter aggiungere un blocco del tipo "_System_ - Wait Second(s)" ad una _routine_ esistente], - [#link()[*UC[28]*], #link()[*UC[32]*] ], + [ROF-33], [L'utente deve poter avviare una _routine_ esistente], [#link()[*UC[32]*], Riunione esterna], - [ROF-34], - [L'utente deve poter aggiungere un blocco del tipo "_Notion_ - Get Page" ad una _routine_ esistente], - [#link()[*UC[28]*], #link()[*UC[33]*] ], + [ROF-34], [L'utente deve poter avviare una _routine_ esistente dalla dashboard], [#link()[*UC[32]*], #link()[*UC[33]*]], + + [ROF-35], + [L'utente deve poter avviare una _routine_ esistente dalla pagina di modifica del flusso], + [#link()[*UC[32]*], #link()[*UC[34]*]], - [ROF-35], [L'utente deve poter visualizzare le impostazioni di un singolo blocco], [#link()[*UC[34]*]], [ROF-36], - [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], - [#link()[*UC[34]*], #link()[*UC[35]*]], + [Il sistema restituisce un errore se l'esecuzione del flusso non va a buon fine], + [#link()[*UC[32]*], #link()[*UC[35]*]], - [ROF-37], - [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_Pastebin_ - Create Paste"], - [#link()[*UC[34]*], #link()[*UC[36]*]], + [ROF-37], [L'utente deve poter aggiungere un blocco ad una _routine_ esistente], [#link()[*UC[36]*]], [ROF-38], - [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], - [#link()[*UC[34]*], #link()[*UC[37]*]], + [L'utente deve poter aggiungere un blocco del tipo "_Telegram_ - Send Bot Message" ad una _routine_ esistente], + [#link()[*UC[36]*],#link()[*UC[37]*]], [ROF-39], - [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], - [#link()[*UC[34]*], #link()[*UC[38]*]], + [L'utente deve poter aggiungere un blocco del tipo "_AI_ - Summarize" ad una _routine_ esistente], + [#link()[*UC[36]*], #link()[*UC[38]*]], + + [ROF-40], + [L'utente deve poter aggiungere un blocco del tipo "_System_ - Wait Second(s)" ad una _routine_ esistente], + [#link()[*UC[36]*], #link()[*UC[39]*]], - [ROF-40], [L'utente deve poter modificare le impostazioni di un singolo blocco"], [#link()[*UC[39]*]], [ROF-41], - [L'utente deve poter modificare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], - [#link()[*UC[39]*],#link()[*UC[40]*]], + [L'utente deve poter aggiungere un blocco del tipo "_Notion_ - Get Page" ad una _routine_ esistente], + [#link()[*UC[36]*], #link()[*UC[40]*], Riunione interna], - [ROF-42], - [L'utente deve poter modificare le impostazioni di un blocco del tipo "_Pastebin_ - Create Paste"], - [#link()[*UC[39]*],#link()[*UC[41]*] ], + [ROF-42], [L'utente deve poter visualizzare le impostazioni di un singolo blocco], [#link()[*UC[41]*]], [ROF-43], - [L'utente deve poter modificare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], - [#link()[*UC[39]*], #link()[*UC[42]*] ], + [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], + [#link()[*UC[41]*], #link()[*UC[42]*]], [ROF-44], - [L'utente deve poter modificare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], - [#link()[*UC[39]*], #link()[*UC[43]*] ], + [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], + [#link()[*UC[41]*], #link()[*UC[43]*]], [ROF-45], - [Il sistema deve restituire un errore se le impostazioni del blocco non sono considerate valide], - [#link()[*UC[44]*],#link()[*UC[5]*], Riunione interna], + [L'utente deve poter visualizzare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], + [#link()[*UC[41]*], #link()[*UC[44]*]], - [ROF-46], - [Il sistema deve salvare le modifiche apportate dall'utente alla _routine_ appena viene premuto il tasto di salvataggio], - [#link()[*UC[45]*], Riunione interna], + [ROF-46], [L'utente deve poter modificare le impostazioni di un singolo blocco"], [#link()[*UC[45]*]], [ROF-47], - [Il sistema deve restituire un errore se il flusso è incompleto e non può essere salvato], - [#link()[*UC[46]*], #link()[*UC[5]*], Riunione interna], + [L'utente deve poter modificare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], + [#link()[*UC[45]*],#link()[*UC[46]*]], [ROF-48], - [L'utente deve potere eliminare un blocco da una _routine_ esistente ], - [#link()[*UC[47]*], #link()[*UC[48]*], #link()[*UC[49]*] ], + [L'utente deve poter modificare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], + [#link()[*UC[45]*], #link()[*UC[47]*] ], [ROF-49], - [L'utente deve potere eliminare un blocco da una _routine_ esistente da tastiera], - [#link()[*UC[47]*], #link()[*UC[48]*] ], + [L'utente deve poter modificare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], + [#link()[*UC[45]*], #link()[*UC[48]*] ], [ROF-50], + [Il sistema deve salvare le modifiche apportate dall'utente alla _routine_ appena viene premuto il tasto di salvataggio], + [#link()[*UC[49]*], Riunione interna], + + [ROF-51], + [L'utente deve potere eliminare un blocco da una _routine_ esistente ], + [#link()[*UC[50]*], #link()[*UC[51]*], #link()[*UC[52]*]], + + [ROF-52], + [L'utente deve potere eliminare un blocco da una _routine_ esistente da tastiera], + [#link()[*UC[50]*], #link()[*UC[51]*], Riunione interna], + + [ROF-53], [L'utente deve potere eliminare un blocco da una _routine_ esistente da interfaccia grafica], - [#link()[*UC[47]*], #link()[*UC[49]*] ], - - [ROF-51], [L'utente deve potere collegare due blocchi di una _routine_ esistente], [#link()[*UC[50]*], Capitolato ], - [ROF-52], [L'utente deve potere scollegare due blocchi di una _routine esistente_], [#link()[*UC[51]*], Capitolato ], - [ROF-53], [L'utente deve poter modificare la propria _password_], [#link()[*UC[52]*], Riunione interna], - [RDF-54], [L’utente può impostare la modalità del client in dark mode o light mode], [#link()[*UC[53]*], Riunione esterna], - [ROF-55], [L'utente deve poter effettuare il _logout_ dall'applicativo], [#link()[*UC[54]*], Riunione interna], - [ROF-56], + [#link()[*UC[50]*], #link()[*UC[52]*]], + + [ROF-54], [L'utente deve potere collegare due blocchi di una _routine_ esistente], [#link()[*UC[53]*], Capitolato], + + [ROF-55], [L'utente deve potere scollegare due blocchi di una _routine esistente_], [#link()[*UC[54]*], Capitolato], + + [RDF-56], [L'utente può impostare la modalità del client in dark mode o light mode], [#link()[*UC[55]*], Riunione esterna], + + [ROF-57], [L'utente deve poter effettuare il _logout_ dall'applicativo], [#link()[*UC[56]*], Riunione interna], + + [ROF-58], [L'utente deve poter visualizzare la dashboard in seguito al login nell'applicativo], - [#link()[*UC[55]*], Riunione interna], + [#link()[*UC[57]*], Riunione interna], - [ROF-57], [L'utente deve poter ritornare alla dashboard dalla pagina di modifica flusso], [#link()[*UC[56]*]], - [ROF-58], [L'utente deve poter modificare il nome di una _routine_ esistente], [#link()[*UC[20]*], Riunione esterna], + [ROF-59], [L'utente deve poter ritornare alla dashboard dalla pagina di modifica flusso], [#link()[*UC[58]*]], ) @@ -1471,11 +1551,11 @@ Nella colonna "fonti" di della tabella viene indicato in quale contesto è stato [ROQ-4], [Progettazione e implementazione di opportuni test di sistema], [Capitolato], [ROQ-5], [Progettazione e implementazione di opportuni test di accettazione], [Capitolato], [ROQ-6], - [Documentazione dei test effettuati nel #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/pianodiqualifica_1.0.0.pdf")[Piano di qualifica (1.0.0)]], + [Documentazione dei test effettuati nel #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.pdf")[Piano di qualifica (2.0.0)]], [Capitolato, Riunione interna], [ROQ-7], - [Rispetto di tutte le norme presenti nel documento #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/normediprogetto_1.0.0.pdf")[Norme di progetto (1.0.0)]], + [Rispetto di tutte le norme presenti nel documento #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/normediprogetto_2.0.0.pdf")[Norme di progetto (2.0.0)]], [Capitolato, Riunione interna], ) @@ -1498,65 +1578,67 @@ Nella colonna "fonti" di della tabella viene indicato in quale contesto è stato rows: auto, inset: 6pt, table.header([*Fonte*], [*Requisito*]), - [UC1], [ROF-1, ROF-2, ROF-3, ROF-8 ], + [UC1], [ROF-1, ROF-2, ROF-3, ROF-8, ROF-9, ROF-10, ROF-11], [UC2], [ROF-2, ROF-5], [UC3], [ROF-3, ROF-6], - [UC4], [ROF-8, ROF-11], + [UC4], [ROF-8], [UC5], [ROF-9], - [UC6], [ROF-4, ROF-5, ROF-6, ROF-7, ROF-8, ROF-10, ROF-11,], - [UC7], [ROF-6], - [UC8], [ROF-7], - [UC9], [ROF-10], - [UC10], [ROF-12, ROF-14], - [UC11], [ROF-13], - [UC12], [ROF-14, ROF-15, ROF-17], + [UC6], [ROF-10], + [UC7], [ROF-11], + [UC8], [ROF-12], + [UC9], [ROF-4, ROF-5, ROF-6, ROF-7, ROF-8, ROF-13, ROF-14, ROF-15, ROF-16, ROF-17, ROF-18], + [UC10], [ROF-6], + [UC11], [ROF-7], + [UC12], [ROF-13], [UC13], [ROF-15], [UC14], [ROF-16], [UC15], [ROF-17], - [UC16], [ROF-18, ROF-19], + [UC16], [ROF-18], [UC17], [ROF-19], - [UC18], [ROF-20], - [UC19], [ROF-21], - [UC20], [ROF-58], - [UC21], [ROF-22, ROF-23, ROF-24], - [UC22], [ROF-23], - [UC23], [ROF-24], - [UC24], [ROF-25, ROF-26, ROF-27, ROF-28], - [UC25], [ROF-26], - [UC26], [ROF-27], - [UC27], [ROF-28], - [UC28], [ROF-29, ROF-30, ROF-31, ROF-32, ROF-33, ROF-34], - [UC29], [ROF-30], - [UC30], [ROF-31], - [UC31], [ROF-32], - [UC32], [ROF-33], + [UC18], [ROF-14, ROF-15, ROF-16, ROF-19, ROF-20, ROF-21], + [UC19], [ROF-20], + [UC20], [ROF-21], + [UC21], [ROF-22, ROF-26, ROF-27], + [UC22], [ROF-24], + [UC23], [ROF-25], + [UC24], [ROF-26, ROF-27], + [UC25], [ROF-27], + [UC26], [ROF-28, ROF-29, ROF-30], + [UC27], [ROF-29], + [UC28], [ROF-30], + [UC29], [ROF-31], + [UC30], [ROF-32], + [UC31], [ROF-23, ROF-24, ROF-25], + [UC32], [ROF-33, ROF-34, ROF-35, ROF-36], [UC33], [ROF-34], - [UC34], [ROF-35, ROF-37, ROF-38, ROF-39], + [UC34], [ROF-35], [UC35], [ROF-36], - [UC36], [ROF-37], + [UC36], [ROF-37, ROF-38, ROF-39, ROF-40, ROF-41], [UC37], [ROF-38], [UC38], [ROF-39], - [UC39], [ROF-41, ROF-42, ROF-43, ROF-44], + [UC39], [ROF-40], [UC40], [ROF-41], - [UC41], [ROF-42], + [UC41], [ROF-42, ROF-43, ROF-44, ROF-45], [UC42], [ROF-43], [UC43], [ROF-44], [UC44], [ROF-45], - [UC45], [ROF-46], + [UC45], [ROF-46, ROF-47, ROF-48, ROF-49], [UC46], [ROF-47], - [UC47], [ROF-48, ROF-49, ROF-50], - [UC48], [ROF-48, ROF-49], - [UC49], [ROF-48, ROF-50], - [UC50], [ROF-51], - [UC51], [ROF-52], - [UC52], [ROF-53], + [UC47], [ROF-48], + [UC48], [ROF-49], + [UC49], [ROF-50], + [UC50], [ROF-51, ROF-52, ROF-53], + [UC51], [ROF-51, ROF-52], + [UC52], [ROF-51, ROF-53], [UC53], [RDF-54], [UC54], [ROF-55], - [UC55], [ROF-56], + [UC55], [RDF-56], [UC56], [ROF-57], - [Capitolato], [ROF-12, ROF-14, ROF-51, ROF-52, ROQ-1, ROQ-2, ROQ-3, ROQ-4, ROQ-5, ROQ-6, ROQ-7, ROV-1, ROV-2, ROV-3, ROV-4], - [Riunioni interne], [ROF-45, ROF-46, ROF-47, ROF-53, ROF-55, ROF-56, ROQ-1, ROQ-6, ROQ-7], - [Riunioni esterne], [ROF-1, ROF-2, ROF-3, ROF-5, ROF-6, ROF-21, RDF-54, ROF-58, ROV-1], + [UC57], [ROF-58], + [UC58], [ROF-59], + [Capitolato], [ROF-22, ROF-26, ROF-54, ROF-55, ROQ-1, ROQ-2, ROQ-3, ROQ-4, ROQ-5, ROQ-6, ROQ-7, ROV-1, ROV-2, ROV-3, ROV-4], + [Riunioni interne], [ROF-10, ROF-15, ROF-18, ROF-20, ROF-25, ROF-41, ROF-50, ROF-52, ROF-57, ROF-58, ROQ-1, ROQ-6, ROQ-7], + [Riunioni esterne], [ROF-1, ROF-2, ROF-3, ROF-5, ROF-6, ROF-31, ROF-33, RDF-56, ROV-1], ) #pagebreak() == Riepilogo @@ -1566,8 +1648,8 @@ Nella colonna "fonti" di della tabella viene indicato in quale contesto è stato rows: auto, inset: 6pt, table.header([*Tipologia*], [*Obbligatori*], [*Desiderabili*], [*Facoltativi*], [*Totale*]), - [*Funzionali*], [57], [1], [0], [58], + [*Funzionali*], [58], [1], [0], [59], [*Qualitativi*], [7], [0], [0], [7], [*Vincolo*], [4], [0], [0], [4], - [*Totale*], [68], [1], [0], [69], + [*Totale*], [69], [1], [0], [70], ) diff --git a/3-PB/documentidiprogetto/normediprogetto_1.0.0.typ b/3-PB/documentidiprogetto/normediprogetto_2.0.0.typ similarity index 99% rename from 3-PB/documentidiprogetto/normediprogetto_1.0.0.typ rename to 3-PB/documentidiprogetto/normediprogetto_2.0.0.typ index f2ea51b..0db4a2c 100644 --- a/3-PB/documentidiprogetto/normediprogetto_1.0.0.typ +++ b/3-PB/documentidiprogetto/normediprogetto_2.0.0.typ @@ -5,11 +5,24 @@ abstract: "Documento contenente le Norme di progetto che definiscono le modalità di lavoro del gruppo.", responsabili: ("Pietro Crotti", "Marco Egidi", "Matteo Marangon"), redattori: ("Mirco Borella", "Alessandro Bernardello", "Aleena Mathew", "Matteo Marangon", "Marco Egidi"), - verificatori: ("Mirco Borella", "Carmelo Russello", "Matteo Marangon", "Alessandro Bernardello", "Aleena Mathew", "Pietro Crotti"), + verificatori: ( + "Mirco Borella", + "Carmelo Russello", + "Matteo Marangon", + "Alessandro Bernardello", + "Aleena Mathew", + "Pietro Crotti", + "Marco Egidi", + ), tipo: "Documento Interno", destinatari: "Sigma18", - versioneAttuale: "1.0.0", + versioneAttuale: "2.0.0", versioni: ( + "2.0.0", + "2025/08/26", + "Aleena Mathew", + "Marco Egidi", + "Migliorie e aggiornamento delle metriche", "1.0.0", "2025/07/23", "Matteo Marangon", diff --git a/assets/usecasediagrams/AggiuntaBlocco.svg b/assets/usecasediagrams/AggiuntaBlocco.svg new file mode 100644 index 0000000..31768d6 --- /dev/null +++ b/assets/usecasediagrams/AggiuntaBlocco.svg @@ -0,0 +1 @@ +SistemaUtente esperto autenticatoUC[36] Aggiunta di unblocco ad una routineesistenteUC[8] ErroreGenerico«extend»UC[37] Aggiunta delblocco "Telegram - SendBot Message" ad unaroutine esistenteUC[39] Aggiunta del blocco"System - Wait Seconds" aduna routine esistenteUC[38] Aggiunta del blocco"AI - Summarize" ad unaroutine esistenteUC[40] Aggiunta delblocco "Notion - GetPage" ad una routineesistente \ No newline at end of file diff --git a/assets/usecasediagrams/Avviare.svg b/assets/usecasediagrams/Avviare.svg new file mode 100644 index 0000000..13b11da --- /dev/null +++ b/assets/usecasediagrams/Avviare.svg @@ -0,0 +1 @@ +SistemaUC[33] Avviare unaroutine esistentedalla dashboardUtente autenticatoUC[32]Avviare unaroutineesistenteUC[34] Avviare unaroutine esistentetramite la pagina dimodifica del flussoUC[8] ErroreGenerico«extend»UC[30] Errore«Workflownon trovato»«extend»UC[35] Errore«Impossibile eseguireil flusso»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/CollegareBlocchi.svg b/assets/usecasediagrams/CollegareBlocchi.svg new file mode 100644 index 0000000..3de893e --- /dev/null +++ b/assets/usecasediagrams/CollegareBlocchi.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[53] Collegaredue blocchi di unaroutine esistente \ No newline at end of file diff --git a/assets/usecasediagrams/CreazioneRoutine.svg b/assets/usecasediagrams/CreazioneRoutine.svg new file mode 100644 index 0000000..599e3e3 --- /dev/null +++ b/assets/usecasediagrams/CreazioneRoutine.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[21] Creazionenuova routineUC[8] ErroreGenerico«extend»UC[22] Errore «IlWorkflow deve avereun nome»UC[23] Errore «Il nome delworkflow deve averemeno di 25 caratteri»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/DarkMode.svg b/assets/usecasediagrams/DarkMode.svg new file mode 100644 index 0000000..ad1665f --- /dev/null +++ b/assets/usecasediagrams/DarkMode.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[55] ImpostareDark Mode o LightMode del clientUtente non autenticato \ No newline at end of file diff --git a/assets/usecasediagrams/Eliminare.svg b/assets/usecasediagrams/Eliminare.svg new file mode 100644 index 0000000..623d2f1 --- /dev/null +++ b/assets/usecasediagrams/Eliminare.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[29] Eliminare unaroutine esistenteUC[8] ErroreGenerico«extend»UC[30] Errore«Workflownon trovato»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/EliminareBlocco.svg b/assets/usecasediagrams/EliminareBlocco.svg new file mode 100644 index 0000000..2915f29 --- /dev/null +++ b/assets/usecasediagrams/EliminareBlocco.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[50] Eliminare unblocco da unaroutine esistenteUC[51] Eliminare unblocco da una routineesistente da tastieraUC[52] Eliminare unblocco da una routineesistente dainterfaccia graficaUC[8] ErroreGenerico«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/Generazione.svg b/assets/usecasediagrams/Generazione.svg new file mode 100644 index 0000000..4c10aaa --- /dev/null +++ b/assets/usecasediagrams/Generazione.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[24] Generare unaroutine mediantelinguaggio naturaleUC[8] ErroreGenerico«extend»UC[25] Errore«Prompt isrequired»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/Login.svg b/assets/usecasediagrams/Login.svg new file mode 100644 index 0000000..28470a8 --- /dev/null +++ b/assets/usecasediagrams/Login.svg @@ -0,0 +1 @@ +SistemaUtente non autenticatoUC[1] LoginUC[2]InserimentoE-mailUC[4] Errore«Credenzialinon valide»UC[8] ErroreGenerico«include»«extend»«extend»UC[3]InserimentoPassword«include»UC[5] Errore«Utente nontrovato»UC[6] Errore«Troppi tentatividi accesso»UC[7] Errore«Accountnonverificato»«extend»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/Logout.svg b/assets/usecasediagrams/Logout.svg new file mode 100644 index 0000000..34e917b --- /dev/null +++ b/assets/usecasediagrams/Logout.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[56] Logout \ No newline at end of file diff --git a/assets/usecasediagrams/ModificaImpostazioniBlocco.svg b/assets/usecasediagrams/ModificaImpostazioniBlocco.svg new file mode 100644 index 0000000..069b78d --- /dev/null +++ b/assets/usecasediagrams/ModificaImpostazioniBlocco.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[45] Modificare leimpostazioni di unsingolo bloccoUC[8] ErroreGenerico«extend»UC[46] Modifica impostazioni delblocco "Telegram - Send BotMessage"UC[48] Modifica impostazioni delblocco "Notion - Get Page"UC[47] Modifica impostazioni delblocco "System - Wait Seconds" \ No newline at end of file diff --git a/assets/usecasediagrams/ModificaNome.svg b/assets/usecasediagrams/ModificaNome.svg new file mode 100644 index 0000000..dbef2bc --- /dev/null +++ b/assets/usecasediagrams/ModificaNome.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[31] Modifica del nomedi una routineUC[8] ErroreGenerico«extend»UC[23] Errore «Il nome delworkflow deve averemeno di 25 caratteri»UC[22] Errore «IlWorkflow deve avereun nome»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/OTP.svg b/assets/usecasediagrams/OTP.svg new file mode 100644 index 0000000..14eaceb --- /dev/null +++ b/assets/usecasediagrams/OTP.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[18]Confermaemail OTPUC[19] Errore«Codice diconfermascaduto»UC[20] Errore«Codice diconferma nonvalido»UC[5] Errore«Utente nontrovato»UC[8] ErroreGenerico«extend»«extend»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/Registrazione.svg b/assets/usecasediagrams/Registrazione.svg new file mode 100644 index 0000000..52bdff4 --- /dev/null +++ b/assets/usecasediagrams/Registrazione.svg @@ -0,0 +1 @@ +SistemaUtente non autenticatoUC[9] RegistrazioneUC[2]InserimentoE-mail«include»UC[10]CreazionePassword«include»UC[11]ConfermaPassword«include»UC[12] Errore«User alreadyexists»UC[8] ErroreGenerico«extend»«extend»UC[13] Errore«è richiesta lapassword»UC[14] Errore«È richiesto uncodice diverifica»UC[15] Errore «Lepassword noncorrispondono»UC[16] Errore«Password troppocorta»UC[17] Errore «Emailquota limitexceeded»«extend»«extend»«extend»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/RitornareDashboard.svg b/assets/usecasediagrams/RitornareDashboard.svg new file mode 100644 index 0000000..76ac7cf --- /dev/null +++ b/assets/usecasediagrams/RitornareDashboard.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[58] Ritornare alladashboard dalla paginadi modifica di un flusso \ No newline at end of file diff --git a/assets/usecasediagrams/Salvare.svg b/assets/usecasediagrams/Salvare.svg new file mode 100644 index 0000000..ca3f179 --- /dev/null +++ b/assets/usecasediagrams/Salvare.svg @@ -0,0 +1 @@ +SistemaUC[49] Salvare una routineUtente autenticatoUC[8] ErroreGenerico«extend»UC[23] Errore «Il nome delworkflow deve averemeno di 25 caratteri»UC[30] Errore«Workflownon trovato»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/ScollegareBlocchi.svg b/assets/usecasediagrams/ScollegareBlocchi.svg new file mode 100644 index 0000000..ea0a178 --- /dev/null +++ b/assets/usecasediagrams/ScollegareBlocchi.svg @@ -0,0 +1 @@ +SistemaUC[54] Scollegare dueblocchi di una routineesistenteUtente autenticato \ No newline at end of file diff --git a/assets/usecasediagrams/UCC.svg b/assets/usecasediagrams/UCC.svg new file mode 100644 index 0000000..b02e575 --- /dev/null +++ b/assets/usecasediagrams/UCC.svg @@ -0,0 +1 @@ +SistemaUtente non autenticatoUC[1] LoginUC[2]InserimentoE-mailUC[4] Errore«Credenzialinon valide»UC[8] ErroreGenerico«include»«extend»«extend»UC[3]InserimentoPassword«include»UC[5] Errore«Utente nontrovato»UC[6] Errore«Troppi tentatividi accesso»UC[7] Errore«Accountnonverificato»«extend»«extend»«extend» \ No newline at end of file diff --git a/assets/usecasediagrams/VisDettagli.svg b/assets/usecasediagrams/VisDettagli.svg new file mode 100644 index 0000000..56d12b0 --- /dev/null +++ b/assets/usecasediagrams/VisDettagli.svg @@ -0,0 +1 @@ +SistemaUC[26] Visualizzare idettagli di una routineesistenteUtente autenticatoUC[27]Visualizzazionenome di unaroutineesistenteUC [28]Visualizzazionediagramma deiblocchi di unaroutineesistente«include»«include» \ No newline at end of file diff --git a/assets/usecasediagrams/VisualizzaDashboard.svg b/assets/usecasediagrams/VisualizzaDashboard.svg new file mode 100644 index 0000000..adbdcff --- /dev/null +++ b/assets/usecasediagrams/VisualizzaDashboard.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[57] Visualizzare ladashboard - listaautomazioni in seguitoal login \ No newline at end of file diff --git a/assets/usecasediagrams/VisualizzaImpostazioniBlocco.svg b/assets/usecasediagrams/VisualizzaImpostazioniBlocco.svg new file mode 100644 index 0000000..f3673fe --- /dev/null +++ b/assets/usecasediagrams/VisualizzaImpostazioniBlocco.svg @@ -0,0 +1 @@ +SistemaUtente autenticatoUC[41] Visualizza leimpostazioni di unsingolo bloccoUC[42] Visualizzazioneimpostazioni del blocco"Telegram - Send Bot Message"UC[43] Visualizzazioneimpostazioni del blocco"System - Wait Seconds"UC[44] Visualizzazioneimpostazioni del blocco "Notion- Get Page" \ No newline at end of file