/abschlussprojekt-zikade3301

abschlussprojekt-zikade3301 created by GitHub Classroom

Primary LanguageJava

Modulhandbuch

Problemstellung

Das aktuelle Modulhandbuch ist ein großes Word-Dokument. Das komplette Dokument muss angepackt werden um z.B ein Datum zu ändern. Die Darstellung der Module ist unübersichtlich. Es gibt keine Suchfunktion, was den oberen Punkt schwerer wiegen lässt. In einem Semster kann man sehen, welche Module angeboten werden, aber nicht, ob alle Teile des Moduls in dem Semster verfügbar sind. Die Angabe in welchen Semster das Modul verfügbar ist, liegt in einer seperaten Datei. Es gibt keinen Mechanismus, der anzeigt, dass zu viele oder zu wenige Module in Bachelor- oder Masterstudiengängen angeboten werden und es so zu einem Ungleichgewicht kommt.

Ziele und Lösungen

Dozenten können Module erstellen oder einzelne Aspekte des Moduls ändern. Der Administrator bekommt diese Anträge und kann diese bestätigen oder abändern und dann bestätigen. Erst nachdem der Administrator den Antrag reviewt hat, wird das Modul für die Nutzer angezeigt. Der Nutzer kann mit einer Volltextsuche und Filterfunktion seine Module finden und auswählen, damit er sie später als PDF herunterladen kann. Es gibt eine dynamische Semesterübersicht, die anzeigt welche Module in dem ausgewählten Semester verfügbar sind.

PDF

Das Modulhandbuch kann mit dem folgenden Request als PDF-Datei direkt aufgerufen werden.

Request
/module/pdf

API

Mithilfe von GraphQL wird eine dynamische API zur Verfügung gestellt, die per GET-Request über /module/api aufrufbar ist und Module im JSON-Format zurückgibt.

Über /module/graphiql kann die API mit Autovervollständigung ausprobiert werden, um geeignete Requests zu bauen.

Beispielrequests

Ausgabe aller deutschen Modultitel mit zugehöriger ID

Request
/module/api?query={allModule{titelDeutsch id}}
Response
{
  "data": {
    "allModule": [
      {
        "titelDeutsch": "Machine Learning",
        "id": "1"
      },
      {
        "titelDeutsch": "Betriebssysteme",
        "id": "2"
      }
    ]
  }
}

Ausgabe weiterer Modulinformationen von Modul 2

Request
/module/api?query=
{
  modulById(id: 2) {
    titelDeutsch
    titelEnglisch
    veranstaltungen {
      titel
      beschreibung {
        inhalte
      }
    }
    modulkategorie
  }
}
Response
{
  "data": {
    "modulById": {
      "titelDeutsch": "Betriebssysteme",
      "titelEnglisch": "Operating systems",
      "veranstaltungen": [
        {
          "titel": "Vorlesung Betriebssysteme",
          "beschreibung": {
            "inhalte": "Inhalte"
          }
        }
      ],
      "modulkategorie": "WAHLPFLICHT_BA"
    }
  }
}

Anmerkung

Zum Einfügen der Daten aus dem alten Modulhandbuch wird beim ersten Starten der docker-compose.yml die data.sql in src/main/resources/sql ausgeführt.