BUG: Ajout de caméra — remonter les erreurs détaillées du back-end dans l'UI #93

Closed
opened 2026-08-12 10:30:07 +02:00 by nonobis · 1 comment
Owner

Contexte

L'ajout de caméra échoue parfois sans explication : l'UI affiche « Erreur lors de la création » ou OperationFailed() générique alors que le back-end renvoie une erreur précise.

État actuel

  • HeimdallApiClient.CreateCameraAsync : if (!response.IsSuccessStatusCode) return null; → le message d'erreur serveur est avalé (constat code, 12/08/2026).
  • CamerasPage.razor (CreateCamera) : _dialogError = "Erreur lors de la création" ou UiErrors.OperationFailed() — message générique, aucune trace de la cause (URL RTSP invalide, validation, conflit...).

À faire

  1. Faire lire au client API le corps d'erreur ({ error } / ProblemDetails) et le propager : changer la signature en CreateCameraResult (succès + caméra OU échec + message) ou lever une exception dédiée avec le message.
  2. CamerasPage.razor : afficher le message réel du back-end dans le dialog (_dialogError), et loguer la cause côté serveur si absente.
  3. Vérifier que CamerasController.Create renvoie bien des messages exploitables (validation FluentValidation, RTSP mal formé, site inexistant).
  4. Même traitement pour ConfirmDiscoveryAsync et CreateSiteAsync si le même pattern null avale l'erreur.

Critères d'acceptation

  • Un échec d'ajout de caméra affiche la raison exacte (ex. « L'URL RTSP doit commencer par rtsp:// »).
  • Aucune erreur silencieuse : toujours un message dans le dialog.

Fichiers concernés

  • src/Heimdall.Web/Services/HeimdallApiClient.cs
  • src/Heimdall.Web/Components/Pages/CamerasPage.razor
  • src/Heimdall.Web/Controllers/CamerasController.cs


Maquette

Maquette

Description

Le dialog « Ajouter une caméra » affiche l'erreur réelle du back-end : alerte en haut du dialog (message détaillé + adresse + port) ET erreur inl


Maquette

Maquette

## Contexte L'ajout de caméra échoue parfois sans explication : l'UI affiche « Erreur lors de la création » ou `OperationFailed()` générique alors que le back-end renvoie une erreur précise. ## État actuel - `HeimdallApiClient.CreateCameraAsync` : `if (!response.IsSuccessStatusCode) return null;` → **le message d'erreur serveur est avalé** (constat code, 12/08/2026). - `CamerasPage.razor` (CreateCamera) : `_dialogError = "Erreur lors de la création"` ou `UiErrors.OperationFailed()` — message générique, aucune trace de la cause (URL RTSP invalide, validation, conflit...). ## À faire 1. Faire lire au client API le corps d'erreur (`{ error }` / ProblemDetails) et le propager : changer la signature en `CreateCameraResult` (succès + caméra OU échec + message) ou lever une exception dédiée avec le message. 2. `CamerasPage.razor` : afficher le message réel du back-end dans le dialog (`_dialogError`), et loguer la cause côté serveur si absente. 3. Vérifier que `CamerasController.Create` renvoie bien des messages exploitables (validation FluentValidation, RTSP mal formé, site inexistant). 4. Même traitement pour `ConfirmDiscoveryAsync` et `CreateSiteAsync` si le même pattern null avale l'erreur. ## Critères d'acceptation - Un échec d'ajout de caméra affiche la raison exacte (ex. « L'URL RTSP doit commencer par rtsp:// »). - Aucune erreur silencieuse : toujours un message dans le dialog. ## Fichiers concernés - `src/Heimdall.Web/Services/HeimdallApiClient.cs` - `src/Heimdall.Web/Components/Pages/CamerasPage.razor` - `src/Heimdall.Web/Controllers/CamerasController.cs` --- --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page cameras](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c8ea061142) ![Maquette](https://forgejo.tordais.cc/attachments/df5b047f-10a9-436d-a7bc-7d4c90ff0be6) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/4fad1f01-f6dd-4d93-aef7-0d4592c51de1) - Statut : maquette appliquée dans Penpot ✓ ## Description Le dialog « Ajouter une caméra » affiche l'erreur réelle du back-end : alerte en haut du dialog (message détaillé + adresse + port) ET erreur inl --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page cameras](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c8ea061142) ![Maquette](https://forgejo.tordais.cc/attachments/df5b047f-10a9-436d-a7bc-7d4c90ff0be6) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/4fad1f01-f6dd-4d93-aef7-0d4592c51de1) - Statut : maquette appliquée dans Penpot ✓
Author
Owner

Maquette the-designer intégrée (14/08/2026) :

Maquette the-designer intégrée (14/08/2026) : - Aperçu (PNG) : https://forgejo.tordais.cc/attachments/df5b047f-10a9-436d-a7bc-7d4c90ff0be6 - Détails / composants MudBlazor (README) : https://forgejo.tordais.cc/attachments/4fad1f01-f6dd-4d93-aef7-0d4592c51de1 - Statut : application Penpot différée (plugin MCP non connecté) — maquette locale consultable
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#93
No description provided.