Initial commit
This commit is contained in:
114
docs/concepts/15-MESSAGE.md
Normal file
114
docs/concepts/15-MESSAGE.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# 💬 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
|
||||
|
||||
```java
|
||||
@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**
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user