# TODO Backend - Actions Requises ## Actions nécessaires côté backend pour compléter les fonctionnalités frontend ### 🔴 PRIORITÉ 1 - Fonctionnalité IP URL #### 1.1 Ajouter le champ `ip_url` aux schémas Pydantic **Fichier** : `backend/app/schemas/device.py` ```python # Dans DeviceBase class DeviceBase(BaseModel): # ... champs existants ... ip_url: Optional[str] = None # ⬅️ AJOUTER # Dans DeviceUpdate class DeviceUpdate(BaseModel): # ... champs existants ... ip_url: Optional[str] = None # ⬅️ AJOUTER ``` #### 1.2 Vérifier que l'API retourne `ip_url` **Fichier** : `backend/app/api/devices.py` S'assurer que les endpoints GET `/api/devices/{id}` et GET `/api/devices` retournent bien le champ `ip_url` dans les réponses JSON. --- ### 🟠 PRIORITÉ 2 - Synchroniser les schémas avec la base de données #### 2.1 Ajouter les champs manquants à `HardwareSnapshotResponse` **Fichier** : `backend/app/schemas/hardware.py` ```python class HardwareSnapshotResponse(BaseModel): # ... champs existants ... # Migration 016 ram_max_capacity_mb: Optional[int] = None # ⬅️ AJOUTER # Migration 017 is_proxmox_host: Optional[bool] = None # ⬅️ AJOUTER is_proxmox_guest: Optional[bool] = None # ⬅️ AJOUTER proxmox_version: Optional[str] = None # ⬅️ AJOUTER # Migration 019 audio_hardware_json: Optional[str] = None # ⬅️ AJOUTER audio_software_json: Optional[str] = None # ⬅️ AJOUTER ``` #### 2.2 Vérifier que l'API retourne ces champs S'assurer que `/api/devices/{id}` inclut bien `last_hardware_snapshot` avec tous ces champs. --- ### 🟡 PRIORITÉ 3 - Amélioration du parsing dmidecode (Optionnel) #### 3.1 Enrichir le champ `raw_info_json` avec des champs structurés **Contexte** : Le frontend parse actuellement `raw_info_json.dmidecode` pour extraire des infos multi-CPU, signature, socket, etc. **Suggestion** : Ajouter des champs dédiés dans `HardwareSnapshot` pour éviter le parsing côté frontend : ```python class HardwareSnapshot(Base): # ... champs existants ... # CPU avancé cpu_signature: Optional[str] = None # Ex: "Family 25, Model 33, Stepping 2" cpu_socket: Optional[str] = None # Ex: "AM4" cpu_voltage_v: Optional[float] = None # Ex: 1.1 cpu_current_freq_mhz: Optional[int] = None # Fréquence actuelle # Multi-CPU cpu_sockets_count: Optional[int] = None # Nombre de sockets physiques cpu_sockets_json: Optional[str] = None # JSON array des sockets ``` Puis parser côté backend (bench.sh ou benchmark.py) et envoyer structuré. --- ### ✅ Actions déjà complétées (DB) - ✅ Migration 018 : `devices.ip_url` existe en DB - ✅ Migration 016 : `hardware_snapshots.ram_max_capacity_mb` existe - ✅ Migration 017 : `hardware_snapshots.is_proxmox_host`, `is_proxmox_guest`, `proxmox_version` existent - ✅ Migration 019 : `hardware_snapshots.audio_hardware_json`, `audio_software_json` existent **Il ne reste plus qu'à exposer ces champs via l'API** en mettant à jour les schémas Pydantic. --- ### 🧪 Tests recommandés après modifications 1. **Test GET `/api/devices/{id}`** : ```bash curl http://localhost:8007/api/devices/1 | jq '.ip_url' curl http://localhost:8007/api/devices/1 | jq '.last_hardware_snapshot.ram_max_capacity_mb' curl http://localhost:8007/api/devices/1 | jq '.last_hardware_snapshot.is_proxmox_host' curl http://localhost:8007/api/devices/1 | jq '.last_hardware_snapshot.audio_hardware_json' ``` 2. **Test PUT `/api/devices/{id}`** avec `ip_url` : ```bash curl -X PUT http://localhost:8007/api/devices/1 \ -H "Content-Type: application/json" \ -d '{"ip_url": "http://10.0.0.50:8080"}' ``` 3. **Vérifier en DB** : ```bash sqlite3 backend/data/data.db "SELECT ip_url FROM devices WHERE id=1;" ``` --- ### 📝 Notes - Le frontend est **prêt** pour ces fonctionnalités et appelle déjà les endpoints avec ces champs. - Une fois les schémas backend mis à jour, tout devrait fonctionner sans modification frontend supplémentaire. - Si le backend ne retourne pas ces champs, le frontend affichera simplement "N/A" sans erreur (gestion défensive). --- **Dernière mise à jour** : 2026-01-11