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/20 10:56] – [Fase di scan] 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 181: Line 168:
 === 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 231: Line 218:
 === Selezione del documento === === Selezione del documento ===
  
-Gli si presenta una pagina con una lista di realm (tutti i realm su cui l'operatore ha ruolo di tag).+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. 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.+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.+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 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 +Cliccando su un documento verrà aperta la schermata di tag
-Da ogni schermata deve essere possibile tornare indietro alla schermata precedente+ 
 +Da ogni schermata deve essere possibile **tornare indietro** alla schermata precedente
  
 === Schermata di tag === === Schermata di tag ===
  
-Cliccando su un documento si aprirà una schermata divisa in due parti.+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 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.+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. I valori da inserire all'interno dei tag sono semplicemente dei dati contenuti nello stesso documento e visualizzabili nella preview.
Line 256: Line 244:
 Il compito dell'operatore sarà quindi di leggere il documento, trovare i dati e inserirli nei campi. 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.+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 === === Validazione ===
  
-Ogni tag deve avere delle regole per validare i valori inseriti.+Ogni tag deve avere delle regole per **validare** i valori inseriti.
  
 Ci sono due tipi di regole di validazione: 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 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.+  * 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 === === 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, volendo anche durante la fase di scan.+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. 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.+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.+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. 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.+ 
 +**Esempio**: Inserendo nome e cognome il sistema mi suggerisce un codice fiscale che è stato già associato a quel nome e cognome in passato.
  
 === Completamento === === 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.+ 
 +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 ==== ==== Visualizzazione ====
  
-Ogni documento deve poter essere visibile dal proprio owner, dagli utenti appartenenti alle ACL collegate al documento, e dagli utenti appartenenti ai groups con READ role sul realm e sulla class a cui appartiene il documento+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. 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 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.1658307385.txt.gz
  • Last modified: 2022/07/20 10:56
  • by daniel