Files
btpxpress-backend/docs/concepts/16-NOTIFICATION.md
2025-10-01 01:37:34 +00:00

2.3 KiB

🔔 CONCEPT: NOTIFICATION

📌 Vue d'ensemble

Le concept NOTIFICATION gère les notifications système pour alerter les utilisateurs d'événements importants.

Importance: (Concept utile)


🗂️ Fichiers concernés

Entités JPA

Fichier Description
Notification.java Entité principale notification
TypeNotification.java Enum types
PrioriteNotification.java Enum priorités

Services

Fichier Description
NotificationService.java Service métier notifications

Resources

Fichier Description
NotificationResource.java API REST notifications

📊 Modèle de données

@Entity
@Table(name = "notifications")
public class Notification extends PanacheEntityBase {
  @Id
  @GeneratedValue(strategy = GenerationType.UUID)
  private UUID id;
  
  @ManyToOne
  @JoinColumn(name = "user_id", nullable = false)
  private User user;
  
  @Column(name = "titre", nullable = false)
  private String titre;
  
  @Column(name = "message", length = 1000)
  private String message;
  
  @Enumerated(EnumType.STRING)
  @Column(name = "type")
  private TypeNotification type;
  
  @Column(name = "lue")
  private Boolean lue = false;
  
  @Column(name = "date_creation")
  private LocalDateTime dateCreation;
  
  @Column(name = "date_lecture")
  private LocalDateTime dateLecture;
}

🔌 API REST

Endpoints

Méthode Endpoint Description
GET /api/v1/notifications Liste notifications
GET /api/v1/notifications/non-lues Non lues
PUT /api/v1/notifications/{id}/lire Marquer comme lue
PUT /api/v1/notifications/tout-lire Tout marquer comme lu
DELETE /api/v1/notifications/{id} Supprimer

💻 Exemples

Notifications non lues

curl -X GET http://localhost:8080/api/v1/notifications/non-lues

Réponse:

[
  {
    "id": "uuid",
    "titre": "Stock faible",
    "message": "Le stock de ciment est en dessous du seuil minimum",
    "type": "ALERTE",
    "lue": false,
    "dateCreation": "2025-09-30T10:00:00"
  }
]

Dernière mise à jour: 2025-09-30
Version: 1.0