deutsche Zeit statt UTC

Dieser Commit ist enthalten in:
2025-06-08 20:21:58 +02:00
Ursprung f9e5823eeb
Commit f269082115
19 geänderte Dateien mit 1411 neuen und 31 gelöschten Zeilen

Datei anzeigen

@@ -1210,4 +1210,85 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- ✅ Login funktioniert wieder nach 2+ Fehlversuchen
- ✅ CAPTCHA wird nur angezeigt wenn Keys konfiguriert sind
- ✅ Für PoC-Phase ohne CAPTCHA nutzbar
- ✅ Produktiv-ready wenn CAPTCHA-Keys eingetragen werden
- ✅ Produktiv-ready wenn CAPTCHA-Keys eingetragen werden
### 2025-06-08: Zeitzone auf Europe/Berlin umgestellt
**Problem:**
- Alle Zeitstempel wurden in UTC gespeichert und angezeigt
- Backup-Dateinamen zeigten UTC-Zeit statt deutsche Zeit
- Verwirrung bei Zeitangaben im Admin Panel und Logs
**Lösung:**
1. **Docker Container Zeitzone konfiguriert:**
- Alle Dockerfiles mit `TZ=Europe/Berlin` und tzdata Installation
- PostgreSQL mit `PGTZ=Europe/Berlin` für Datenbank-Zeitzone
- Explizite Zeitzone-Dateien in /etc/localtime und /etc/timezone
2. **Python Code angepasst:**
- Import von `zoneinfo.ZoneInfo` für Zeitzonenunterstützung
- Alle `datetime.now()` Aufrufe mit `ZoneInfo("Europe/Berlin")`
- `.replace(tzinfo=None)` für Kompatibilität mit timezone-unaware Timestamps
3. **PostgreSQL Konfiguration:**
- `SET timezone = 'Europe/Berlin';` in init.sql
- Umgebungsvariablen TZ und PGTZ in docker-compose.yaml
4. **docker-compose.yaml erweitert:**
- `TZ: Europe/Berlin` für alle Services
**Geänderte Dateien:**
- `v2_adminpanel/Dockerfile`: Zeitzone und tzdata hinzugefügt
- `v2_postgres/Dockerfile`: Zeitzone und tzdata hinzugefügt
- `v2_nginx/Dockerfile`: Zeitzone und tzdata hinzugefügt
- `v2_lizenzserver/Dockerfile`: Zeitzone und tzdata hinzugefügt
- `v2_adminpanel/app.py`: 14 datetime.now() Aufrufe mit Zeitzone versehen
- `v2_adminpanel/init.sql`: PostgreSQL Zeitzone gesetzt
- `v2/docker-compose.yaml`: TZ Environment-Variable für alle Services
**Ergebnis:**
- ✅ Alle neuen Zeitstempel werden in deutscher Zeit (Europe/Berlin) gespeichert
- ✅ Backup-Dateinamen zeigen korrekte deutsche Zeit
- ✅ Admin Panel zeigt alle Zeiten in deutscher Zeitzone
- ✅ Automatische Anpassung bei Sommer-/Winterzeit
- ✅ Konsistente Zeitangaben über alle Komponenten
**Hinweis:** Nach diesen Änderungen müssen die Docker Container neu gebaut werden:
```bash
docker-compose down
docker-compose build
docker-compose up -d
```
### 2025-06-08: Zeitzone-Fix - PostgreSQL Timestamps
**Problem nach erster Implementierung:**
- Trotz Zeitzoneneinstellung wurden Zeiten immer noch in UTC angezeigt
- Grund: PostgreSQL Tabellen verwendeten `TIMESTAMP WITHOUT TIME ZONE`
**Zusätzliche Lösung:**
1. **Datenbankschema angepasst:**
- Alle `TIMESTAMP` Spalten auf `TIMESTAMP WITH TIME ZONE` geändert
- Betrifft: created_at, timestamp, started_at, ended_at, last_heartbeat, etc.
- Migration für bestehende Datenbanken berücksichtigt
2. **SQL-Abfragen vereinfacht:**
- `AT TIME ZONE 'Europe/Berlin'` nicht mehr nötig
- PostgreSQL handhabt Zeitzonenkonvertierung automatisch
**Geänderte Datei:**
- `v2_adminpanel/init.sql`: Alle TIMESTAMP Felder mit WITH TIME ZONE
**Wichtig:** Bei bestehenden Installationen muss die Datenbank neu initialisiert oder manuell migriert werden:
```sql
ALTER TABLE customers ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE licenses ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE sessions ALTER COLUMN started_at TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE sessions ALTER COLUMN last_heartbeat TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE sessions ALTER COLUMN ended_at TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE audit_log ALTER COLUMN timestamp TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE backup_history ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE login_attempts ALTER COLUMN first_attempt TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE login_attempts ALTER COLUMN last_attempt TYPE TIMESTAMP WITH TIME ZONE;
ALTER TABLE login_attempts ALTER COLUMN blocked_until TYPE TIMESTAMP WITH TIME ZONE;
```