feat: BackupService real pg_dump, OrganisationService region stats, SystemConfigService overrides

- BackupService: DB-persisted metadata (BackupRecord/BackupConfig entities + V16 Flyway migration),
  real pg_dump execution via ProcessBuilder, soft-delete on deleteBackup, pg_restore manual guidance
- OrganisationService: repartitionRegion now queries Adresse entities (was Map.of() stub)
- SystemConfigService: in-memory config overrides via AtomicReference (no DB dependency)
- SystemMetricsService: null-guard on MemoryMXBean in getSystemStatus() (fixes test NPE)
- Souscription workflow: SouscriptionService, SouscriptionResource, FormuleAbonnementRepository,
  V11 Flyway migration, admin REST clients
- Flyway V8-V15: notes membres, types référence, type orga constraint, seed roles,
  première connexion, Wave checkout URL, Wave telephone column length fix
- .gitignore: added uploads/ and .claude/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
dahoud
2026-04-04 16:14:30 +00:00
parent 9c66909eff
commit e00a9301d8
98 changed files with 5571 additions and 636 deletions

View File

@@ -38,7 +38,7 @@ public class AlerteLcbFtResource {
* Récupère les alertes LCB-FT avec filtres et pagination.
*/
@GET
@RolesAllowed({"ORG_ADMIN", "SUPER_ADMIN"})
@RolesAllowed({"ADMIN_ORGANISATION", "SUPER_ADMIN"})
@Operation(summary = "Liste des alertes LCB-FT", description = "Récupère les alertes avec filtrage et pagination")
public Response getAlertes(
@QueryParam("organisationId") String organisationId,
@@ -84,7 +84,7 @@ public class AlerteLcbFtResource {
*/
@GET
@Path("/{id}")
@RolesAllowed({"ORG_ADMIN", "SUPER_ADMIN"})
@RolesAllowed({"ADMIN_ORGANISATION", "SUPER_ADMIN"})
@Operation(summary = "Détails d'une alerte", description = "Récupère une alerte par son ID")
public Response getAlerteById(@PathParam("id") String id) {
AlerteLcbFt alerte = alerteLcbFtRepository.findById(UUID.fromString(id));
@@ -100,7 +100,7 @@ public class AlerteLcbFtResource {
*/
@POST
@Path("/{id}/traiter")
@RolesAllowed({"ORG_ADMIN", "SUPER_ADMIN"})
@RolesAllowed({"ADMIN_ORGANISATION", "SUPER_ADMIN"})
@Operation(summary = "Traiter une alerte", description = "Marque une alerte comme traitée avec un commentaire")
public Response traiterAlerte(
@PathParam("id") String id,
@@ -133,7 +133,7 @@ public class AlerteLcbFtResource {
*/
@GET
@Path("/stats/non-traitees")
@RolesAllowed({"ORG_ADMIN", "SUPER_ADMIN"})
@RolesAllowed({"ADMIN_ORGANISATION", "SUPER_ADMIN"})
@Operation(summary = "Statistiques alertes", description = "Nombre d'alertes non traitées")
public Response getStatsNonTraitees(@QueryParam("organisationId") String organisationId) {
UUID orgId = organisationId != null && !organisationId.isBlank() ? UUID.fromString(organisationId) : null;