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

2.6 KiB

💬 CONCEPT: MESSAGE

📌 Vue d'ensemble

Le concept MESSAGE gère la messagerie interne entre utilisateurs avec catégorisation et priorités.

Importance: (Concept utile)


🗂️ Fichiers concernés

Entités JPA

Fichier Description
Message.java Entité principale message
TypeMessage.java Enum types (NORMAL, CHANTIER, MAINTENANCE, URGENT, etc.)
PrioriteMessage.java Enum priorités

Services

Fichier Description
MessageService.java Service métier messages

Resources

Fichier Description
MessageResource.java API REST messages

📊 Modèle de données

@Entity
@Table(name = "messages")
public class Message extends PanacheEntityBase {
  @Id
  @GeneratedValue(strategy = GenerationType.UUID)
  private UUID id;
  
  @ManyToOne
  @JoinColumn(name = "expediteur_id", nullable = false)
  private User expediteur;
  
  @ManyToOne
  @JoinColumn(name = "destinataire_id", nullable = false)
  private User destinataire;
  
  @Column(name = "sujet", nullable = false)
  private String sujet;
  
  @Column(name = "contenu", length = 5000, nullable = false)
  private String contenu;
  
  @Enumerated(EnumType.STRING)
  @Column(name = "type")
  private TypeMessage type;
  
  @Enumerated(EnumType.STRING)
  @Column(name = "priorite")
  private PrioriteMessage priorite;
  
  @Column(name = "lu")
  private Boolean lu = false;
  
  @Column(name = "date_envoi")
  private LocalDateTime dateEnvoi;
  
  @Column(name = "date_lecture")
  private LocalDateTime dateLecture;
}

🔌 API REST

Endpoints

Méthode Endpoint Description
GET /api/v1/messages Liste messages
GET /api/v1/messages/{id} Détails
POST /api/v1/messages Envoyer
PUT /api/v1/messages/{id}/lire Marquer comme lu
DELETE /api/v1/messages/{id} Supprimer
GET /api/v1/messages/recus Messages reçus
GET /api/v1/messages/envoyes Messages envoyés
GET /api/v1/messages/non-lus Messages non lus

💻 Exemples

Envoyer un message

curl -X POST http://localhost:8080/api/v1/messages \
  -H "Content-Type: application/json" \
  -d '{
    "destinataireId": "user-uuid",
    "sujet": "Livraison matériel",
    "contenu": "La livraison de ciment est prévue demain à 9h",
    "type": "CHANTIER",
    "priorite": "NORMALE"
  }'

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