README added
This commit is contained in:
parent
752488fd71
commit
1f3da6794b
134
README.md
Normal file
134
README.md
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
|
||||||
|
Wichtel Generator – Backend
|
||||||
|
-
|
||||||
|
Backend-Service für eine Wichtel-Generator Web-App.
|
||||||
|
Dieses System stellt sicher, dass über mehrere Runden hinweg keine Wichtel-Paare doppelt vorkommen, solange noch neue Kombinationen mathematisch möglich sind.
|
||||||
|
|
||||||
|
Das Backend speichert alle Runden und Paarungen persistent in einer SQLite-Datenbank und stellt eine REST-API über FastAPI bereit.
|
||||||
|
|
||||||
|
----------------------FEATURES----------------------
|
||||||
|
-
|
||||||
|
-
|
||||||
|
Wiederholungsfreie Wichtelpaare
|
||||||
|
-------------------------------
|
||||||
|
Für die gleiche Teilnehmergruppe werden über mehrere Runden hinweg immer neue Paarungen generiert, solange es mathematisch möglich ist.
|
||||||
|
-
|
||||||
|
Mathematische Absicherung
|
||||||
|
-------------------------------
|
||||||
|
Die maximale Anzahl möglicher eindeutiger Runden wird über Derangements (Subfakultäten) berechnet.
|
||||||
|
-
|
||||||
|
Persistente Speicherung
|
||||||
|
-------------------------------
|
||||||
|
Alle Runden, Teilnehmer und Paarungen werden in SQLite gespeichert.
|
||||||
|
-
|
||||||
|
REST API (FastAPI)
|
||||||
|
-------------------------------
|
||||||
|
Optimiert für Integration in eine Web-App.
|
||||||
|
|
||||||
|
|
||||||
|
----------------------Grundidee----------------------
|
||||||
|
-
|
||||||
|
|
||||||
|
Wenn dieselbe Gruppe von Personen mehrfach wichtelt, sollen die Paare nicht wiederholt werden.
|
||||||
|
|
||||||
|
Dazu wird:
|
||||||
|
|
||||||
|
- Aus allen Teilnehmer-E-Mails ein Konstellations-Hash gebildet
|
||||||
|
|
||||||
|
- Diese Konstellation erhält einen oder mehrere Cycles
|
||||||
|
|
||||||
|
- In jedem Cycle werden so lange neue Runden erzeugt, bis alle möglichen Paarungen ausgeschöpft sind
|
||||||
|
|
||||||
|
- Danach wird automatisch ein neuer Cycle gestartet
|
||||||
|
|
||||||
|
|
||||||
|
----------------------Datenbank-Struktur----------------------
|
||||||
|
-
|
||||||
|
- ### CYCLES
|
||||||
|
|
||||||
|
Eine feste Teilnehmer-Konstellation (über Hash)
|
||||||
|
|
||||||
|
- ### ROUNDS
|
||||||
|
|
||||||
|
Eine einzelne Wichtelrunde innerhalb eines Cycles
|
||||||
|
|
||||||
|
- ### PARTICIPANTS
|
||||||
|
|
||||||
|
Teilnehmer einer bestimmten Runde
|
||||||
|
|
||||||
|
- ### PAIRS
|
||||||
|
Wer beschenkt wen in einer Runde
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
#### Die Datenbank erzwingt:
|
||||||
|
|
||||||
|
- kein Selbst-Wichteln
|
||||||
|
|
||||||
|
- kein doppelter Schenker
|
||||||
|
|
||||||
|
- kein doppelter Empfänger
|
||||||
|
|
||||||
|
|
||||||
|
----------------------API----------------------
|
||||||
|
-
|
||||||
|
### Runde erstellen
|
||||||
|
|
||||||
|
POST /api/rounds
|
||||||
|
|
||||||
|
- Request
|
||||||
|
|
||||||
|
{
|
||||||
|
"round_name": "Weihnachten 2025",
|
||||||
|
"participants": [
|
||||||
|
{ "name": "Alice", "email": "alice@mail.com", "wish": "Buch" },
|
||||||
|
{ "name": "Bob", "email": "bob@mail.com" },
|
||||||
|
{ "name": "Clara", "email": "clara@mail.com" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- Response
|
||||||
|
|
||||||
|
{
|
||||||
|
"round_id": 12,
|
||||||
|
"created_at": "2025-12-01T19:43:10"
|
||||||
|
}
|
||||||
|
|
||||||
|
---
|
||||||
|
### Wichtel aufdecken
|
||||||
|
|
||||||
|
POST /api/reveal
|
||||||
|
|
||||||
|
- Request
|
||||||
|
|
||||||
|
{
|
||||||
|
"email": "alice@mail.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- Response
|
||||||
|
|
||||||
|
{
|
||||||
|
"giver": "Alice",
|
||||||
|
"receiver": "Bob",
|
||||||
|
"wish": "Schokolade"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Wenn eine E-Mail in mehreren Runden vorkommt, gibt die API zuerst eine Auswahlliste zurück.**
|
||||||
|
|
||||||
|
|
||||||
|
----------------------Roadmap----------------------
|
||||||
|
-
|
||||||
|
|
||||||
|
|
||||||
|
- #### Token-basierte Reveal-Links
|
||||||
|
|
||||||
|
- #### Mail-Versand
|
||||||
|
|
||||||
|
- #### Ausschlussregeln (Partner, Familie, etc.)
|
||||||
|
|
||||||
|
- #### Deployment
|
||||||
Loading…
x
Reference in New Issue
Block a user