1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-21 20:44:18 +00:00

📔 Improve typesetting in the goals page

This commit is contained in:
Steffo 2021-05-29 02:48:22 +02:00
parent 6c45ff0528
commit 0fd7c6c194
Signed by: steffo
GPG key ID: 6965406171929D01
16 changed files with 351 additions and 286 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -92,11 +92,6 @@ numero di tweet in una certa *finestra temporale*.
.. _posizione geografica: https://help.twitter.com/en/safety-and-security/tweet-location-settings
Database
--------
.. todo:: inserire schema database + glossario aggiornato
Casi d'uso
----------
@ -109,26 +104,32 @@ I principali casi duso individuati durante la progettazione di N.E.S.T. sono:
- La gestione degli utenti da parte di un Amministratore:
.. image:: CasiUso1.PNG
:width: 400
- La gestione del login da parte di un Utente:
.. image:: CasiUso2.PNG
:width: 400
- La gestione delle Allerte sia dal punto di vista dellUtente che del Sistema:
.. image:: CasiUso3.PNG
:width: 800
- La gestione della raccolta da parte dell'utente:
.. image:: CasiUso4.PNG
:width: 400
- La gestione di un repository da parte dell'utente:
.. image:: CasiUso5.PNG
:width: 400
- La visualizzazione di un repository:
.. image:: CasiUso6.PNG
:width: 400
Backlog generale

View file

@ -31,6 +31,7 @@ Benvenuto alla documentazione di N.E.S.T.!
:caption: Documentazione tecnica
code/meta/index
code/database/index
code/backend/index
code/crawler/index
code/frontend/index

View file

@ -99,7 +99,6 @@
<li class="toctree-l2"><a class="reference internal" href="#caratteristiche-degli-utenti">Caratteristiche degli utenti</a></li>
<li class="toctree-l2"><a class="reference internal" href="#glossario">Glossario</a></li>
<li class="toctree-l2"><a class="reference internal" href="#macro-funzionalita">Macro-funzionalità</a></li>
<li class="toctree-l2"><a class="reference internal" href="#database">Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="#casi-d-uso">Casi duso</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog-generale">Backlog generale</a></li>
</ul>
@ -117,6 +116,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
@ -257,13 +257,6 @@ saranno mostrate statistiche e grafici relativi ai tweet.</p>
<p>Infine, lutente potrà configurare una repository in modo che gli invii una <strong>allerta</strong> qualora vengano raccolti un dato
numero di tweet in una certa <em>finestra temporale</em>.</p>
</div>
<div class="section" id="database">
<h2>Database<a class="headerlink" href="#database" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>inserire schema database + glossario aggiornato</p>
</div>
</div>
<div class="section" id="casi-d-uso">
<h2>Casi duso<a class="headerlink" href="#casi-d-uso" title="Link a questa intestazione"></a></h2>
<p>N.E.S.T. prevede tre tipologie di <em>agenti</em> («utenti» UML): <strong>utente</strong>, <strong>amministratore</strong> e <strong>sistema</strong>.</p>
@ -271,22 +264,22 @@ numero di tweet in una certa <em>finestra temporale</em>.</p>
<p>I principali casi duso individuati durante la progettazione di N.E.S.T. sono:</p>
<ul>
<li><p>La gestione degli utenti da parte di un Amministratore:</p>
<img alt="../_images/CasiUso1.PNG" src="../_images/CasiUso1.PNG" />
<a class="reference internal image-reference" href="../_images/CasiUso1.PNG"><img alt="../_images/CasiUso1.PNG" src="../_images/CasiUso1.PNG" style="width: 400px;" /></a>
</li>
<li><p>La gestione del login da parte di un Utente:</p>
<img alt="../_images/CasiUso2.PNG" src="../_images/CasiUso2.PNG" />
<a class="reference internal image-reference" href="../_images/CasiUso2.PNG"><img alt="../_images/CasiUso2.PNG" src="../_images/CasiUso2.PNG" style="width: 400px;" /></a>
</li>
<li><p>La gestione delle Allerte sia dal punto di vista dellUtente che del Sistema:</p>
<img alt="../_images/CasiUso3.PNG" src="../_images/CasiUso3.PNG" />
<a class="reference internal image-reference" href="../_images/CasiUso3.PNG"><img alt="../_images/CasiUso3.PNG" src="../_images/CasiUso3.PNG" style="width: 800px;" /></a>
</li>
<li><p>La gestione della raccolta da parte dellutente:</p>
<img alt="../_images/CasiUso4.PNG" src="../_images/CasiUso4.PNG" />
<a class="reference internal image-reference" href="../_images/CasiUso4.PNG"><img alt="../_images/CasiUso4.PNG" src="../_images/CasiUso4.PNG" style="width: 400px;" /></a>
</li>
<li><p>La gestione di un repository da parte dellutente:</p>
<img alt="../_images/CasiUso5.PNG" src="../_images/CasiUso5.PNG" />
<a class="reference internal image-reference" href="../_images/CasiUso5.PNG"><img alt="../_images/CasiUso5.PNG" src="../_images/CasiUso5.PNG" style="width: 400px;" /></a>
</li>
<li><p>La visualizzazione di un repository:</p>
<img alt="../_images/CasiUso6.PNG" src="../_images/CasiUso6.PNG" />
<a class="reference internal image-reference" href="../_images/CasiUso6.PNG"><img alt="../_images/CasiUso6.PNG" src="../_images/CasiUso6.PNG" style="width: 400px;" /></a>
</li>
</ul>
</div>

View file

@ -93,7 +93,7 @@
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../goals.html">Descrizione generale</a></li>
<li class="toctree-l1"><a class="reference internal" href="../goals.html">Introduzione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sprint 0: 04 Apr - 18 Apr</a><ul>

View file

@ -105,6 +105,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
@ -233,8 +234,12 @@
</li>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.aid">aid (nest_backend.database.tables.MadeOf attributo)</a>
</li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert">Alert (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Alert">Alert (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.alert">alert (nest_backend.database.tables.MadeOf attributo)</a>
<ul>
@ -265,8 +270,12 @@
<li><a href="code/crawler/index.html#nest_crawler.authenticate">(nel modulo nest_crawler)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization">Authorization (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Authorization">Authorization (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.authorizations">authorizations (nest_backend.database.tables.Repository attributo)</a>
<ul>
@ -285,10 +294,18 @@
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.cid">(nest_backend.database.tables.MadeOf attributo)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed">Composed (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Composed">Composed (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed">(classe in nest_backend.database.tables)</a>
</li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition">Condition (classe in nest_backend.database.tables)</a>
</ul></li>
<li><a href="code/database/index.html#Condition">Condition (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains.condition">condition (nest_backend.database.tables.Contains attributo)</a>
<ul>
@ -309,8 +326,12 @@
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType">ConditionType (classe in nest_backend.database.tables)</a>
</li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains">Contains (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Contains">Contains (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.content">content (nest_backend.database.tables.Condition attributo)</a>
<ul>
@ -441,8 +462,12 @@
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf">MadeOf (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#MadeOf">MadeOf (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li>
modulo
@ -516,8 +541,12 @@
<li><a href="code/crawler/index.html#module-nest_crawler">modulo</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification">Notification (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Notification">Notification (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.notifications">notifications (nest_backend.database.tables.Alert attributo)</a>
</li>
</ul></td>
@ -566,8 +595,12 @@
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.repositories">repositories (nest_backend.database.tables.Tweet attributo)</a>
</li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository">Repository (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Repository">Repository (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.repository">repository (nest_backend.database.tables.Alert attributo)</a>
<ul>
@ -644,8 +677,12 @@
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet">Tweet (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#Tweet">Tweet (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed.tweet">tweet (nest_backend.database.tables.Composed attributo)</a>
<ul>
@ -666,16 +703,20 @@
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.User">User (classe in nest_backend.database.tables)</a>
<li><a href="code/database/index.html#User">User (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.User">(classe in nest_backend.database.tables)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.user">user (nest_backend.database.tables.Authorization attributo)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.user">(nest_backend.database.tables.ConditionType attributo)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.username">username (nest_backend.database.tables.User attributo)</a>
</li>
</ul></td>

View file

@ -106,6 +106,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
@ -214,7 +215,6 @@
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#caratteristiche-degli-utenti">Caratteristiche degli utenti</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#glossario">Glossario</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#macro-funzionalita">Macro-funzionalità</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#database">Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#casi-d-uso">Casi duso</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#backlog-generale">Backlog generale</a></li>
</ul>
@ -278,6 +278,7 @@
<li class="toctree-l2"><a class="reference internal" href="code/meta/index.html#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a><ul>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#module-nest_backend.gestione"><code class="docutils literal notranslate"><span class="pre">.gestione</span></code> - Metodi di utility</a></li>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul>
@ -293,7 +294,7 @@
</ul>
</div>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/index.rst</span>, line 39)</p>
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/index.rst</span>, line 40)</p>
<p>toctree contains reference to nonexisting document “development/clientinterview”</p>
</div>
<div class="toctree-wrapper compound">
@ -332,11 +333,6 @@ retrospettiva finale»</p>
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
@ -440,6 +436,11 @@ retrospettiva finale»</p>
<p class="todo-source">(L'<a class="reference internal" href="guide/installation.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 291.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Lasciamo il tempo al futuro?</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 4.)</p>
@ -448,11 +449,6 @@ retrospettiva finale»</p>
<p>Estendere il glossario qualora vengano incontrati altri termini.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 64.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>inserire schema database + glossario aggiornato</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 98.)</p>
</div>
<div class="section" id="altri-collegamenti">
<h2>Altri collegamenti<a class="headerlink" href="#altri-collegamenti" title="Link a questa intestazione"></a></h2>

Binary file not shown.

View file

@ -108,6 +108,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>

View file

@ -108,6 +108,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,265 @@
Struttura del database
======================
.. class:: Alert
Un alert è un allarme impostato da un utente che si "attiva" quando un numero di tweet che rispetta certe condizioni
(poste in and oppure or) supera una certa soglia, indicata dall'utente.
Ogni volta che l'alert si attiva, viene creata una "notifica", ovvero una entry nella tabella Notifications.
Questo permette di tenere conto del numero di volte in cui l'alert viene triggerato.
Gli alert sono legati al repository di appartenenza, e quando uno di essi viene allertato viene inviata una mail
all'admin e pubblicato un tweet sull'account Twitter usato per le analisi.
La tabella alert contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- l'identificativo dell'alert
* - name (VARCHAR, NOT NULL)
- il nome dell'alert
* - limit (INTEGER, NOT NULL)
- il numero di tweet che innescano l'alert
* - window_size (INTEGER, NOT NULL)
- numero di ore in cui il limit può venire superato
* - evaluation_mode (ENUM/SMALLINT, NOT NULL)
- può essere posto a all_or oppure all_not
* - repository_id (INTEGER, FK, NOT NULL)
-
.. class:: Authorization
Una autorizzazione è un'entità che rappresenta il permesso, concesso dal creatore del repository ad un altro utente,
di ispezionare il contenuto di un repo e di eseguire analisi su di esso.
La tabella authorization contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - rid (INTEGER, PK, FK)
- id del repository
* - email (VARCHAR, PK, FK)
- email dell'utente
.. class:: Composed
Composed è una tabella le cui righe indicano l'appartenenza di un Tweet ad un certo repository.
La tabella Composed contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - rid (INTEGER, PK, FK)
- id del repository
* - snowflake (VARCHAR, PK, FK)
- id del tweet
.. class:: Condition
Una condizione è un elemento che viene usato da repository e alert per cercare e classificare i tweet.
Le condizioni possono essere di diversi tipi:
- **hashtag**: valore ``0``, richiede che il tweet contenga un dato hashtag
- **time**: valore ``2``, richiede che il tweet sia stato pubblicato prima o dopo una certa data
- **coordinates**: valore ``3``, richiede che il tweet sia stato pubblicato entro un certo raggio da delle
coordinate
- **user**: valore ``5``, richiede che il tweet sia stato pubblicato da un dato utente
La tabella condition contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id della condition
* - type (ENUM/SMALLINT, NOT NULL)
- tipo del contenuto
* - content (VARCHAR, NOT NULL)
- contenuto della condition
* - repository_id (INTEGER, FK, NOT NULL)
-
.. class:: Contains
Contains è una tabella le cui righe indicano la presenza di una certa condition rispetto ad un certo tweet.
La tabella contains contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - cid (INTEGER, PK, FK)
- id della condition
* - snowflake (VARCHAR, PK, FK)
- id del tweet
.. class:: MadeOf
MadeOf è una tabella le cui righe indicano il legame tra un alert e una certa condition.
La tabella madeof contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - aid (INTEGER, PK, FK)
- id dell'alert
* - cid (INTEGER, PK, FK)
- id della condition
.. class:: Notification
Una notification è un'entità che consente di tenere traccia del momento in cui un certo alert si è attivato
per l'ultima volta.
La tabella notification contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id della notifica
* - ora (TIMESTAMP, NOT NULL)
- timestamp di attivazione
* - alert_id (INTEGER, FK, NOT NULL)
-
.. class:: Repository
Un repository è un "contenitore" di tweet, a cui sono legati alert, autorizzazioni di lettura e condizioni.
Le condizioni possono essere messe in and oppure or, inoltre un repository può venire archiviato prima divenire
eliminato. Quando un repository non è archiviato, questo viene riempito di tweet su base oraria, cosa che non
accade se viene archiviato.
La tabella repository contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id del repository
* - name (VARCHAR, NOT NULL)
- nome del repository
* - start (TIMESTAMP)
- timestamp di partenza del repository
* - end (TIMESTAMP)
- timestamp di chiusura del repository
* - is_active (BOOLEAN, NOT NULL)
- flag per segnalare se il repo è aperto o meno
* - evaluation_mode (ENUM/SMALLINT, NOT NULL)
- può essere posto a all_or oppure all_not
* - owner_id (VARCHAR, FK, NOT NULL)
- email del proprietario
* - is_deleted (BOOLEAN, NOT NULL)
- flag per segnalare se l'oggetto è eliminato o meno
.. class:: Tweet
Un tweet è un'entità che viene raccolta dal componente crawler, e quando viene inserita nella base di dati viene
legata ad un repository e alle condition che contiene. Un tweet contiene informazioni relativamente a chi l'ha
creato, eventuali immagini, il tempo di creazione, il tempo di inserimento nel db e l'opzionale posizione legata
al tweet.
La tabella tweet contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - snowflake (VARCHAR, PK)
- id univoco del tweet
* - content (VARCHAR)
- contenuto del tweet
* - location (VARCHAR)
- stringa contenente informazioni sulla posizione
* - place (VARCHAR)
- riservato per sviluppi futuri
* - poster (VARCHAR)
- informazioni sull'utente che ha creato il tweet
* - insert_time (TIMESTAMP, NOT NULL)
- timestamp dell'inserimento del tweet
* - image_url (VARCHAR)
- link alle immagini, se presenti
* - post_time (TIMESTAMP)
- timestamp relativo all'invio del tweet
.. class:: User
Uno user è l'utilizzatore della piattaforma.
E' presente di default un utente admin, il quale può creare nuovi utenti.
La tabella user contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - email (VARCHAR, PK)
- email dell'utente
* - username (VARCHAR, NOT NULL)
- username dell'utente
* - password (BYTEARRAY, NOT NULL)
- sale della password, codificata usando l'algoritmo bcrypt
* - isAdmin (BOOLEAN, NOT NULL)
- true se l'utente è admin

View file

@ -92,247 +92,6 @@ numero di tweet in una certa *finestra temporale*.
.. _posizione geografica: https://help.twitter.com/en/safety-and-security/tweet-location-settings
1.6 Database
^^^^^^^^^^^^
1.6.1 Definizioni, glossario
""""""""""""""""""""""""""""
**Alert**
| Un alert è un allarme impostato da un utente che si "attiva" quando un numero di tweet che rispetta certe condizioni (poste in and oppure or) supera una certa soglia, indicata dall'utente.
| Ogni volta che l'alert si attiva, viene creata una "notifica", ovvero una entry nella tabella Notifications. Questo permette di tenere conto del numero di volte in cui l'alert viene triggerato. Gli alert sono legati al repository di appartenenza, e quando uno di essi viene allertato viene inviata una mail all'admin e pubblicato un tweet sull'account Twitter usato per le analisi.
| La tabella alert contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- l'identificativo dell'alert
* - name (VARCHAR, NOT NULL)
- il nome dell'alert
* - limit (INTEGER, NOT NULL)
- il numero di tweet che innescano l'alert
* - window_size (INTEGER, NOT NULL)
- numero di ore in cui il limit può venire superato
* - evaluation_mode (ENUM/SMALLINT, NOT NULL)
- può essere posto a all_or oppure all_not
* - repository_id (INTEGER, FK, NOT NULL)
-
**Authorization**
| Una autorizzazione è un'entità che rappresenta il permesso, concesso dal creatore del repository ad un altro utente, di ispezionare il contenuto di un repo e di eseguire analisi su di esso.
| La tabella authorization contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - rid (INTEGER, PK, FK)
- id del repository
* - email (VARCHAR, PK, FK)
- email dell'utente
**Composed**
| Composed è una tabella le cui righe indicano l'appartenenza di un Tweet ad un certo repository.
| La tabella composed contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - rid (INTEGER, PK, FK)
- id del repository
* - snowflake (VARCHAR, PK, FK)
- id del tweet
**Condition**
| Una condizione è un elemento che viene usato da repository e alert per cercare e classificare i tweet.
| Le condizioni possono essere di diversi tipi:
- **hashtag** (valore 0);
- **location** (valore 1, deprecato);
- **time** (valore 2);
- **coordinates** (valore 3);
- **place** (valore 4, riservato per usi futuri);
- **user** (valore 5);
La tabella condition contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id della condition
* - type (ENUM/SMALLINT, NOT NULL)
- tipo del contenuto
* - content (VARCHAR, NOT NULL)
- contenuto della condition
* - repository_id (INTEGER, FK, NOT NULL)
-
**Contains**
Contains è una tabella le cui righe indicano la presenza di una certa condition rispetto ad un certo tweet.
La tabella contains contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - cid (INTEGER, PK, FK)
- id della condition
* - snowflake (VARCHAR, PK, FK)
- id del tweet
**MadeOf**
MadeOf è una tabella le cui righe indicano il legame tra un alert e una certa condition.
La tabella madeof contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - aid (INTEGER, PK, FK)
- id dell'alert
* - cid (INTEGER, PK, FK)
- id della condition
**Notification**
| Una notification è un'entità che consente di tenere traccia del momento in cui un certo alert si è attivato per l'ultima volta.
| La tabella notification contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id della notifica
* - ora (TIMESTAMP, NOT NULL)
- timestamp di attivazione
* - alert_id (INTEGER, FK, NOT NULL)
-
**Repository**
| Un repository è un "contenitore" di tweet, a cui sono legati alert, autorizzazioni di lettura e condizioni.
| Le condizioni possono essere messe in and oppure or, inoltre un repository può venire archiviato prima divenire eliminato. Quando un repository non è archiviato, questo viene riempito di tweet su base oraria, cosa che non accade se viene archiviato.
| La tabella repository contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id del repository
* - name (VARCHAR, NOT NULL)
- nome del repository
* - start (TIMESTAMP)
- timestamp di partenza del repository
* - end (TIMESTAMP)
- timestamp di chiusura del repository
* - is_active (BOOLEAN, NOT NULL)
- flag per segnalare se il repo è aperto o meno
* - evaluation_mode (ENUM/SMALLINT, NOT NULL)
- può essere posto a all_or oppure all_not
* - owner_id (VARCHAR, FK, NOT NULL)
- email del proprietario
* - is_deleted (BOOLEAN, NOT NULL)
- flag per segnalare se l'oggetto è eliminato o meno
**Tweet**
| Un tweet è un'entità che viene raccolta dal componente crawler, e quando viene inserita nella base di dati viene
| legata ad un repository e alle condition che contiene. Un tweet contiene informazioni relativamente a chi l'ha creato,
| eventuali immagini, il tempo di creazione, il tempo di inserimento nel db e l'opzionale posizione legata al tweet.
| La tabella tweet contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - snowflake (VARCHAR, PK)
- id univoco del tweet
* - content (VARCHAR)
- contenuto del tweet
* - location (VARCHAR)
- stringa contenente informazioni sulla posizione
* - place (VARCHAR)
- riservato per sviluppi futuri
* - poster (VARCHAR)
- informazioni sull'utente che ha creato il tweet
* - insert_time (TIMESTAMP, NOT NULL)
- timestamp dell'inserimento del tweet
* - image_url (VARCHAR)
- link alle immagini, se presenti
* - post_time (TIMESTAMP)
- timestamp relativo all'invio del tweet
**User**
Uno user è l'utilizzatore della piattaforma. E' presente di default un utente admin, il quale può creare nuovi utenti.
La tabella user contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - email (VARCHAR, PK)
- email dell'utente
* - username (VARCHAR, NOT NULL)
- username dell'utente
* - password (BYTEARRAY, NOT NULL)
- sale della password, codificata usando l'algoritmo bcrypt
* - isAdmin (BOOLEAN, NOT NULL)
- true se l'utente è admin
Casi d'uso
----------
@ -345,26 +104,32 @@ I principali casi duso individuati durante la progettazione di N.E.S.T. sono:
- La gestione degli utenti da parte di un Amministratore:
.. image:: CasiUso1.PNG
:width: 400
- La gestione del login da parte di un Utente:
.. image:: CasiUso2.PNG
:width: 400
- La gestione delle Allerte sia dal punto di vista dellUtente che del Sistema:
.. image:: CasiUso3.PNG
:width: 800
- La gestione della raccolta da parte dell'utente:
.. image:: CasiUso4.PNG
:width: 400
- La gestione di un repository da parte dell'utente:
.. image:: CasiUso5.PNG
:width: 400
- La visualizzazione di un repository:
.. image:: CasiUso6.PNG
:width: 400
Backlog generale

View file

@ -31,6 +31,7 @@ Benvenuto alla documentazione di N.E.S.T.!
:caption: Documentazione tecnica
code/meta/index
code/database/index
code/backend/index
code/crawler/index
code/frontend/index