# Verwaltung fuer Tuerchips und Parkkarten ## Voraussetzungen - Python 3.10 oder neuer ## Installation ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Starten ```bash python3 app.py ``` Die Anwendung ist danach unter `http://127.0.0.1:5000` erreichbar. ## Funktionen - Anmeldung fuer Bearbeiter und Admins - Admin kann Bearbeiter und weitere Admins anlegen - Bearbeiter vergeben ihr Passwort bei der ersten Anmeldung selbst - Admin kann Passwort-Reset fuer Bearbeiter ausloesen - Admin kann vorhandene Bestandsdaten per CSV importieren - User anlegen - Ausgabe von Tuerchips und Parkkarten - Rueckgabe von Tuerchips und Parkkarten - Uebersicht mit Suche und letzten Bewegungen - Einfache Logdatei mit Datum, Medium und bearbeitendem Mitarbeiter - Anzeige der letzten Logeintraege im Webinterface - Bearbeiter wird auch in der Datenbankhistorie gespeichert - Doppelte Kennungen fuer Tuerchips und Parkkarten werden bei der Ausgabe verhindert ## Datenhaltung - Die Daten werden lokal in `inventory.db` als SQLite-Datenbank gespeichert. - Die einfache Dateiprotokollierung wird in `inventory.log` geschrieben. ## Anmeldung - Beim ersten Start wird automatisch ein Admin mit dem Benutzernamen `admin` angelegt. - Dieser Admin hat zunaechst kein Passwort und wird bei der ersten Anmeldung direkt zur Passwortvergabe gefuehrt. - Der Bearbeiter in der Historie und im Log ist immer der aktuell angemeldete Benutzer. ## Import vorhandener Daten - Nur Admins koennen den Import ueber den Menuepunkt `Import` aufrufen. - Der Import akzeptiert eine CSV-Datei mit Semikolon als Trennzeichen oder alternativ direkte Eingabe im Textfeld. - Die CSV-Datei muss UTF-8 kodiert sein. - Erwartetes Format pro Zeile: ```text User;Typ;Kennung;Aktion ``` - Beispiel: ```text Max Mustermann;Tuerchip;CHIP-1001;Import Erika Muster;Parkkarte;PARK-2001;Import ``` - Eine optionale Kopfzeile `User;Typ;Kennung;Aktion` wird automatisch erkannt und uebersprungen. - Unterstuetzte Typen sind `Tuerchip` und `Parkkarte`. - Die Aktion `Import` uebernimmt vorhandene aktive Bestandsdaten in die Datenbank. - Falls ein User noch nicht existiert, wird er beim Import automatisch angelegt. - Bereits vergebene Kennungen oder widerspruechliche aktive Zuordnungen werden gesammelt als Fehler angezeigt; der Import wird erst ausgefuehrt, wenn keine Fehler mehr vorhanden sind.