FEAT: UI — supprimer un agent avec confirmation #90

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

Contexte

Le back-end expose DELETE /api/agents/{id} (DeleteAgentCommand : soft-delete + désassignation des caméras). Rien dans l'UI ne permet de supprimer un agent.

État actuel

  • HeimdallApiClient : pas de DeleteAgentAsync.
  • AllAgentsPage.razor / AgentDetail.razor / AgentsPage.razor : aucune action supprimer.

À faire

  1. Ajouter DeleteAgentAsync(Guid id) au client API (lit l'erreur { error }).
  2. AllAgentsPage.razor : bouton supprimer par ligne (icône 🗑, visible selon permission SiteWrite), dialog de confirmation (nom de l'agent, « les caméras seront désassignées »).
  3. AgentDetail.razor : bouton supprimer dans les actions (même confirmation).
  4. Journaliser l'audit Agent.Deleted.

Critères d'acceptation

  • Un superviseur peut supprimer un agent avec confirmation depuis la liste et le détail.
  • Les caméras de l'agent ne sont pas supprimées mais désassignées (comportement back-end actuel).

Fichiers concernés

  • src/Heimdall.Web/Services/HeimdallApiClient.cs
  • src/Heimdall.Web/Components/Pages/Admin/AllAgentsPage.razor
  • src/Heimdall.Web/Components/Pages/AgentDetail.razor
  • Tests bUnit existants (SitesPage pattern des icon-buttons : modifier=0, installer=1, supprimer=2)


Maquette

Maquette

Description

Bouton « Supprimer » par carte dans AllAgentsPage (visible selon permission Admin/Supervisor), + bouton supprimer dans AgentDetail (actions d'en-tête). Dialog de confirmation : nom


Maquette

Maquette

## Contexte Le back-end expose `DELETE /api/agents/{id}` (`DeleteAgentCommand` : soft-delete + désassignation des caméras). Rien dans l'UI ne permet de supprimer un agent. ## État actuel - `HeimdallApiClient` : **pas de `DeleteAgentAsync`**. - `AllAgentsPage.razor` / `AgentDetail.razor` / `AgentsPage.razor` : aucune action supprimer. ## À faire 1. Ajouter `DeleteAgentAsync(Guid id)` au client API (lit l'erreur `{ error }`). 2. `AllAgentsPage.razor` : bouton supprimer par ligne (icône 🗑, visible selon permission `SiteWrite`), **dialog de confirmation** (nom de l'agent, « les caméras seront désassignées »). 3. `AgentDetail.razor` : bouton supprimer dans les actions (même confirmation). 4. Journaliser l'audit `Agent.Deleted`. ## Critères d'acceptation - Un superviseur peut supprimer un agent avec confirmation depuis la liste et le détail. - Les caméras de l'agent ne sont pas supprimées mais désassignées (comportement back-end actuel). ## Fichiers concernés - `src/Heimdall.Web/Services/HeimdallApiClient.cs` - `src/Heimdall.Web/Components/Pages/Admin/AllAgentsPage.razor` - `src/Heimdall.Web/Components/Pages/AgentDetail.razor` - Tests bUnit existants (SitesPage pattern des icon-buttons : modifier=0, installer=1, supprimer=2) --- --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page agents](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c6fdaf09f4) ![Maquette](https://forgejo.tordais.cc/attachments/c73e48fd-1d58-41b6-8344-6f923a9ec7ea) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/96dda647-9dc6-4b5b-b861-f052acb6996a) - Statut : maquette appliquée dans Penpot ✓ ## Description Bouton « Supprimer » par carte dans AllAgentsPage (visible selon permission Admin/Supervisor), + bouton supprimer dans AgentDetail (actions d'en-tête). Dialog de confirmation : nom --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page agents](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c6fdaf09f4) ![Maquette](https://forgejo.tordais.cc/attachments/c73e48fd-1d58-41b6-8344-6f923a9ec7ea) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/96dda647-9dc6-4b5b-b861-f052acb6996a) - 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/c73e48fd-1d58-41b6-8344-6f923a9ec7ea - Détails / composants MudBlazor (README) : https://forgejo.tordais.cc/attachments/96dda647-9dc6-4b5b-b861-f052acb6996a - 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#90
No description provided.