projects:charta:analisi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:charta:analisi [2022/07/14 11:09] – [Utilizzo dell'applicazione] danielprojects:charta:analisi [2022/10/28 10:43] (current) rmontresor
Line 54: Line 54:
 === Visualizzazione === === Visualizzazione ===
  
-Gli utenti possono visualizzare e scaricare i documenti all'interno di una pagina che mostra i documenti aperti recentemente e un sistema di ricerca, in grado di filtrare i documenti per classe e valore dei tag.+Gli utenti possono visualizzare e scaricare i documenti all'interno di una pagina che mostra i documenti in ordine inverso di caricamento e un sistema di ricerca, in grado di filtrare i documenti per categoria (è un tag) e valore dei tag o nome del documento.
  
-Gli utenti possono vedere solo i documenti su cui hanno accesso di lettura. Se l'utente è l'**owner** del documento, può sempre vederlo, altrimenti deve essere membro di una acl che è stata collegata al documento da parte di un operatore al momento della pubblicazione.+Gli utenti possono vedere solo i documenti su cui hanno accesso di lettura. Se l'utente è l'**owner** del documento, può sempre vederlo, altrimenti deve essere membro di un gruppo con permesso read o admin su quella categoria di documenti
  
 === Ruoli === === Ruoli ===
  
-Ogni operatore appartiene a dei gruppi che stabiliscono i ruoli che l'operatore avrà sui diversi realm e sulle loro classi.+Ogni operatore appartiene a dei gruppi. Ogni gruppo avrà dei ruoli su delle categorie di documenti di quel realm
  
 Un operatore quindi potrebbe avere un ruolo in un realm e un ruolo diverso in un altro realm. Un operatore quindi potrebbe avere un ruolo in un realm e un ruolo diverso in un altro realm.
  
 Ad esempio: un operatore può scannerizzare e taggare documenti per l'azienda X e può pubblicare documenti per l'azienda Y. Ad esempio: un operatore può scannerizzare e taggare documenti per l'azienda X e può pubblicare documenti per l'azienda Y.
- 
-Deve quindi essere possibile fare login, selezionare un realm e poi eventualmente fare lo switch a un differente realm, senza dovere fare login nuovamente. 
  
  
Line 75: Line 73:
 **PROBLEMA:** **PROBLEMA:**
 Esistono due tipi di permessi Esistono due tipi di permessi
-  * Permessi di tipo operativo, che vogliamo associare a cose generali come i realm e le classi dei documenti+  * Permessi di tipo operativo, che vogliamo associare a cose generali come i realm e le categorie dei documenti
   * Permessi di visibilità sui singoli documenti   * Permessi di visibilità sui singoli documenti
  
-==== Soluzione 1 (SCARTATA)==== 
-  
-Un utente appartiene a più gruppi 
- 
-Un gruppo ha certi permessi di tipo operativo (es. può scannerizzare i file all'interno di un certo realm) 
-e certi permessi di visibilità sui singoli file (es. un operatore vuole che un documento sia visibile da tutti i dipendenti dell'area marketing) 
- 
-**Problema:** 
-In base a cosa vengono creati i gruppi? 
- 
-In base ai permessi operativi? 
-La maggior parte degli utenti non ha permessi operativi. 
- 
-In base ai permessi di visibilità? 
-I permessi di visibilità in genere si danno ai gruppi di lavoro, ad esempio i dipendenti di un settore, o il gruppo dei manager ecc. 
- 
-Ma queste divisioni non c'entrano con i permessi operativi e ci troveremo con utenti con gli stessi permessi operativi all'interno di gruppi di lavoro diversi. 
  
 ==== Soluzione 2 ==== ==== Soluzione 2 ====
Line 118: Line 99:
  
   * I **group** vengono associati ai realm e alle classi   * I **group** vengono associati ai realm e alle classi
- 
  
 Con i group, oltre ai ruoli di scan, tag, ecc, esiste il ruolo read, che può dare ad alcuni utenti speciali (non solo agli operatori interni) i permessi di lettura a tutti i documenti di un certo realm, o di una certa classe all'interno di un realm Con i group, oltre ai ruoli di scan, tag, ecc, esiste il ruolo read, che può dare ad alcuni utenti speciali (non solo agli operatori interni) i permessi di lettura a tutti i documenti di un certo realm, o di una certa classe all'interno di un realm
  
 Con le ACL, un operatore che carica un documento può scegliere i permessi di lettura che avrà il singolo documento una volta pubblicato, associandolo a delle liste che non hanno niente a che vedere con le suddivisioni operative o gli utenti speciali Con le ACL, un operatore che carica un documento può scegliere i permessi di lettura che avrà il singolo documento una volta pubblicato, associandolo a delle liste che non hanno niente a che vedere con le suddivisioni operative o gli utenti speciali
 +
 +----
 +
 +==== Soluzione 3 (scelta) ====
 +
 +Un utente appartiene a più GROUP
 +
 +----
 +
 +  * Le **categories** vengono associate ai singoli documenti
 +
 +  * I **group** vengono associati ai realm
 +
 +  * Il **role** può essere upload, tag, correct, publish, read, admin (comprende tutti i precedenti ruoli)
 +
 +  * Una tabella **GroupRoleCategory** assegna ad ogni gruppo di utenti dei ruoli su una categoria di documenti (esempio: il ruolo read su tutti i cedolini)
 +
 +Tutti i documenti hanno una categoria più una chiamata "default" su cui un gruppo può avere dei permessi
 +
 +Al momento il ruolo admin è riferito solo alla categoria default, che comprende tutti i documenti di quel realm
 +
  
 ==== Esempi di permessi ==== ==== Esempi di permessi ====
Line 128: Line 129:
 Un documento è leggibile da: Un documento è leggibile da:
   * Utente owner del documento   * Utente owner del documento
-  * Utenti membri di un group con accesso al documento +  * Utenti membri di un supergroup con ruolo "read" o "admin" sulla categoria del documento o quella default
-  * Utenti membri di un supergroup con ruolo "read" sul realm e sulla classe del documento+
  
 Un documento è scannerizzabile da: Un documento è scannerizzabile da:
-  * Utenti membri di un supergroup con ruolo "scansul realm nel quale si vuole salvare il documento scannerizzato+  * Utenti membri di un supergroup con ruolo "upload(probabilmente questo ruolo sarà sempre riferito alla categoria default del realm su cui si fa l'uplaod)
  
-**Esempi della tabella dei role** 
- 
-<code> 
-Superg  Ruolo   Realm   Classe 
-s1      SCAN    2       ALL 
-s2      TAG           cedolini 
-s2      CORRECT 3       fatture 
-s3      ALL     ALL     ALL 
-s4      READ    2       ALL 
-</code> 
- 
-nell'implementazione pratica, per questa tabella si può associare "ALL" al valore nullo all'interno del database 
 ==== Schema del db proposto ==== ==== Schema del db proposto ====
  
-{{ :projects:charta:schema_database.png?400|}}+{{ :projects:charta:charta_-_schema._db.png?400|}}
  
 Spiegazione: Spiegazione:
Line 155: Line 143:
   * Un certo numero di **file**   * Un certo numero di **file**
   * Un insieme di **tag** a cui vengono attribuiti dei valori   * Un insieme di **tag** a cui vengono attribuiti dei valori
-  * Una **class** (tipologia, ad es. cedolino, contratto, ecc.)+  * Una **categoria** (tipologia, ad es. cedolino, contratto, ecc.) + la categoria default che comprende tutti i documenti di un realm
  
->Ogni class di documento ha diversi tag da riempire (es. cedolino chiede il numero fiscale, contratto chiede data di scadenza), essi acquisiranno dei valori solo quando verranno associati a un documento+Ogni categoria di documento ha diversi tag da riempire (es. cedolino chiede il numero fiscale, contratto chiede data di scadenza), essi acquisiranno dei valori solo quando verranno associati a un documento
  
->Ogni classe appartiene a un realm, poiché diversi realm possono avere diverse definizioni della struttura di un cedolino o di un contratto+Ogni categoria appartiene a un realm, poiché diversi realm possono avere diverse definizioni della struttura di un cedolino o di un contratto
  
 Gli utenti (**user**) appartengono a: Gli utenti (**user**) appartengono a:
-  * **acl**, che ne determinano permessi di accesso in lettura sui singoli documenti +  * **group**, i quali determinano il ruolo sopra ai realm e sulle categoria all'interno dei realm
-  * **group**, che ne determinano il ruolo sopra ai realm e sulle class all'interno dei realm+
  
 I ruoli (**role**) possono essere: I ruoli (**role**) possono essere:
-  * SCAN, o UPLOAD: l'utente può creare nuovi documenti, decidendone realm, class (e owner?)+  * SCAN, o UPLOAD: l'utente può creare nuovi documenti, decidendone realm, categoria (e owner?)
   * TAG: l'utente può aggiungere tag al documento   * TAG: l'utente può aggiungere tag al documento
   * CORRECT: l'utente può correggere i tag o segnalare gli errori   * CORRECT: l'utente può correggere i tag o segnalare gli errori
Line 176: Line 163:
 Di seguito verrano descritte le varie fasi nei dettagli concentrandosi sull'utilizzo da parte degli utenti. Di seguito verrano descritte le varie fasi nei dettagli concentrandosi sull'utilizzo da parte degli utenti.
  
-**NOTA IMPORTANTE**: Le interfacce utente vanno disegnate tenendo conto delle **abilità degli utenti**. Ad esempio, le fasi di TAG che avvengono all'interno di Galileo saranno probabilmente svolte da **operatori con disabilità**, occorre quindi semplificare le operazioni, in particolare l'input (bottoni molto grandi ecc.)+**NOTA IMPORTANTE**: Le interfacce utente vanno disegnate tenendo conto delle **abilità degli utenti**. Per esempio, le fasi di TAG che avvengono all'interno di Galileo saranno probabilmente svolte da **operatori con disabilità**, occorre quindi semplificare le operazioni, in particolare l'input (bottoni molto grandi ecc.)
 ==== Fase di scan ==== ==== Fase di scan ====
  
 === Accesso === === Accesso ===
  
-L'operatore fa **login**, entra nella sezione "Scandal menù laterale, poi **seleziona il realm** nel quale vuole creare il nuovo documento da una selection list di tutti i realm sul quale l'operatore ha ruolo di scan.+L'operatore fa **login** selezionando in alcuni casi il realmaccede alla pagina di Primo Accesso se entra per la prima volta altrimenti entra nella sezione "Home"
  
 ---- ----
Line 204: Line 191:
    
 **Attenzione** **Attenzione**
 +
 In genere ogni file scansionato rappresenta una pagina di un documento.  In genere ogni file scansionato rappresenta una pagina di un documento. 
 L'operatore però può trascinare i file anche manualmente, ma in questo caso potrebbe trascinare un file composto da più pagine, che va gestito in modo diverso da come gestiamo un file scansionato di una singola pagina. L'operatore però può trascinare i file anche manualmente, ma in questo caso potrebbe trascinare un file composto da più pagine, che va gestito in modo diverso da come gestiamo un file scansionato di una singola pagina.
-Si potrebbe ad esempio dividere (lato server) il file composto da più pagine in più file di una singola pagina.+Si potrebbe ad esempio **dividere** (lato server) il file composto da più pagine in più file di una singola pagina.
  
 ---- ----
Line 212: Line 200:
 === Creazione del documento === === Creazione del documento ===
  
-Vicino all'area con la preview delle pagine ci devono essere tre campi compilabili dall'operatore:+Vicino all'area con la preview delle pagine ci devono essere **tre campi** compilabili dall'operatore:
  
   * **Nome** del documento: è un nome generico che è slegato dal nome delle singole pagine. Si può decidere se far si che sia univoco o no (il documento viene comunque identificato dall'id)   * **Nome** del documento: è un nome generico che è slegato dal nome delle singole pagine. Si può decidere se far si che sia univoco o no (il documento viene comunque identificato dall'id)
Line 221: Line 209:
  
 L'owner ad esempio potrebbe essere un campo riempibile nella fase di scan, ma facoltativo, mentre le ACL potrebbero essere decise nella fase di publish. L'owner ad esempio potrebbe essere un campo riempibile nella fase di scan, ma facoltativo, mentre le ACL potrebbero essere decise nella fase di publish.
 +
 +==== Fase di tag ====
 +
 +=== Accesso ===
 +
 +L'operatore fa il login ed entra nella sezione "Tag" dal menù laterale.
 +
 +=== Selezione del documento ===
 +
 +Gli si presenta una pagina con una **lista di realm** (tutti i realm su cui l'operatore ha ruolo di tag).
 +
 +Ogni realm è affiancato da una freccetta che serve per espandere la sezione.
 +
 +Cliccandoci verranno mostrate sotto al realm **tutte le class** su cui l'operatore ha ruolo di tag all'interno del realm.
 +
 +Ogni realm e ogni class sono affiancati da un numero che indica la **quantità** di documenti ancora da taggare presenti in coda all'interno del realm/class.
 +
 +Cliccando il realm o la class verrà visualizzata la lista di **tutti i documenti** all'interno di quel realm/class, con indicato il nome, la data di creazione e altre informazioni.
 +
 +Cliccando su un documento verrà aperta la schermata di tag.
 +
 +Da ogni schermata deve essere possibile **tornare indietro** alla schermata precedente
 +
 +=== Schermata di tag ===
 +
 +Cliccando su un documento si aprirà una schermata **divisa in due parti**.
 +
 +Sulla sinistra verrà visualizzata la **preview** del documento, in cui è possibile scorrere, sfogliare le pagine e fare zoom.
 +
 +Sulla destra ci saranno i **tag**, ovvero dei **campi di input** che devono essere riempiti dall'operatore.
 +
 +I valori da inserire all'interno dei tag sono semplicemente dei dati contenuti nello stesso documento e visualizzabili nella preview.
 +
 +Il compito dell'operatore sarà quindi di leggere il documento, trovare i dati e inserirli nei campi.
 +
 +Ogni class di documenti prevede uno specifico insieme di tag che devono essere riempiti, quindi l'operatore dovrà vedere **solamente** i tag appartenenti alla class del documento che sta taggando.
 +
 +=== Validazione ===
 +
 +Ogni tag deve avere delle regole per **validare** i valori inseriti.
 +
 +Ci sono due tipi di regole di validazione:
 +
 +  * Regole sul **singolo campo**: il valore del tag deve rispettare un certo formato (si pensi alle targhe, alle mail o ai codici fiscali). Queste regole possono essere implementate come stringhe **regex** salvate nel database, in una colonna apposita nella tabella dei tag.
 +  * Regole che si riferiscono ad **altri campi**: il valore del tag deve essere coerente con il valore dato ad **altri tag**. Ad esempio, la data di scadenza deve essere "maggiore" della data di creazione. Occorre pensare a un'implementazione più generica possibile, magari anche con un linguaggio interno e un **parser** che gestisce queste regole.
 +
 +=== Automazione ===
 +
 +Per semplificare il lavoro dell'operatore, si dovrà creare un'**intelligenza artificiale** o un sistema di **OCR** che legga il documento e inserisca i valori all'interno dei campi. Questa elaborazione può essere fatta da un processo che gira **in parallelo**, anche a partire dalla fase di scan.
 +
 +Quando l'operatore aprirà il documento in fase di tag per la prima volta, visualizzerà i campi con dei valori estratti da questo software, che l'operatore potrà modificare come vuole.
 +
 +Si potrebbe anche implementare un sistema di **suggerimenti** dei valori dei campi:
 +
 +Quando l'operatore clicca su un campo, compaiono diversi valori suggeriti che l'operatore può **selezionare**.
 +
 +Questi valori potrebbero essere calcolati sulla base dei valori di altri campi o sulla base di valori inseriti in passato.
 +
 +**Esempio**: Inserendo nome e cognome il sistema mi suggerisce un codice fiscale che è stato già associato a quel nome e cognome in passato.
 +
 +=== Completamento ===
 +
 +Una volta finito di inserire i tag, l'operatore clicca su un **pulsante** per chiudere la fase di tag su quel documento e farlo avanzare allo stato di check. La schermata si chiuderà e ritornerà sulla selezione del documento.
 +
 +==== Visualizzazione ====
 +
 +Ogni documento deve poter essere visibile dal proprio owner e dagli utenti appartenenti ai groups con READ (o ADMIN) role sul realm e sulla categoria a cui appartiene il documento
 +
 +Quando un utente va nella schermata di visualizzazione, vedrà i documenti inseriti di recente nel sistema e potrà effettuare ricerche per trovare i documenti.
 +
 +I documenti devono avere una thumbnail, un nome, un'indicazione del size
 +
 +Da questa pagina si potrà selezionare un documento ed entrare nella relativa pagina che permetterà di visualizzare le preview dei file di quel documento, i suoi tag e di poterli scaricare
 +
 +utente normale che consulta
 +{{drawio>namespace:charta:mock2}}
 +
 +utente operatore che inserisce
 +{{drawio>namespace:charta:mock3}}
 +
 +
 +==== Casi particolari (e non) di utenti ====
 +  * operatori (personale Galileo che scannerizza/elabora i documenti)
 +    * su più realm
 +    * più operazioni
 +  * dipendenti serit (vedono solo i loro documenti)
 +  * sindacalista serit (possono uploadare solo un tipo di documento)
 +  * dipendenti serit (vedono solo una classe di documento)
 +  * dirigenti serit (vede tutto nel real serit e __creano nuovi utenti del realm__)
 +  * dirigenti galileo (vedono tutto di tutti i real e honno abilitate tutte le operazioni) 
 +
  
  
  • projects/charta/analisi.1657789755.txt.gz
  • Last modified: 2022/07/14 11:09
  • by daniel