# Nouveaux Endpoints et Spécifications Backend

Ce document recense les ajustements et points d'attention nécessaires sur le backend (FastAPI) pour garantir l'intégration fluide avec l'application Flutter et éviter toute dette technique quant au parsing JSON.

## 1. Ajustements sur les Modèles de Données (Pydantic / OpenAPI)

Les modèles qui représentent un "Signalement" ou "Dossier" n'exposent pas explicitement certains champs qui s'affichent ou sont attendus côtés UI.

*   **Ajout de `reference` (Dossier / Signalement)**
    *   *Type* : `str`
    *   *Description* : Un format lisible du type « INC-YYYY-0001 ». 
    *   *Pourquoi* : Le front-end a besoin d'afficher la référence unique du ticket aux utilisateurs, qui sert aussi d'identifiant compréhensible.
*   **Ajout de `gestionnaireNom` (Dossier)**
    *   *Type* : `str` (Optionnel)
    *   *Description* : Le nom du modérateur (ou admin) assigné au dossier.
    *   *Pourquoi* : Empêche le front-end de devoir faire une seconde requête API pour résoudre l'ID (`assignedTo`) en un nom affichable sur la carte du dossier dans le flux de gestion.

## 2. Décorateurs de Réponse Explicites dans FastAPI (`response_model`)

Lors de la dernière analyse de l'interface Swagger (`openapi.json`), certaines routes exposent une signature sans structure, notamment :

*   **Famille d'endpoints `/stats/*`**
    *   `/stats/dashboard/cases/recent`
    *   `/stats/dashboard/team`
    *   `/stats/dashboard/alerts`
    *   `/stats/dashboard/quick-actions` (etc.)
*   *Anomalie constatée* : L'attribut `schema` de l'UI Swagger OpenAPI est `{}` car aucun `response_model` n'est typé ou bien parce que la route renvoie un dictionnaire non formaté.
*   *Action requise* : Ajouter un `response_model` tel que `response_model=BaseResponse[List[CaseStatsOut]]` dans chacun des routeurs FastAPI pour que l'OpenAPI expose exactement le contrat des champs renvoyés au front-end sur le Dashboard et Dashboard Admin.

## 3. Format de Pagination Centralisé

Le contrat global en Flutter suppose une réponse **stricte** pour les ressources paginées, basée sur une enveloppe. Vous devez vous assurer que le Pydantic Model de pagination (retourné dans la clé `data` de la `BaseResponse`) aura **exclusivement** les clés suivantes :

```json
{
  "statusCode": 200,
  "message": "Signalements récupérés avec succès",
  "data": {
    "items": [...],     <-- NE PAS UTILISER 'content', utiliser 'items' impérativement
    "total": 42,        <-- NE PAS UTILISER 'totalElements', utiliser 'total'
    "page": 1,          <-- Attention : commence à 1 (et pas à 0 comme dans Spring Boot)
    "size": 10,
    "pages": 5          <-- NE PAS UTILISER 'totalPages', utiliser 'pages'
  },
  "timestamp": "2024-10-xx"
}
```

*Toute déviation de ces clés entraînera des retours de tableaux vides dans les vues BLoC du projet Flutter à cause de l'enveloppe de désérialisation interne (`ApiClient.parsePaginatedResponse`).*

## 4. Retrait Définitif de la variable "Pseudonyme"
La fonctionnalité `ANONYME_PARTIEL` et l'usage de la variable `pseudonyme` ayant été abandonnés, la logique a été purgée côté Frontend. Veuillez vous assurer que le modèle d'entrée FastAPI des dossiers et signalements (`CreateReportIn`) ne valide plus ce champ de manière obligatoire ou ne s'y réferre.