Skip to content

Présentation générale et choix

Camille Masset edited this page May 11, 2016 · 6 revisions

Présentation générale, choix d'architecture

Introduction

Sigma est une plateforme communautaire à destination des écoles d'ingénieur françaises. Les principales fonctionnalités sont donc :

  • un annuaire structuré ;
  • un calendrier d'événements partagé et personnel ;
  • un système de publications avec une gestion fine de la visibilité ;
  • ...

Modèles utilisés

Sigma utilise un certain nombre de modèles pour représenter les objets en jeu dans une telle plateforme. Voici la liste des principales entités utilisées :

Utilisateur

Un utilisateur, ou User, représente une personne physique qui utilise le service.
Il est identifié par une adresse email avec laquelle il peut se connecter.
Un utilisateur possède également un nom, un prénom, un mot de passe et un username.

Visibilité

Tout utilisateur authentifié sur Sigma peut voir les noms et prénoms de tous les autres utilisateurs (au moyen d'une recherche par exemple). Ceci est nécessaire pour retrouver quelqu'un d'une autre école par exemple. On appellera informations minimales d'un utilisateur, ses nom, prénom et username.

Pour voir plus d'informations sur un utilisateur (email, photo, groupes, etc.), je dois remplir l'une des conditions suivantes, vérifiées dans cet ordre (Règles Normales de Visibilité des Utilisateurs) :

  1. Je partage un cluster avec cet utilisateur.
  2. Je partage un groupe avec cet utilisateur.

Groupe

Comme tout réseau social, Sigma permet aux utilisateurs de se rassembler par groupe. Un groupe (Group) est une notion très générique dans Sigma, et peut représenter aussi bien une école qu'un groupe de discussion entre utilisateurs.

Visibilité

Un groupe peut être public ou privé, ce qui constitue le premier branchement dans les Règles Normales de Visibilité des Groupes :

  1. Si un groupe est public, tout le monde peut voir qu'il existe et a accès à son nom et au nombre de membres.
  2. Si un groupe est privé, je peux voir les informations de base (nom et nombre de membres) si je remplis l'une des conditions suivantes :
  3. je suis membre du groupe ;
  4. le groupe a été reconnu (acknowledged) par un groupe dont je suis membre ;
  5. j'ai été invité dans le groupe.

Membership

L'appartenance à un groupe, ou membership en anglais, est modélisée dans Sigma par un objet (GroupMember dans le backend Django, Membership dans le frontend Angular). Un GroupMember pointe donc vers un User et un `Group. Des détails tels que le niveau de permission de l'utilisateur dans le groupe sont stockés dans cet objet. Une membership peut posséder une date de fin de validité : passé cette date, l'appartenance au groupe est "désactivée" et l'utilisateur ne peut plus voir les nouvelles activités du groupe. Si cette date est modifiée, l'utilisateur peut voir ce qu'il s'est passé entre temps. En cas de suppression complète de la membership, toutes les informations sont perdues.

Visibilité

Je peux voir un GroupMember si je peux voir l'User et le Group associés, suivant les Règles Normales de Visibilité présentées précédemment.

Cluster

Un Cluster est un Group particulier qui modélise un réseau de personnes assez large, en général une école.

Visibilité

Un cluster est un groupe public. Par conséquent, dès que je peux voir un utilisateur, je peux voir toutes les memberships le liant à un cluster.

Relations entre groupes

Un groupe peut être vu comme un sous-groupe d'un autre groupe (dit "parent"). Cette relation doit être validée par les deux parties (sous-groupe et parent), et porte le nom de GroupAcknowledgment. C'est au travers de cette relation que l'on définit le type d'un groupe, par exemple "association" ou "cursus".
Cette relation permet également de définir les Règles Normales de Visibilité des Groupes (cf. supra).
D'autre part, quand on groupe est acknowledged par un autre, les admins du parent peuvent disposer également des droits d'administration sur le sous-groupe si le champ GroupAcknowledgment.delegate_admin est défini à True.

Publications

Afin de favoriser la communication dans les écoles, Sigma fournit un système de publications. Une Publication est toujours postée dans un Group (destinataire), par un User (auteur). Celui-ci peut poster au nom d'un groupe.

Une publication peut être "mise en avant", ce qui permet de distinguer les publications importantes (et "validées" par les modérateurs) des publications plus "spammatoires".

Visibilité

Les publications sont toutes visibles par les membres du groupe destinataire.
Concernant l'utilisateur-auteur et le groupe (éventuel) au nom duquel la publication est postée, les Règles Normales de Visibilité s'appliquent.

Modération

La modération se fait à trois niveaux :

  • groupe destinataire :
    • qui peut publier dans le groupe ?
    • qui peut mettre des publications en avant ?
  • groupe émetteur (éventuel) : qui peut publier au nom du groupe ?

La modération s'appuie sur un système de listes blanches et noires, pouvant contenir le joker "tout le monde".

Événements

Un événement (Event) est un groupe, celui des participants.

Visibilité

Les Règles Normales de Visibilité des Groupes s'appliquent donc aux événements : un événement public sera visible par tout le monde, un événement privé demandera certaines conditions.
Si un Event privé, non acknowledged par un cluster, et "sur invitation seulement*, publie dans un groupe, cela implique qu'il invite tous les membres du groupe à rejoindre l'événement.

Clone this wiki locally