No description
  • Python 34.5%
  • JavaScript 34.2%
  • HTML 16.2%
  • CSS 14.9%
Find a file
flo@gloger 81813780e5
All checks were successful
Build & Push Docker Image / build (push) Successful in 14s
fix gerhard
2026-09-01 18:10:45 +02:00
.forgejo/workflows repair continue 2026-07-28 18:17:15 +02:00
lagerapp fix gerhard 2026-09-01 18:10:45 +02:00
.dockerignore Dateien nach „/“ hochladen 2026-07-28 17:53:07 +02:00
.gitignore Dateien nach „/“ hochladen 2026-07-28 17:53:07 +02:00
bricklink_order_sync.py große Änderung diverses 2026-08-06 23:02:28 +02:00
bricklink_sync.py Platten Manager / G - Logik 2026-08-19 05:27:07 +02:00
Dockerfile Dateien nach „/“ hochladen 2026-07-28 17:53:07 +02:00
fix_durchschnittspreis_trigger.sql große Änderung diverses 2026-08-06 23:02:28 +02:00
README.md mein erster commit 2026-07-28 19:15:12 +02:00
run_full_sync.sh Dateien nach „/“ hochladen 2026-07-28 18:02:11 +02:00
start_lagerapp.bat ASIN Manager: manuelles Ueberschreiben von Name/Bild + optionaler Scraping-Proxy 2026-07-29 00:25:41 +02:00

Lagerbestand-Suche (lokales Netzwerk)

papa Kleine Web-App für die Kistensuche im Lager. Läuft auf deinem PC, das iPad greift übers WLAN im Browser drauf zu — keine Installation am iPad nötig, kein Internet nötig.

1. Einmalig installieren

Im Ordner lagerapp (dieses Verzeichnis):

pip install -r requirements.txt

2. Starten

python app.py

Falls deine DB-Zugangsdaten von den Defaults abweichen (wie schon bei bricklink_sync.py), vorher als Umgebungsvariablen setzen:

set DB_HOST=localhost
set DB_PORT=5432
set DB_NAME=postgres
set DB_USER=postgres
set DB_PASSWORD=dein-passwort
python app.py

Die Konsole zeigt dann:

Lagerbestand-Suche läuft auf Port 5000

Lass das Fenster offen, solange du die App nutzen willst.

3. Lokale IP deines PCs rausfinden

In der Windows-Kommandozeile (cmd):

ipconfig

→ Zeile "IPv4-Adresse" unter deinem WLAN/LAN-Adapter, z. B. 192.168.1.42.

4. Auf dem iPad öffnen

iPad muss im gleichen WLAN sein wie der PC. Dann im Safari-Browser:

http://192.168.1.42:5000

(mit deiner eigenen IP aus Schritt 3). Am besten als Homescreen-Icon speichern (Teilen-Button → "Zum Home-Bildschirm"), dann öffnet's sich wie eine App.

5. Falls die Verbindung nicht klappt

Meistens blockiert die Windows-Firewall eingehende Verbindungen auf Port 5000. Einmalig freigeben:

netsh advfirewall firewall add rule name="Lagerapp" dir=in action=allow protocol=TCP localport=5000

(als Administrator ausführen)

Was die Suche macht

  • Eingabe wird gegen id UND name per Teiltreffer (ILIKE) verglichen → "2 x 4" findet z. B. alle Steine, in deren Namen "2 x 4" vorkommt.
  • Exakte ID-Treffer werden immer zuerst gelistet.
  • Jede Zeile aus der DB (also jede Farbe/jeder Zustand einzeln) wird als eigene Karte angezeigt, inkl. Lagerplatz, Menge, Farbe, Zustand.
  • Ergebnisse ohne lagerplatz-Eintrag zeigen "kein Platz" statt eines Kisten-Labels.
  • Live-Suche mit kurzer Verzögerung (kein Enter/Button nötig).
  • Begrenzt auf 200 Treffer pro Suche (sollte für jede sinnvolle Suche reichen; bei sehr allgemeinen Suchbegriffen ggf. genauer eingeben).

Kiste öffnen & direkt buchen (neu)

Auf der Startseite gibt's jetzt zwei große Buttons:

  • Kiste suchen — die bisherige Suche nach ID/Name.
  • Kiste öffnen — Lagerplatz eingeben (z. B. A2C), zeigt alle Artikel, die laut Datenbank dort liegen sollten (exakter Treffer, Groß-/Kleinschreibung egal).

Tippt man auf einen Artikel (egal ob aus der Suche oder der Kisten- Ansicht), öffnet sich unten ein Formular mit zwei großen Buttons:

  • Ausbuchen — nur die Anzahl nötig. Der bestehende DB-Trigger hält den Stückpreis (durchschnittspreis) dabei automatisch korrekt konstant, preis (Gesamtwert) wird proportional mit runtergesetzt.
  • + Einbuchen — Anzahl und Einkaufspreis pro Stück nötig. Ohne den Preis würde sich der Stückpreis beim nächsten Trigger-Lauf rechnerisch falsch verwässern (gleicher Gesamtwert durch mehr Stück geteilt). Die App berechnet daraus den neuen Gesamtwert, der Trigger übernimmt danach automatisch den korrekt gewichteten Stückpreis. verkaufspreis wird für den gebuchten Artikel im selben Zug automatisch neu berechnet (Minifigure ×3, Part ×2,5), damit er nicht veraltet stehen bleibt.

Wichtig für den BrickLink-Sync: Diese manuellen Buchungen fassen bewusst bl_last_synced_qty nicht an — der nächste Durchlauf von bricklink_sync.py (automatisch per Task Scheduler oder manuell über run_full_sync.bat) erkennt die Änderung dadurch ganz normal als "neu" und lädt sie zu BrickLink hoch.

Nächste Schritte (später)

Noch offen: nach Lagerplatz filtern/sortieren (teilweise schon durch "Kiste öffnen" abgedeckt), Barcode-/QR-Scan zur Suche, Zugriffsschutz falls die App mal übers Heimnetz hinauswächst.