master
= Gruppenbildung Das System bietet eine zentrale Oberfläche zum erstellen und verwalten von Gruppen. Diese kann von anderen Systemen eingebunden werden, oder von Studierenden direkt aufgerufen werden. Außerdem wird eine API bereitgestellt für die Nutzung in anderen Systemen. Man kann Private und Öffentliche Gruppen erstellen. Private Gruppen kann man nur über einen Beitrittslink beitreten. Öffentliche Gruppen kann man ohne diesen beitreten. Man kann nach Öffentlichen Gruppen über eine Suchfunktion suchen. == Stand === Probleme * Momentan ist kein Controller getestet * Das Styling ist inkonsistent und skaliert nicht gut auf kleineren screens * Schlecht dokumentiert und Arc42 nicht aktuell * Integrationen nicht implementiert * Gruppenoptionen nicht implementiert * Snapshotting nicht implementiert * Caching funktioniert, aber teilweise nicht konsequent verwendet * Gruppenbeschreibung mit markup nicht implementiert * Invitelink kann nicht regeneriert werden * Seit Implementierung eines Caches ist die API kaputt === Fertig * Fast die komplette Logik + Templates + Controller überholt * Verwendung eines Caches anstatt vieler Datenbankanfragen * UI: Templates mit Fragmenten und auslagertem styling vereinfacht, einige Seiten zusammengefasst * Services komplett umstrukturiert, ergeben inhaltlich mehr Sinn und sind kleiner * Konsequenteres Logging, aspektorientiertes Logging * Aktivere Gruppenobjekte mit mehr Validierung * Extratabelle für Invitelinks entfernt, Datenbank vereinfacht * Man kann Änderungen an Gruppen nachvollziehen mit Zeitstempeln und einer Übersichtsseite * Gruppen und Teilnehmerlisten können exportiert werden === Heroku Die letzte Version der Anwendung ist unter gruppenfindung.herokuapp.com zu erreichen. Es existieren zwei Defaultuser: * Username: orga, Passwort: orga * Username: studentin, Passwort: studentin == Ursprüngliche Readme === Problem Die meisten Teilsysteme von MOPS arbeiten mit Gruppierungen von Studenten: Materialien für Lerngruppen/Veranstaltungen, Gruppenportfolios, Gruppenabstimmungen etc. Jedes System müsste dementsprechend eine Gruppenverwaltung implementieren, was zeitaufwändig ist. === Ziele Die Gruppenverwaltung wird bieten: * Eine Seite zum erstellen von neuen Gruppen * Eine Seite zum verwalten von bestehenden Gruppen * Eine Übersicht über belegte Gruppen * Detailansicht für Gruppen * Eine API zum anfragen von Gruppendaten === Details Über *Gruppen*: * Es gibt private und öffentliche Gruppen ** Privat: Beitritt über Einladungslink ** Öffentlich: Beitritt über Liste * Jede Gruppe kann einer Veranstalung zugeordnet werden (oder ist eine Veranstaltung) * Gruppenteilnehmer können Administratorrollen innerhalb der Gruppe einnehmen * Wenn man eine Gruppe erstellt, wird man dieser direkt hinzugefügt und als Admin registriert (unabhängig davon ob es eine öffentliche oder private Gruppe ist) * Gruppen verschwinden, wenn sie keine Mitglieder mehr haben Über *Admin* (interne Rolle): * Admin's können anderen Gruppenmitgliedern Adminrechte geben * Admin's können den Beitrittslink für private Guppen erstellen * Admin's können andere Mitglieder aus der Gruppe entfernen Über *Mitglied* (interne Rolle): * Mitglieder haben keine Rechte in der Gruppe. Sie können nur eigenständig aus der Gruppe austreten. Für *Organisatoren* (keycloak Rolle): * Beliebige Gruppen können erstellt/gelöscht/bearbeitet werden * Teilnehmerlisten können per .csv importiert werden * Monitoringfunktionen Für *Studenten* (keycloak Rolle) : * Übersicht mit allen belegten Gruppen * Übersicht mit allen öffentlichen Gruppen * Gruppen können erstellt werden * Öffentlichen Gruppen kann beigetreten werden * Gruppen, in welchen der Student Admin ist, können verwaltet werden Über die *Schnittstelle*: * Alle Gruppen können angefragt werden, zum Datenabgleich * Eine Liste von Gruppen eines Studenten kann angefragt werden (evtl.) * Eine einzelne Gruppe kann per ID angefragt werden (evtl.) * etc? === Verwendung Die Anwendung kann mit `docker-compse up` im Wurzelverzeichnis gestartet werden, eine API-Doku befindet sich im Dokumentation-Ordner (das swagger-zip). Der Import über CSV erfolgt nach dem Format `id,givenname,familyname,email`
Description
Languages
Java
80.8%
HTML
15.1%
Shell
2.3%
CSS
1.5%
Dockerfile
0.2%
Other
0.1%