I basically copied this article https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt
58 lines
1.7 KiB
Plaintext
58 lines
1.7 KiB
Plaintext
Plan:
|
|
Hardware:
|
|
Raspberry Pi 3/4
|
|
Smartcard reader + Mifare DESFire
|
|
Nuki Smart Lock Go
|
|
ESP32 + Nuki hub
|
|
Models
|
|
User (Interacts with api)
|
|
ID int
|
|
Name str
|
|
Email str
|
|
Password str (hashed)
|
|
IsAdmin bool
|
|
Group (Interacts with physical access system)
|
|
ID int
|
|
Name str
|
|
Cards List[Card]
|
|
Accessauths List[AccessAuthorization]
|
|
Card
|
|
ID int
|
|
UUID str
|
|
GroupID int
|
|
AccessAuthorization
|
|
Name str
|
|
IsActive bool
|
|
Timeslots list[Timeslot]
|
|
Timeslot
|
|
Name str
|
|
WeekDay int
|
|
Starttime str(HH:MM)
|
|
Duration int (min)
|
|
|
|
Door
|
|
Name str
|
|
IsLocked bool
|
|
IsClosed bool
|
|
|
|
API Specification
|
|
- See http://127.0.0.1:8000/openapi.json or swagger ui
|
|
|
|
Workflow:
|
|
Erstelle gruppe
|
|
Erstelle AA mit Timeslot
|
|
Registriere karte -> gruppe
|
|
|
|
CRUD
|
|
create(post)
|
|
read(get)[all items]
|
|
read(get)[single item]
|
|
update(put/patch)
|
|
delete(delete)
|
|
|
|
zeitplan
|
|
Hier bin ich nicht sicher, ich denke an cron style für wiederholende dinge aber das kann nur zeitpunkte und keine blöcke.
|
|
Villeicht ne liste von cron zeiten [ "0 16 * * 2" "0 18 * * 2" ](Wäre dienstag 16-18 uhr) - Ist aber warscheinlich schwer zu parsen
|
|
Oder startzeit + länge in minuten [ "0 16 "* * 2" "120" ]
|
|
Ganz simpel ["wochentag(1-7)" "Startzeit" "Endzeit"]
|
|
Was ist mit "aller 2 wochen" oder "3. Sonntag im monat" |