Initial commit

This commit is contained in:
dahoud
2025-10-01 01:37:34 +00:00
commit f2bb633142
310 changed files with 86051 additions and 0 deletions

View File

@@ -0,0 +1,222 @@
# 🔧 CONCEPT: MAINTENANCE
## 📌 Vue d'ensemble
Le concept **MAINTENANCE** gère la maintenance préventive et corrective du matériel BTP avec planification et historique.
**Importance**: ⭐⭐⭐ (Concept important)
---
## 🗂️ Fichiers concernés
### **Entités JPA**
| Fichier | Description |
|---------|-------------|
| `MaintenanceMateriel.java` | Entité principale maintenance |
| `StatutMaintenance.java` | Enum (PLANIFIEE, EN_COURS, TERMINEE, ANNULEE, REPORTEE) |
| `TypeMaintenance.java` | Enum (PREVENTIVE, CORRECTIVE, CURATIVE, PREDICTIVE) |
### **Services**
| Fichier | Description |
|---------|-------------|
| `MaintenanceService.java` | Service métier maintenance |
### **Resources**
| Fichier | Description |
|---------|-------------|
| `MaintenanceResource.java` | API REST maintenance |
---
## 📊 Modèle de données
```java
@Entity
@Table(name = "maintenances_materiel")
public class MaintenanceMateriel extends PanacheEntityBase {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;
@ManyToOne
@JoinColumn(name = "materiel_id", nullable = false)
private Materiel materiel;
@Enumerated(EnumType.STRING)
@Column(name = "type", nullable = false)
private TypeMaintenance type;
@Enumerated(EnumType.STRING)
@Column(name = "statut", nullable = false)
private StatutMaintenance statut = StatutMaintenance.PLANIFIEE;
@Column(name = "date_prevue", nullable = false)
private LocalDate datePrevue;
@Column(name = "date_realisee")
private LocalDate dateRealisee;
@Column(name = "description", length = 1000)
private String description;
@Column(name = "cout", precision = 10, scale = 2)
private BigDecimal cout;
@Column(name = "technicien", length = 100)
private String technicien;
@Column(name = "observations", length = 2000)
private String observations;
}
```
### **Enum TypeMaintenance**
```java
public enum TypeMaintenance {
PREVENTIVE, // Maintenance préventive planifiée
CORRECTIVE, // Correction d'un dysfonctionnement
CURATIVE, // Réparation d'une panne
PREDICTIVE // Maintenance prédictive (IoT, capteurs)
}
```
### **Enum StatutMaintenance**
```java
public enum StatutMaintenance {
PLANIFIEE, // Planifiée
EN_COURS, // En cours de réalisation
TERMINEE, // Terminée avec succès
ANNULEE, // Annulée
REPORTEE // Reportée à une date ultérieure
}
```
---
## 🔌 API REST
### **Endpoints**
| Méthode | Endpoint | Description |
|---------|----------|-------------|
| GET | `/api/v1/maintenances` | Liste maintenances |
| GET | `/api/v1/maintenances/{id}` | Détails |
| POST | `/api/v1/maintenances` | Créer |
| PUT | `/api/v1/maintenances/{id}` | Modifier |
| PUT | `/api/v1/maintenances/{id}/terminer` | Terminer |
| GET | `/api/v1/maintenances/materiel/{id}` | Maintenances d'un matériel |
| GET | `/api/v1/maintenances/planifiees` | Maintenances planifiées |
| GET | `/api/v1/maintenances/stats` | Statistiques |
---
## 💻 Exemples
### **Créer une maintenance préventive**
```bash
curl -X POST http://localhost:8080/api/v1/maintenances \
-H "Content-Type: application/json" \
-d '{
"materielId": "materiel-uuid",
"type": "PREVENTIVE",
"datePrevue": "2025-11-01",
"description": "Révision annuelle - Vidange et contrôle général",
"technicien": "Service Maintenance"
}'
```
### **Terminer une maintenance**
```bash
curl -X PUT http://localhost:8080/api/v1/maintenances/{id}/terminer \
-H "Content-Type: application/json" \
-d '{
"dateRealisee": "2025-11-01",
"cout": 250.00,
"observations": "Révision effectuée. Remplacement filtre à huile. Matériel en bon état."
}'
```
### **Historique maintenance d'un matériel**
```bash
curl -X GET http://localhost:8080/api/v1/maintenances/materiel/{materielId}
```
**Réponse**:
```json
[
{
"id": "uuid",
"type": "PREVENTIVE",
"statut": "TERMINEE",
"datePrevue": "2025-11-01",
"dateRealisee": "2025-11-01",
"description": "Révision annuelle",
"cout": 250.00,
"technicien": "Service Maintenance"
},
{
"id": "uuid2",
"type": "CORRECTIVE",
"statut": "TERMINEE",
"datePrevue": "2025-08-15",
"dateRealisee": "2025-08-16",
"description": "Réparation système hydraulique",
"cout": 450.00
}
]
```
### **Maintenances planifiées**
```bash
curl -X GET http://localhost:8080/api/v1/maintenances/planifiees
```
---
## 🔧 Services métier
**MaintenanceService - Méthodes**:
- `create(MaintenanceDTO)` - Créer maintenance
- `terminer(UUID id, MaintenanceTermineeDTO)` - Terminer
- `reporter(UUID id, LocalDate nouvelleDate)` - Reporter
- `findByMateriel(UUID materielId)` - Historique matériel
- `findPlanifiees()` - Maintenances planifiées
- `findEnRetard()` - Maintenances en retard
- `planifierPreventive(UUID materielId)` - Planifier préventive
---
## 📈 Relations
- **MATERIEL** ⬅️ Une maintenance concerne un matériel
- **EMPLOYE** ⬅️ Un technicien (employé) peut réaliser la maintenance
---
## ✅ Validations
- ✅ Matériel obligatoire
- ✅ Type obligatoire
- ✅ Date prévue obligatoire
- ✅ Coût positif
- ✅ Date réalisée >= date prévue
---
## 📚 Références
- [Concept MATERIEL](./03-MATERIEL.md)
- [Concept EMPLOYE](./11-EMPLOYE.md)
---
**Dernière mise à jour**: 2025-09-30
**Version**: 1.0