Updates
Some checks failed
Word Count / count-words (push) Failing after 31s

This commit is contained in:
2026-03-23 00:21:23 +01:00
parent d7ee355109
commit 7e533e67c9
2 changed files with 14 additions and 21 deletions

View File

@@ -72,8 +72,6 @@ Zu Beginn des Projekts wurde Visual Studio 2022 auf Windows verwendet. Visual St
Ein besonderer Aspekt der Entwicklung war der Wechsel von Windows auf macOS während des Projektverlaufs. Unter Plattform versteht man in der Softwareentwicklung das Betriebssystem, auf dem eine Anwendung läuft also etwa Windows, macOS oder Linux. Dieser Wechsel brachte spezifische Herausforderungen mit sich, da Oqtane primär für Windows entwickelt wurde. Obwohl Oqtane grundsätzlich auch auf macOS und Linux lauffähig ist, ist die Unterstützung für diese Plattformen veraltet und nicht vollständig angepasst. In der Praxis bedeutete das: Der Code ließ sich teilweise nicht fehlerfrei kompilieren also in ein lauffähiges Programm umwandeln und Oqtane startete zunächst nur mit Fehlermeldungen. Durch den Einsatz von JetBrains Rider als IDE konnten diese Probleme weitgehend gelöst werden, da JetBrains Rider eine bessere plattformübergreifende Integration bietet als die ursprünglich verwendete Entwicklungsumgebung.
---
## 3. Module
### 3.1 Entwicklung des Oqtane Themes
@@ -142,9 +140,6 @@ Darüber hinaus wurde das ControlPanel von Oqtane integriert, das Administratori
Die eigene Implementierung der Navigation über `PageState.Pages` und eine LINQ-basierte Filterlogik erwies sich als die richtige Entscheidung. Sie löste nicht nur das Problem der fehlenden Anpassbarkeit der Standardkomponente, sondern brachte gleichzeitig einen wesentlichen Mehrwert: Die Navigation ist vollständig wartungsfrei. Werden im CMS neue Seiten angelegt, erscheinen diese automatisch im Menü ohne dass eine einzige Zeile Code angepasst werden muss. Zudem ermöglichte dieser Ansatz die vollständige Kontrolle über das Erscheinungsbild des Burger-Menüs, was mit der Standardkomponente nicht möglich gewesen wäre.
---
### 3.2 Anmeldetool
#### 3.2.1 Ziel des Moduls
@@ -246,7 +241,7 @@ Das Modul verwendet zwei Entitäten, die in der Datenbank als Tabellen abgebilde
Die zentrale Entität repräsentiert einen einzelnen Absolventeneintrag und wird in der Datenbanktabelle `SZUAbsolventenvereinHallOfFame` gespeichert.
| Spalte | Datentyp | Beschreibung |
|------------|----------|--------------|
| :----------------- | :----------------- | :----------------------------------------------------------- |
| `HallOfFameId` | `int` (PK, Auto-Inkrement) | Primärschlüssel |
| `ModuleId` | `int` (FK → `Module`) | Fremdschlüssel zur Oqtane-Modulinstanz |
| `Name` | `string` | Name der Person |
@@ -263,6 +258,8 @@ Die zentrale Entität repräsentiert einen einzelnen Absolventeneintrag und wird
| `ModifiedBy` | `string` | Zuletzt geändert von (Audit) |
| `ModifiedOn` | `DateTime` | Zeitpunkt der letzten Änderung (Audit) |
Table: Entität HallOfFame
Die Entität implementiert das Oqtane-Interface `IAuditable`, wodurch die Audit-Felder automatisch vom Framework befüllt werden. Der Fremdschlüssel `ModuleId` verknüpft jeden Eintrag mit einer bestimmten Modulinstanz und ermöglicht so den Multi-Tenant-Betrieb.
**Entität HallOfFameReport**
@@ -270,7 +267,7 @@ Die Entität implementiert das Oqtane-Interface `IAuditable`, wodurch die Audit-
Die zweite Entität bildet einzelne Meldungen zu einem Eintrag ab und wird in der Tabelle `SZUAbsolventenvereinHallOfFameReport` gespeichert.
| Spalte | Datentyp | Beschreibung |
|----------------------|----------|--------------|
| :---------------------- | :----------------- | :----------------------------------------------------------- |
| `HallOfFameReportId` | `int` (PK, Auto-Inkrement) | Primärschlüssel |
| `HallOfFameId` | `int` (FK → `SZUAbsolventenvereinHallOfFame`) | Zugehöriger Eintrag |
| `Reason` | `string` | Meldegrund |
@@ -279,6 +276,8 @@ Die zweite Entität bildet einzelne Meldungen zu einem Eintrag ab und wird in de
| `ModifiedBy` | `string` | Zuletzt geändert von (Audit) |
| `ModifiedOn` | `DateTime` | Zeitpunkt der letzten Änderung (Audit) |
Table: Entität HallOfFameReport
Der Fremdschlüssel zu `SZUAbsolventenvereinHallOfFame` ist mit kaskadierendem Löschen konfiguriert, sodass beim Löschen eines Eintrags automatisch alle zugehörigen Meldungen entfernt werden. Zwischen den beiden Entitäten besteht eine 1:n-Beziehung: Ein Eintrag kann beliebig viele Meldungen besitzen.
#### 3.3.3 Datenbankmigrationen
@@ -289,9 +288,11 @@ Die Datenbankstruktur wird über Entity Framework Core Migrationen versioniert v
|--------------------|----------------|--------|
| `InitializeModule` | `01.00.00.00` | Erstellt die Haupttabelle mit allen Grundspalten sowie den Audit-Spalten |
| `AddReportingColumns` | `01.00.00.02` | Erweitert die Haupttabelle um die Spalten `IsReported` und `ReportReason` |
| `AddReportTable` | `01.00.00.03` | Erstellt die eigenständige Report-Tabelle mit Fremdschlüssel zur Haupttabelle |
Table: Datenbankmigrationen im Hall-of-Fame-Modul
> **Hinweis:** Version `01.00.00.01` wurde im Entwicklungsprozess übersprungen, da eine fehlerhafte Migration erstellt und anschließend wieder gelöscht werden musste.
| `AddReportTable` | `01.00.00.03` | Erstellt die eigenständige Report-Tabelle mit Fremdschlüssel zur Haupttabelle |
#### 3.3.4 Implementierungsdetails und Problemlösungen
@@ -313,8 +314,6 @@ Karten hatten ursprünglich unterschiedliche Höhen durch variierende Beschreibu
Die ursprünglich fest codierten Sortierrichtungen wurden durch einen Toggle-Button neben dem Sortier-Dropdown ersetzt, der mit einem dynamischen Pfeil-Icon zwischen aufsteigender und absteigender Sortierung umschaltet. Die Sortierlogik ist in einer berechneten Eigenschaft gekapselt, die Suche und Sortierung kombiniert.
---
## 4. Übergangslösung & Probleme
### 4.1 Übergangslösung (Sommer 2025)
@@ -385,8 +384,6 @@ Darüber hinaus hat sich gezeigt, dass regelmäßige Team-Meetings ein wichtiges
Auf persönlicher Ebene war die wichtigste Erkenntnis aus diesem Projekt die Bedeutung von Eigeninitiative. In einem größeren Teamprojekt kann man sich nicht immer darauf verlassen, dass andere Aufgaben erledigen oder Entscheidungen treffen. Gerade in den Phasen, in denen nicht alle Teammitglieder aktiv waren, hat sich gezeigt, dass proaktives Handeln entscheidend ist, um das Projekt voranzubringen. Diese Erfahrung hat das Bewusstsein dafür gestärkt, Verantwortung nicht nur für den eigenen Bereich, sondern auch für das Gesamtprojekt zu übernehmen und bei Bedarf auch Aufgaben außerhalb des ursprünglich geplanten Bereichs zu übernehmen.
---
## 6. Testen & Qualitätssicherung
### 6.1 Funktionstests der Module
@@ -405,8 +402,6 @@ Neben den technischen Tests wurde die Plattform auch von weiteren Personen d
Ein häufiges Feedback war, dass die Unterscheidung zwischen Zusage und Absage auf den ersten Blick nicht immer sofort klar war. Daraufhin wurden die Schaltflächen farblich deutlicher gestaltet Grün für die Zusage, Rot für die Absage und die Beschriftungen präzisiert. Solche Rückmeldungen aus echten Nutzertests sind wertvoll, weil Entwicklerinnen und Entwickler ihre eigene Anwendung oft anders wahrnehmen als Personen, die das System zum ersten Mal sehen.
---
## 7. Fazit und Ausblick
### 7.1 Zielerreichung
@@ -429,8 +424,6 @@ Langfristig könnte die Plattform um eine automatische E-Mail-Benachrichtigung e
AlumniHub bietet als Plattform eine solide Grundlage, die in den kommenden Jahren kontinuierlich erweitert werden kann, um den Absolventenverein der HTL Ungargasse langfristig digital zu unterstützen.
---
## 8. Quellen
Microsoft: ASP.NET Core Documentation. https://learn.microsoft.com/en-us/aspnet/core/ [Zugriff: 17.03.2026]

View File

@@ -105,7 +105,7 @@ Dies dient der Konfiguration sicherheitsrelevanter Parameter.
Um die Interaktion der Benutzer mit den Modulen zu verdeutlichen, wurden folgende Use Cases definiert:
| ID | Name | Akteur | Beschreibung |
| --- | --- | --- | ------ |
| :---- | :---------------------- | :----------------- | :----------------------------------------------------------- |
| UC-01 | Veranstaltung erstellen | Administrator | Ein Administrator legt ein neues Absolvententreffen mit Ort und Datum an. |
| UC-02 | Zu Event anmelden | Mitglied | Ein Absolvent bestätigt seine Teilnahme an einem Event über die Weboberfläche. |
| UC-03 | Inhalt melden | Mitglied | Ein Benutzer meldet einen beleidigenden Post am Schwarzen Brett über den "Melden"-Button. |
@@ -236,7 +236,7 @@ sequenceDiagram
Zusätzlich gab es einen Administrationszugang zu den Servern, welcher über SSH möglich war. Dieser wurde für die Installation und Konfiguration der einzelnen Komponenten verwendet. Der SSH Service ist in jeder Umgebung anders erreichbar gewesen.
| Umgebung | Administrationszugang |
| ---------- | --------------------- |
| :--------------------------- | :----------------------------------------------------------- |
| Hetzner | Wireguard |
| Schule | Highport |
| LiveDesign | IPSEC VPN |
@@ -256,7 +256,7 @@ Blazor ist ein kostenloses und quelloffenes Web-Framework, welches es möglich m
Blazor hat mehrere Hosting-Modelle:
| Hosting-Modell | Ausführungsort | Interaktivität | Kommunikation |
| :--- | :--- | :--- | :--- |
| :-------------------------- | :----------------- | :----------------- | :--------------------------- |
| **Static Server** | Server | Keine | HTTP (Initialer Load) |
| **Interactive Server** | Server | Hoch (Echtzeit) | SignalR / WebSockets |
| **Interactive WebAssembly** | Client (Browser) | Hoch (Lokal) | REST API / HTTP |
@@ -503,9 +503,9 @@ Mehr zum Projektmanagementprozess steht im allgemeinen Teil [Projektmanagement m
### Projektmanagement-Tools (YouTrack & Gitea)
Für die initiale Planung und die ersten Sprints wurde YouTrack von JetBrains eingesetzt. Im Vergleich zu einfachen To-Do-Listen bietet YouTrack mächtige Features für Softwareteams wie agile Boards, Time Tracking und Gantt-Diagramme.
Für die initiale Planung und die ersten Sprints wurde YouTrack von JetBrains eingesetzt. Im Vergleich zu einfachen To-Do-Listen bietet YouTrack mächtige Features für Softwareteams wie agile Boards, Time Tracking und Gantt-Diagramme.
Im weiteren Verlauf der Diplomarbeit sind wir jedoch auf die integrierten Projektmanagement-Funktionen von Gitea umgestiegen. Dieser Wechsel erfolgte, um den gesamten Entwicklungsprozess — von der Aufgabenverwaltung (Issues/Boards) über die Versionskontrolle bis hin zur CI/CD-Pipeline (Gitea Actions) — an einem zentralen Ort zu bündeln. Dies verbesserte die Übersichtlichkeit und reduzierte den administrativen Aufwand für die Pflege unterschiedlicher Systeme.
Im weiteren Verlauf der Diplomarbeit sind wir jedoch auf die integrierten Projektmanagement-Funktionen von Gitea umgestiegen. [Siehe Issues](#issues). Dieser Wechsel erfolgte, um den gesamten Entwicklungsprozess — von der Aufgabenverwaltung (Issues/Boards) über die Versionskontrolle bis hin zur CI/CD-Pipeline (Gitea Actions) — an einem zentralen Ort zu bündeln. Dies verbesserte die Übersichtlichkeit und reduzierte den administrativen Aufwand für die Pflege unterschiedlicher Systeme.
### Git