4.4 KiB
Fehlersuche: Geplante Ausleihen werden nicht automatisch aktiviert
🔍 Mögliche Ursachen
1. Termin wurde für falsches Datum erstellt
Die meisten Probleme entstehen, weil der Termin für ein falsches Datum (z.B. morgen statt heute) erstellt wurde.
2. Scheduler läuft nicht
Der automatische Scheduler kann deaktiviert sein oder nicht starten.
3. Zeitzonen-Problem
Die Startzeit kann in einer anderen Zeitzone gespeichert sein als erwartet.
✅ SOFORT-FIX: Manuell aktivieren
Falls du eine geplante Ausleihe sofort aktivieren möchtest, nutze diesen Befehl auf dem Server:
docker exec inventarsystem-mongodb mongosh --eval "
db.ausleihungen.updateOne(
{_id: ObjectId('BOOKING_ID_HIER')},
{\$set: {Status: 'active', LastUpdated: new Date()}}
)" Inventarsystem
Ersetze BOOKING_ID_HIER mit der ID deiner Ausleihe.
🔧 DEBUG: Alle geplanten Ausleihen anschauen
Führe auf deinem Server aus:
docker exec inventarsystem-mongodb mongosh --eval "
db.ausleihungen.find({Status: 'planned'}).pretty()
" Inventarsystem
Das zeigt dir:
- Start: Das gespeicherte Startdatum/Uhrzeit
- Periode: Die Schulstunde (falls verwendet)
- Erstellungs-Zeit vs. aktuelle Zeit: Vergleich
🎯 PROBLEM 1: Falsches Datum beim Erstellen
Symptom: Start-Zeit ist in der Zukunft (z.B. morgen statt heute)
Lösung:
- In der Kalender-Ansicht das richtige Datum auswählen
- Die aktuelle Uhrzeit für den Beginn nutzen (nicht eine zukünftige Zeit)
- Für Schulstunden: Stelle sicher die heutige Schulstunde zu wählen
🎯 PROBLEM 2: Scheduler läuft nicht
Symptom: Keine Logs über Termin-Aktivierungen
Überprüfung:
# 1. Container-Logs anschauen
docker logs inventarsystem-app | grep -i "scheduler\|appointment\|status update"
# 2. Scheduler ist aktiviert?
docker exec inventarsystem-app python3 -c "
import sys
sys.path.insert(0, '/app/Web')
import settings as cfg
print(f'Scheduler aktiviert: {cfg.SCHEDULER_ENABLED}')
print(f'Scheduler Intervall: {cfg.SCHEDULER_INTERVAL_MIN} Minuten')
"
Lösung wenn deaktiviert:
- In
config.jsonändern:"scheduler": { "enabled": true, "interval_minutes": 1 } - Container neu starten:
docker-compose restart app
🎯 PROBLEM 3: Startzeit als nur-Zeit (kein Datum)
Symptom: Start-Zeit zeigt nur "13:30" ohne Datum
Überprüfung: In der Datenbank nach {Start: {$type: "string"}} suchen statt datetime
Lösung: Die Ausleihe muss mit einem vollständigen Datum+Uhrzeit erstellt werden.
🚀 AUTOMATISCHE AKTIVIERUNG TESTEN
Nach dem Fix: Erstelle eine Ausleihe für:
- Heute (das aktuelle Datum)
- Schulstunde 7 (13:30-14:15)
- Startzeitpunkt sollte jetzt oder in 1 Minute sein
Warte 2 Minuten. Der Status sollte von planned zu active wechseln.
📊 SCHEDULER STATUS ÜBERPRÜFEN
# Zeige die letzten 50 Log-Zeilen
docker logs --tail 50 inventarsystem-app | tail -20
# Suche nach "Appointment status update"
docker logs inventarsystem-app 2>/dev/null | grep -i "Appointment status" | tail -5
Erwartete Log-Ausgabe:
Appointment status update finished: X changed (Y active, Z completed)
🔍 DETAILLIERTE DEBUG-INFOS
Wenn obiges nicht funktioniert, führe dies aus:
docker exec inventarsystem-app python3 -c "
from pymongo import MongoClient
import datetime
client = MongoClient('mongodb', 27017)
db = client['Inventarsystem']
aus = db['ausleihungen']
print('=== GEPLANTE AUSLEIHEN ===')
for b in aus.find({'Status': 'planned'}).limit(3):
print(f\"Start: {b.get('Start')} | Typ: {type(b.get('Start')).__name__}\")
print(f\"Periode: {b.get('Period')} | User: {b.get('User')}\")
print(f\"Jetzt > Start? {datetime.datetime.now() > b.get('Start', datetime.datetime.max)}\")
print()
"
💡 EMPFOHLENE EINSTELLUNG FÜR SCHULEN
In config.json verwende diese Werte:
{
"scheduler": {
"enabled": true,
"interval_minutes": 1,
"backup_interval_hours": 24
}
}
Dies checkt jede Minute ob Termine aktiviert werden sollen - perfekt für Schulstunden.
Weitere Hilfe?
Falls das nicht funktioniert:
- Schreib mir die exakte Uhrzeit wann du die Ausleihe erstellt hast
- Und wann sie hätte aktiviert werden sollen
- Zeige mir ein Beispiel aus der DB mit
docker exec inventarsystem-mongodb mongosh...