feat(backend): consolidation finale Spec 001 LCB-FT + Flyway V1-V5
Migrations Flyway (consolidées) : - V1 : Schéma complet (69 tables, 1322 lignes) - V2 : Colonnes BaseEntity (cree_par, modifie_par) - V3 : Colonnes métier manquantes (adresses, alert_configuration) - V4 : Correction system_logs (renommage colonnes, ajout timestamp) - V5 : Nettoyage alert_configuration (suppression colonnes obsolètes) - Suppression V2-V6 obsolètes (fragmentés) Entités LCB-FT : - AlerteLcbFt : Alertes anti-blanchiment - AlertConfiguration : Configuration alertes - SystemAlert : Alertes système - SystemLog : Logs techniques (DÉJÀ COMMITÉE avec super.onCreate fix) Services LCB-FT (T015, T016) : - AlerteLcbFtService + Resource : Dashboard alertes admin - AlertMonitoringService : Surveillance transactions - SystemLoggingService : Logs centralisés - FileStorageService : Upload documents Repositories : - AlerteLcbFtRepository - AlertConfigurationRepository - SystemAlertRepository - SystemLogRepository Tests : - GlobalExceptionMapperTest : 17 erreurs corrigées (toResponse()) Spec 001 : 27/27 tâches (100%) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
118
src/main/java/dev/lions/unionflow/server/entity/SystemAlert.java
Normal file
118
src/main/java/dev/lions/unionflow/server/entity/SystemAlert.java
Normal file
@@ -0,0 +1,118 @@
|
||||
package dev.lions.unionflow.server.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* Entité pour les alertes système.
|
||||
* Enregistre les alertes de seuils dépassés, erreurs critiques, etc.
|
||||
*
|
||||
* @author UnionFlow Team
|
||||
* @version 1.0
|
||||
* @since 2026-03-15
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "system_alerts", indexes = {
|
||||
@Index(name = "idx_system_alert_timestamp", columnList = "timestamp"),
|
||||
@Index(name = "idx_system_alert_level", columnList = "level"),
|
||||
@Index(name = "idx_system_alert_acknowledged", columnList = "acknowledged"),
|
||||
@Index(name = "idx_system_alert_source", columnList = "source")
|
||||
})
|
||||
@Getter
|
||||
@Setter
|
||||
public class SystemAlert extends BaseEntity {
|
||||
|
||||
/**
|
||||
* Niveau de l'alerte (CRITICAL, ERROR, WARNING, INFO)
|
||||
*/
|
||||
@Column(name = "level", nullable = false, length = 20)
|
||||
private String level;
|
||||
|
||||
/**
|
||||
* Titre court de l'alerte
|
||||
*/
|
||||
@Column(name = "title", nullable = false, length = 255)
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* Message détaillé de l'alerte
|
||||
*/
|
||||
@Column(name = "message", nullable = false, length = 1000)
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* Date/heure de création de l'alerte
|
||||
*/
|
||||
@Column(name = "timestamp", nullable = false)
|
||||
private LocalDateTime timestamp;
|
||||
|
||||
/**
|
||||
* Alerte acquittée ou non
|
||||
*/
|
||||
@Column(name = "acknowledged", nullable = false)
|
||||
private Boolean acknowledged = false;
|
||||
|
||||
/**
|
||||
* Email de l'utilisateur ayant acquitté l'alerte
|
||||
*/
|
||||
@Column(name = "acknowledged_by", length = 255)
|
||||
private String acknowledgedBy;
|
||||
|
||||
/**
|
||||
* Date/heure d'acquittement
|
||||
*/
|
||||
@Column(name = "acknowledged_at")
|
||||
private LocalDateTime acknowledgedAt;
|
||||
|
||||
/**
|
||||
* Source de l'alerte (CPU, MEMORY, DISK, DATABASE, etc.)
|
||||
*/
|
||||
@Column(name = "source", length = 100)
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* Type d'alerte (THRESHOLD, INFO, ERROR, etc.)
|
||||
*/
|
||||
@Column(name = "alert_type", length = 50)
|
||||
private String alertType;
|
||||
|
||||
/**
|
||||
* Valeur actuelle ayant déclenché l'alerte
|
||||
*/
|
||||
@Column(name = "current_value")
|
||||
private Double currentValue;
|
||||
|
||||
/**
|
||||
* Valeur seuil dépassée
|
||||
*/
|
||||
@Column(name = "threshold_value")
|
||||
private Double thresholdValue;
|
||||
|
||||
/**
|
||||
* Unité de mesure (%, MB, GB, ms, etc.)
|
||||
*/
|
||||
@Column(name = "unit", length = 20)
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* Actions recommandées pour résoudre l'alerte
|
||||
*/
|
||||
@Column(name = "recommended_actions", columnDefinition = "TEXT")
|
||||
private String recommendedActions;
|
||||
|
||||
/**
|
||||
* Initialisation automatique du timestamp
|
||||
*/
|
||||
@PrePersist
|
||||
protected void onCreate() {
|
||||
if (timestamp == null) {
|
||||
timestamp = LocalDateTime.now();
|
||||
}
|
||||
if (acknowledged == null) {
|
||||
acknowledged = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user