-
Notifications
You must be signed in to change notification settings - Fork 1
Présentation générale et choix
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é ;
- ...
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 :
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.
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) :
- Je partage un cluster avec cet utilisateur.
- Je partage un groupe avec cet utilisateur.
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.
Un groupe peut être public ou privé, ce qui constitue le premier branchement dans les Règles Normales de Visibilité des Groupes :
- Si un groupe est public, tout le monde peut voir qu'il existe et a accès à son nom et au nombre de membres.
- 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 :
- je suis membre du groupe ;
- le groupe a été reconnu (acknowledged) par un cluster dont je suis membre ;
- j'ai été invité dans le groupe.
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.
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.
Un Cluster
est un Group
particulier qui modélise un réseau de personnes assez large, en général une école.
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.
Un groupe peut être vu comme un sous-groupe d'un cluster. Cette relation doit être validée par les deux parties (sous-groupe et cluster), et porte le nom de GroupAcknowledgement
.
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 cluster, les admins du cluster disposent également des droits d'administration sur le groupe (par exemple, pour nommer un nouvel admin plus "local").
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".
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.
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".
Un événement (Event
) est un groupe, celui des participants.
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.