|
1 | 1 | ```mermaid |
2 | 2 | C4Context |
3 | | - Person(Influenceuse , "Influenceuse") |
4 | | - Container(web_extension, "Extension navigateur") |
5 | | - System_Ext(ReseauSocial, "Réseau social", "Instagram, Youtube") |
| 3 | + Person(Utilisateur , "Utilisateur") |
6 | 4 | System_Boundary(c1, "Balance Tes Haters") { |
7 | | - Container(frontend, "Application Web", "NextJS") |
8 | | - Container(backend, "API Backend", "Python, FastAPI") |
9 | 5 | Container(llm, "LLM ?") |
| 6 | + Container(backend, "API Backend", "Python, FastAPI") |
10 | 7 | ContainerDb(db, "Base de données", "PostgreSQL") |
11 | 8 | } |
12 | | - Rel(Influenceuse, frontend, "Utilise", "HTTPS") |
13 | | - Rel(Influenceuse, web_extension, "déclenche") |
14 | | - Rel(frontend, backend, "Utilise", "HTTPS") |
15 | | - Rel(web_extension, backend, "Utilise", "HTTPS") |
16 | | - Rel(backend, db, "Lectures / écritures", "SQL") |
17 | | - Rel(web_extension, ReseauSocial, "Scraping / API", "HTTPS") |
18 | | - Rel(backend, llm, "Utilise", "prompt") |
| 9 | + System_Boundary(chrome,"Navigateur chrome") { |
| 10 | + Container(web_extension, "Extension navigateur") |
| 11 | + Container(browserTab, "Onglet de navigation", "Post Instagram, Youtube") |
| 12 | + ContainerDb(db_local, "Stockage local", "JSON") |
| 13 | + } |
| 14 | +
|
| 15 | + Rel(Utilisateur, web_extension, "déclenche") |
| 16 | + Rel(web_extension, backend, "Appelà l'API de classification", "HTTPS") |
| 17 | + Rel(backend, db, "Statistiques", "SQL") |
| 18 | + Rel(web_extension, browserTab, "Scraping", "TypeScript") |
| 19 | + Rel(web_extension, db_local, "Stockage des publications", "JSON") |
| 20 | + Rel(backend, llm, "Classifie", "prompt") |
19 | 21 | ``` |
20 | 22 |
|
21 | 23 | # Composants du système |
22 | 24 |
|
23 | | -_Application Web_ : Frontend NextJS |
24 | | - - Fournit l'interface client de la plate-forme Balance Tes Haters. |
25 | | - - Gère la navigation, l'enchainement des cas d'usage et l'appel aux API du backend |
| 25 | +_Extension navigateur_ : WebExtension chrome |
| 26 | + - Extension chrome de scraping des données des publications |
| 27 | + - Sur déclenchement de l'utilisateur : analyse l'onglet courant pour rechercher l'ensemble des commentaires d'une publication Instagrame, Youtube |
| 28 | + - les données scrapées sont transmises au backend via l'API d'analyse |
| 29 | + - le résultat est stocké en stockage local et utilisé par l'extension pour générer un rapport d'analyse |
26 | 30 |
|
27 | | -_Client Web_ : Composant client du frontend |
28 | | - - s'exécute dans l'environnement du navigateur de l'utilisateur |
29 | | - - effectue le scraping des publications (utilisation de [Pupeteer](https://pptr.dev/guides/running-puppeteer-in-the-browser)) |
30 | | - - upload les données scrapées sur le backend via le frontend |
| 31 | +_Stockage local_ : Stockage de l'historique des publications analysées dans le navigateur |
| 32 | + - utilise l'[API de stockage du navigateur](https://developer.chrome.com/docs/extensions/reference/api/storage?hl=fr) |
31 | 33 |
|
32 | 34 | _API Backend_ : Composant serveur |
33 | | - - fournit le service API utiles pour le client (authentification, gestion des données) |
34 | | - - réalise les traitements backend sur les données (analyse LLM, classification, statistiques, ...) |
| 35 | + - fournit le service API d'analyse des publications (analyse et classification LLM des commentaires, statistiques, ...) |
35 | 36 |
|
36 | 37 | _Base de données_ : Stockage des données selon le [modèle](./backend/model.md). |
37 | 38 |
|
38 | | -_LLM_ : Composant en charge de l'exécution des traitements utilisant le LLM |
| 39 | +_LLM_ : Composant en charge de l'exécution des traitements de classification |
39 | 40 |
|
40 | | -_Réseau social_ : Plateforme de réseau social externe (Youtube, Instagram) |
41 | | - - sources des données obtenues par API ou scraping direct |
0 commit comments