74 Zeilen
2.5 KiB
Markdown
74 Zeilen
2.5 KiB
Markdown
# Verbleibende Datenbankfeld-Inkonsistenzen
|
|
|
|
## Status der Bereinigung
|
|
|
|
### ✅ Vollständig behoben:
|
|
1. **sessions Tabelle**:
|
|
- `device_id` → `hardware_id` (alle Referenzen korrigiert)
|
|
- `active` → `is_active` (alle Referenzen korrigiert)
|
|
- `login_time` → `started_at` (alle Referenzen korrigiert)
|
|
- `logout_time` → `ended_at` (alle Referenzen korrigiert)
|
|
- `last_activity` → `last_heartbeat` (alle Referenzen korrigiert)
|
|
- `start_time` → `started_at` (korrigiert in models.py)
|
|
|
|
2. **licenses Tabelle**:
|
|
- `active` → `is_active` (alle Referenzen korrigiert)
|
|
|
|
### ⚠️ Strukturelle Probleme in device_registrations:
|
|
|
|
Die `device_registrations` Tabelle hat folgende Inkonsistenzen zwischen Schema und Code:
|
|
|
|
| Datenbankschema | Code erwartet | Problem |
|
|
|-----------------|---------------|---------|
|
|
| `license_id` (FK) | `license_key` | Code nutzt license_key direkt |
|
|
| `first_seen` | `registration_date` | Unterschiedliche Benennung |
|
|
| - | `device_type` | Spalte fehlt in DB |
|
|
| - | `license_key` | Spalte fehlt in DB |
|
|
|
|
### 🔧 Durchgeführte Anpassungen:
|
|
|
|
1. **API-Routes korrigiert**:
|
|
- JOINs eingefügt um license_key über license_id zu erhalten
|
|
- `first_seen as registration_date` Aliase hinzugefügt
|
|
- INSERT nutzt jetzt `license_id` statt `license_key`
|
|
|
|
2. **Export-Routes korrigiert**:
|
|
- Letzte `device_id` Referenzen zu `hardware_id` geändert
|
|
|
|
3. **Session-Routes korrigiert**:
|
|
- Statistik-Queries nutzen jetzt korrekte Feldnamen
|
|
|
|
### 📋 Noch zu erledigen:
|
|
|
|
1. **Datenbank-Migration ausführen**:
|
|
```sql
|
|
-- Sessions Kompatibilitäts-View
|
|
psql -f create_compatibility_views.sql
|
|
|
|
-- Device Registrations Fixes
|
|
psql -f fix_device_registrations.sql
|
|
```
|
|
|
|
2. **Fehlende Spalten hinzufügen** (optional):
|
|
```sql
|
|
ALTER TABLE device_registrations
|
|
ADD COLUMN device_type VARCHAR(50) DEFAULT 'unknown';
|
|
```
|
|
|
|
3. **Doppelte Spalten entfernen** (nach erfolgreichen Tests):
|
|
```sql
|
|
ALTER TABLE sessions
|
|
DROP COLUMN active,
|
|
DROP COLUMN login_time,
|
|
DROP COLUMN last_activity,
|
|
DROP COLUMN logout_time;
|
|
```
|
|
|
|
## Zusammenfassung
|
|
|
|
- **83 Inkonsistenzen** wurden automatisch behoben
|
|
- **8 zusätzliche manuelle Fixes** wurden durchgeführt
|
|
- **Alle kritischen Feldnamen** sind jetzt konsistent
|
|
- **device_registrations** benötigt noch strukturelle Anpassungen
|
|
|
|
Die Anwendung sollte jetzt funktionieren, da alle Code-Referenzen korrigiert wurden. Die Datenbank-Migrationen sind optional für langfristige Konsistenz. |