Skip to content

Commit 72e6b17

Browse files
committed
Merge remote-tracking branch 'origin/Projektabschluss'
# Conflicts: # project/backend/tests/test_recipe_sucuk.py
2 parents 1e883d8 + 32cc8c2 commit 72e6b17

7 files changed

Lines changed: 13 additions & 14 deletions

File tree

docs/Projekt-Retrospektive.png

501 KB
Loading

docs/Softwareanforderungsspezifikation (SRS).md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ niedrig
224224
___
225225
### 3. Nicht-funktionale Anforderungen
226226
Das Projekt muss zum Ende des 4. Semesters abgegeben werden, genaueres wird noch bekannt gegeben. <br>
227-
Sollte die Zeit nicht ausreichen, um alle geplanten Features zu implementieren, sollen die Kernfunktionen (Zutaten hinzufügen/entfernen, Rezeptsuche und Rezeptvorschläge) Priorität haben. Das Projekt soll dem schichtenbasierten Architekturstil und dem Liskov Substitution Designprinzip entsprechen.
227+
Sollte die Zeit nicht ausreichen, um alle geplanten Features zu implementieren, sollen die Kernfunktionen (Zutaten hinzufügen/entfernen, Rezeptsuche und Rezeptvorschläge) Priorität haben. Das Projekt soll dem schichtenbasierten Architekturstil und dem Single Responsibility Designprinzip entsprechen.
228228
#### 3.1 Technische Einschränkungen
229229
- **TE-1 (Architektur):** Das System muss als Web-Applikation realisiert werden. Eine native Installation auf dem Endgerät des Nutzers ist nicht vorgesehen.
230230
- **TE-2 (Laufzeitumgebung/Browser):** Die Anwendung muss auf den aktuellsten stabilen Versionen der Browser Google Chrome, Mozilla Firefox und Safari lauffähig sein. Eine Optimierung für veraltete Browser (z.B. Internet Explorer) oder Browser-Versionen erfolgt nicht.

docs/Softwarearchitekturdokument.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ Die wichtigsten Architekturentscheidungen sind als ADRs (Architecture Decision R
451451
| ADR02 | Intuitive Nutzbarkeit | Direkte Weiterleitung von Registrierung zum RecipeFinder (ohne erneute Anmeldung) |
452452
| ADR03 | Verhinderung von Informationsüberladung | 3x3-Matrix für Rezeptanzeige, keine maximale Begrenzung |
453453
| ADR04 | Architekturstil | Schichtbasierter Architekturstil (Frontend → Backend → Datenbank) |
454-
| ADR05 | Designprinzipien | Liskov Substitution Principle (LSP) für austauschbare Speicher-Implementierungen |
454+
| ADR05 | Designprinzipien | Single Responsibility Principle (SRP) für klare Trennung der Verantwortlichkeiten und Funktionalität |
455455

456456
Alle ADRs sind [hier](https://github.com/GalacticCodeGambit/LazyCook/tree/4710a641f177a29e59067edf688781efb3b03a3d/docs/adr) zu finden.
457457

@@ -485,7 +485,7 @@ Alle ADRs sind [hier](https://github.com/GalacticCodeGambit/LazyCook/tree/4710a6
485485

486486
| Risiko/Schuld | Beschreibung | Priorität | Maßnahme |
487487
|---------------|-------------|-----------|----------|
488-
| SQLite-Skalierbarkeit | SQLite unterstützt keine parallelen Schreibzugriffe; bei hoher Nutzerzahl kann es zu Engpässen kommen | Gering | Mittelfristig Migration auf PostgreSQL oder MySQL möglich dank LSP (ADR05) |
488+
| SQLite-Skalierbarkeit | SQLite unterstützt keine parallelen Schreibzugriffe; bei hoher Nutzerzahl kann es zu Engpässen kommen | Gering | Mittelfristig Migration auf PostgreSQL oder MySQL möglich dank SRP (ADR05) |
489489
| Fehlende maximale Rezeptbegrenzung | Bei vielen Rezepten in der Datenbank gibt es keine Begrenzung der Ergebnisanzahl, was zu langen Ladezeiten führen kann (ADR03) | Mittel | Pagination implementieren |
490490
| Rechtliche Probleme durch Urheberrecht bei Rezepten | Rezepte sind urheberrechtlich geschützt. Rezepte einfach ohen Erlaubnis bereitszustellen könnte zu Rechtlichen Problemen führen | Mittel | Vorhandene AGBs und Meldebutton, Verlinkung auf Original Rezept in Rezeptansichts zu sehen |
491491
| TODO-Kommentare im Code | Mehrere offene TODOs: Datenbank-Speicherort, E-Mail-Validierung, Passwortstärke, Error Messages generalisieren | Mittel | Systematisch abarbeiten |
@@ -504,7 +504,7 @@ Alle ADRs sind [hier](https://github.com/GalacticCodeGambit/LazyCook/tree/4710a6
504504
| SRS | Software Requirements Specification; Softwareanforderungsspezifikation |
505505
| REST | Representational State Transfer; Architekturstil für Web-APIs |
506506
| CORS | Cross-Origin Resource Sharing; Mechanismus zum Erlauben von Cross-Origin-Anfragen im Browser |
507-
| LSP | Liskov Substitution Principle; Designprinzip, das sicherstellt, dass Unterklassen die Basisklasse ersetzen können |
507+
| SRP | Single Responsibility Principle; Designprinzip, das sicherstellt, dass Verantwortlichkeiten in Klassen getrennt werden |
508508
| Docker Compose | Tool zur Definition und Verwaltung von Multi-Container-Docker-Anwendungen |
509509
| FastAPI | Modernes Python-Web-Framework für den Aufbau von APIs |
510510
| Next.js | React-Framework für serverseitiges Rendering und statische Seitengenerierung |

docs/adr/ADR05.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@ Welcher Designprinzipien soll für das Projekt verwendet werden? Um eine einheit
1515

1616
## Entscheidung
1717

18-
Gewählte Variante: "Liskov Substitution Principle (LSP)", denn damit stellen wir sicher, dass sich alle unsere Speicher-Implementierung gegenüber der Geschäftslogik gleich verhalten. Diese Variante, erlaubt uns es die Datenquelle später auszutauschen, ohne den Code im Service ändern zu müssen
18+
Gewählte Variante: "Single Responsibility Principle (SRP)", da wir als Architekturentscheideung das Schichtenmodell gewählt haben, passt SRP perfekt dazu. Wir möchten einen klare Trennung der Verantwortlichkeiten und Funktionalitäten, sodass Codeänderungen nicht an mehreren Stellen passieren müssen und Fehler weitreichend das ganze Projekt beeinflussen. Zudem möchten wir ELemente in der Datenpersistenz und dem Frontend einfach bei Bedarf austauschen können.
1919

2020
## Status
2121

2222
Angenommen
2323

2424
## Konsequenzen
2525

26-
* Gut, weil die Wartbarkeit erhöht wird.
27-
* Gut, weil die Testbarkeit verbessert wird.
28-
* Schlecht, weil der initiale Entwicklungsaufwand leicht steigt, da wir erst Interfaces definieren müssen, bevor wir die Logik implementieren können.
29-
* Schlecht, weil wir beim Design der Schnittstellen sehr sorgfältig sein müssen, um sicherzustellen, dass zukünftige Implementierungen (z. B. eine API, die Netzwerkfehler werfen kann) das Prinzip nicht verletzen.
26+
- Wechsel von LSP auf SRP. Da wir keinen Vererbung haben und auch keine Datenlogik mit Vererbung geplant ist ist LSP als Designprinzip sinnfrei
27+
- Einbindung von Service-Dateien für klare Trenneung der Aufgabenbereiche

project/backend/tests/test_recipe_sucuk.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
66

7-
import services.RecipeSUCUK as recipe_service_module
8-
from domain.ingredient import Ingredient
9-
from services.RecipeSUCUK import findRecipes
7+
import RecipeSucuk
8+
import Ingredient as IngredientModule
9+
from Ingredient import Ingredient
10+
from RecipeSucuk import findRecipes
1011

1112

1213
# ── Hilfsfunktionen ────────────────────────────────────────────

project/compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ services:
1717
- PYTHONUNBUFFERED=1
1818
- GMAIL_USER=${GMAIL_USER}
1919
- GMAIL_PASSWORD=${GMAIL_PASSWORD}
20-
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
20+
- JWT_SECRET_KEY=${JWT_SECRET_KEY:-dev-secret-change-me}
2121
- FRONTEND_URL=${FRONTEND_URL:-http://localhost:8000}
2222
volumes:
2323
- ./data:/data

project/frontend/app/recipeFinder/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
margin: 0;
9191
}
9292

93-
.popup-fields{
93+
.popup-fields {
9494
display: flex;
9595
gap: 10px;
9696
}

0 commit comments

Comments
 (0)