fix(audit): PorteeAudit.GLOBAL → PLATEFORME + archiver docs obsolètes
- AuditService.logMembreDesactive : PorteeAudit.GLOBAL n'existe pas dans l'enum, remplacé par PLATEFORME (même sémantique — audit admin plateforme) - docs/archive/ : archivé AUDIT_MIGRATIONS_PRECISE, CONSOLIDATION_MIGRATIONS_FINALE, NETTOYAGE_MIGRATIONS_RAPPORT, TESTS_CONNUS_EN_ECHEC, JACOCO_TESTS_MANQUANTS - docs/FLYWAY_MIGRATIONS_GUIDE.md : consolidé depuis AUDIT_MIGRATIONS.md
This commit is contained in:
135
docs/FLYWAY_MIGRATIONS_GUIDE.md
Normal file
135
docs/FLYWAY_MIGRATIONS_GUIDE.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# Rapport d'Audit - Migrations Flyway vs Entités JPA
|
||||
Date: 2026-03-16 01:18:05
|
||||
|
||||
## Résumé
|
||||
- **Entités JPA**: 71
|
||||
- **Tables dans migrations**: 76
|
||||
|
||||
---
|
||||
|
||||
## 1. Entités JPA et leurs tables
|
||||
|
||||
| Entité | Table attendue | Existe? | Migration(s) |
|
||||
|--------|----------------|---------|--------------|
|
||||
| Adresse | `adresses` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| CampagneAgricole | `campagnes_agricoles` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| AlertConfiguration | `alert_configuration` | ✅ | V7__Monitoring_System.sql |
|
||||
| AlerteLcbFt | `alertes_lcb_ft` | ✅ | V9__Create_Alertes_LCB_FT.sql |
|
||||
| ApproverAction | `approver_actions` | ✅ | V6__Create_Finance_Workflow_Tables.sql |
|
||||
| AuditLog | `audit_logs` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| AyantDroit | `ayants_droit` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **BaseEntity** | `base_entity` | **❌ MANQUANT** | - |
|
||||
| Budget | `budgets` | ✅ | V6__Create_Finance_Workflow_Tables.sql |
|
||||
| BudgetLine | `budget_lines` | ✅ | V6__Create_Finance_Workflow_Tables.sql |
|
||||
| CampagneCollecte | `campagnes_collecte` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| ContributionCollecte | `contributions_collecte` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| **CompteComptable** | `compte_comptable` | **❌ MANQUANT** | - |
|
||||
| CompteWave | `comptes_wave` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Configuration** | `configuration` | **❌ MANQUANT** | - |
|
||||
| **ConfigurationWave** | `configuration_wave` | **❌ MANQUANT** | - |
|
||||
| Cotisation | `cotisations` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| DonReligieux | `dons_religieux` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| **DemandeAdhesion** | `demande_adhesion` | **❌ MANQUANT** | - |
|
||||
| DemandeAide | `demandes_aide` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Document** | `document` | **❌ MANQUANT** | - |
|
||||
| **EcritureComptable** | `ecriture_comptable` | **❌ MANQUANT** | - |
|
||||
| Evenement | `evenements` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Favori** | `favori` | **❌ MANQUANT** | - |
|
||||
| **FormuleAbonnement** | `formule_abonnement` | **❌ MANQUANT** | - |
|
||||
| EchelonOrganigramme | `echelons_organigramme` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| InscriptionEvenement | `inscriptions_evenement` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **IntentionPaiement** | `intention_paiement` | **❌ MANQUANT** | - |
|
||||
| **JournalComptable** | `journal_comptable` | **❌ MANQUANT** | - |
|
||||
| **LigneEcriture** | `ligne_ecriture` | **❌ MANQUANT** | - |
|
||||
| **AuditEntityListener** | `audit_entity_listener` | **❌ MANQUANT** | - |
|
||||
| **Membre** | `utilisateurs` | **❌ MANQUANT** | - |
|
||||
| **MembreOrganisation** | `membre_organisation` | **❌ MANQUANT** | - |
|
||||
| **MembreRole** | `membre_role` | **❌ MANQUANT** | - |
|
||||
| MembreSuivi | `membre_suivi` | ✅ | V5__Create_Membre_Suivi.sql |
|
||||
| **ModuleDisponible** | `module_disponible` | **❌ MANQUANT** | - |
|
||||
| ModuleOrganisationActif | `modules_organisation_actifs` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| DemandeCredit | `demandes_credit` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| EcheanceCredit | `echeances_credit` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| GarantieDemande | `garanties_demande` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| CompteEpargne | `comptes_epargne` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| TransactionEpargne | `transactions_epargne` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| Notification | `notifications` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| ProjetOng | `projets_ong` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| Organisation | `organisations` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| Paiement | `paiements` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| PaiementObjet | `paiements_objets` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| ParametresCotisationOrganisation | `parametres_cotisation_organisation` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| ParametresLcbFt | `parametres_lcb_ft` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Permission** | `permission` | **❌ MANQUANT** | - |
|
||||
| PieceJointe | `pieces_jointes` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| AgrementProfessionnel | `agrements_professionnels` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| Role | `roles` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **RolePermission** | `role_permission` | **❌ MANQUANT** | - |
|
||||
| **SouscriptionOrganisation** | `souscription_organisation` | **❌ MANQUANT** | - |
|
||||
| **Suggestion** | `suggestion` | **❌ MANQUANT** | - |
|
||||
| **SuggestionVote** | `suggestion_vote` | **❌ MANQUANT** | - |
|
||||
| SystemAlert | `system_alerts` | ✅ | V7__Monitoring_System.sql |
|
||||
| SystemLog | `system_logs` | ✅ | V7__Monitoring_System.sql |
|
||||
| **TemplateNotification** | `template_notification` | **❌ MANQUANT** | - |
|
||||
| **Ticket** | `ticket` | **❌ MANQUANT** | - |
|
||||
| Tontine | `tontines` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| TourTontine | `tours_tontine` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| TransactionApproval | `transaction_approvals` | ✅ | V6__Create_Finance_Workflow_Tables.sql |
|
||||
| **TransactionWave** | `transaction_wave` | **❌ MANQUANT** | - |
|
||||
| TypeReference | `types_reference` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| **ValidationEtapeDemande** | `validation_etape_demande` | **❌ MANQUANT** | - |
|
||||
| CampagneVote | `campagnes_vote` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| Candidat | `candidats` | ✅ | V2__Entity_Schema_Alignment.sql |
|
||||
| WebhookWave | `webhooks_wave` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
| WorkflowValidationConfig | `workflow_validation_config` | ✅ | V1__UnionFlow_Complete_Schema.sql |
|
||||
|
||||
**Résultat**: 45/71 entités ont une table, 26 manquantes.
|
||||
|
||||
---
|
||||
|
||||
## 2. Tables orphelines (sans entité)
|
||||
|
||||
| Table | Migration(s) |
|
||||
|-------|--------------|
|
||||
| `adhesions` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `comptes_comptables` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `configurations` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `configurations_wave` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `demandes_adhesion` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `documents` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `ecritures_comptables` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `favoris` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `formules_abonnement` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `IF` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `intentions_paiement` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `journaux_comptables` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `lignes_ecriture` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `membres` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `membres_organisations` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `membres_roles` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `modules_disponibles` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `paiements_adhesions` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `paiements_aides` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `paiements_cotisations` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `paiements_evenements` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `permissions` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `roles_permissions` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `souscriptions_organisation` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `suggestion_votes` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `suggestions` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `templates_notifications` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `tickets` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `transactions_wave` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `uf_type_organisation` | V1__UnionFlow_Complete_Schema.sql |
|
||||
| `validation_etapes_demande` | V1__UnionFlow_Complete_Schema.sql |
|
||||
|
||||
---
|
||||
|
||||
## 3. Duplications
|
||||
|
||||
| Table | Nombre | Migration(s) |
|
||||
|-------|--------|--------------|
|
||||
|
||||
---
|
||||
|
||||
*Généré par audit_migrations.sh - Lions Dev*
|
||||
82
docs/archive/AUDIT_MIGRATIONS_PRECISE.md
Normal file
82
docs/archive/AUDIT_MIGRATIONS_PRECISE.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Audit PRÉCIS - Migrations Flyway vs Entités JPA
|
||||
Date: 2026-03-16 01:21:41
|
||||
Généré avec extraction réelle des annotations @Table
|
||||
|
||||
## Tables trouvées dans les entités
|
||||
|
||||
| Entité | Table (@Table ou défaut) | Fichier | Dans migrations? |
|
||||
|--------|--------------------------|---------|------------------|
|
||||
| Adresse | `adresses` | Adresse.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| CampagneAgricole | `campagnes_agricoles` | CampagneAgricole.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| AlertConfiguration | `alert_configuration` | AlertConfiguration.java | ✅ V7__Monitoring_System.sql |
|
||||
| AlerteLcbFt | `alertes_lcb_ft` | AlerteLcbFt.java | ✅ V9__Create_Alertes_LCB_FT.sql |
|
||||
| ApproverAction | `approver_actions` | ApproverAction.java | ✅ V6__Create_Finance_Workflow_Tables.sql |
|
||||
| AuditLog | `audit_logs` | AuditLog.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| AyantDroit | `ayants_droit` | AyantDroit.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| Budget | `budgets` | Budget.java | ✅ V6__Create_Finance_Workflow_Tables.sql |
|
||||
| BudgetLine | `budget_lines` | BudgetLine.java | ✅ V6__Create_Finance_Workflow_Tables.sql |
|
||||
| CampagneCollecte | `campagnes_collecte` | CampagneCollecte.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| ContributionCollecte | `contributions_collecte` | ContributionCollecte.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| **CompteComptable** | `compte_comptable` | CompteComptable.java | **❌ MANQUANT** |
|
||||
| CompteWave | `comptes_wave` | CompteWave.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Configuration** | `configuration` | Configuration.java | **❌ MANQUANT** |
|
||||
| **ConfigurationWave** | `configuration_wave` | ConfigurationWave.java | **❌ MANQUANT** |
|
||||
| Cotisation | `cotisations` | Cotisation.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| DonReligieux | `dons_religieux` | DonReligieux.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| **DemandeAdhesion** | `demande_adhesion` | DemandeAdhesion.java | **❌ MANQUANT** |
|
||||
| DemandeAide | `demandes_aide` | DemandeAide.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Document** | `document` | Document.java | **❌ MANQUANT** |
|
||||
| **EcritureComptable** | `ecriture_comptable` | EcritureComptable.java | **❌ MANQUANT** |
|
||||
| Evenement | `evenements` | Evenement.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Favori** | `favori` | Favori.java | **❌ MANQUANT** |
|
||||
| **FormuleAbonnement** | `formule_abonnement` | FormuleAbonnement.java | **❌ MANQUANT** |
|
||||
| EchelonOrganigramme | `echelons_organigramme` | EchelonOrganigramme.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| InscriptionEvenement | `inscriptions_evenement` | InscriptionEvenement.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **IntentionPaiement** | `intention_paiement` | IntentionPaiement.java | **❌ MANQUANT** |
|
||||
| **JournalComptable** | `journal_comptable` | JournalComptable.java | **❌ MANQUANT** |
|
||||
| **LigneEcriture** | `ligne_ecriture` | LigneEcriture.java | **❌ MANQUANT** |
|
||||
| **Membre** | `utilisateurs` | Membre.java | **❌ MANQUANT** |
|
||||
| **MembreOrganisation** | `membre_organisation` | MembreOrganisation.java | **❌ MANQUANT** |
|
||||
| **MembreRole** | `membre_role` | MembreRole.java | **❌ MANQUANT** |
|
||||
| MembreSuivi | `membre_suivi` | MembreSuivi.java | ✅ V5__Create_Membre_Suivi.sql |
|
||||
| **ModuleDisponible** | `module_disponible` | ModuleDisponible.java | **❌ MANQUANT** |
|
||||
| ModuleOrganisationActif | `modules_organisation_actifs` | ModuleOrganisationActif.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| DemandeCredit | `demandes_credit` | DemandeCredit.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| EcheanceCredit | `echeances_credit` | EcheanceCredit.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| GarantieDemande | `garanties_demande` | GarantieDemande.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| CompteEpargne | `comptes_epargne` | CompteEpargne.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| TransactionEpargne | `transactions_epargne` | TransactionEpargne.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| Notification | `notifications` | Notification.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| ProjetOng | `projets_ong` | ProjetOng.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| Organisation | `organisations` | Organisation.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| Paiement | `paiements` | Paiement.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| PaiementObjet | `paiements_objets` | PaiementObjet.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| ParametresCotisationOrganisation | `parametres_cotisation_organisation` | ParametresCotisationOrganisation.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| ParametresLcbFt | `parametres_lcb_ft` | ParametresLcbFt.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **Permission** | `permission` | Permission.java | **❌ MANQUANT** |
|
||||
| PieceJointe | `pieces_jointes` | PieceJointe.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| AgrementProfessionnel | `agrements_professionnels` | AgrementProfessionnel.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| Role | `roles` | Role.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **RolePermission** | `role_permission` | RolePermission.java | **❌ MANQUANT** |
|
||||
| **SouscriptionOrganisation** | `souscription_organisation` | SouscriptionOrganisation.java | **❌ MANQUANT** |
|
||||
| **Suggestion** | `suggestion` | Suggestion.java | **❌ MANQUANT** |
|
||||
| **SuggestionVote** | `suggestion_vote` | SuggestionVote.java | **❌ MANQUANT** |
|
||||
| SystemAlert | `system_alerts` | SystemAlert.java | ✅ V7__Monitoring_System.sql |
|
||||
| SystemLog | `system_logs` | SystemLog.java | ✅ V7__Monitoring_System.sql |
|
||||
| **TemplateNotification** | `template_notification` | TemplateNotification.java | **❌ MANQUANT** |
|
||||
| **Ticket** | `ticket` | Ticket.java | **❌ MANQUANT** |
|
||||
| Tontine | `tontines` | Tontine.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| TourTontine | `tours_tontine` | TourTontine.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| TransactionApproval | `transaction_approvals` | TransactionApproval.java | ✅ V6__Create_Finance_Workflow_Tables.sql |
|
||||
| **TransactionWave** | `transaction_wave` | TransactionWave.java | **❌ MANQUANT** |
|
||||
| TypeReference | `types_reference` | TypeReference.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| **ValidationEtapeDemande** | `validation_etape_demande` | ValidationEtapeDemande.java | **❌ MANQUANT** |
|
||||
| CampagneVote | `campagnes_vote` | CampagneVote.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| Candidat | `candidats` | Candidat.java | ✅ V2__Entity_Schema_Alignment.sql |
|
||||
| WebhookWave | `webhooks_wave` | WebhookWave.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
| WorkflowValidationConfig | `workflow_validation_config` | WorkflowValidationConfig.java | ✅ V1__UnionFlow_Complete_Schema.sql |
|
||||
|
||||
**Résultat**: 45/69 entités ont leur table, 24 manquantes.
|
||||
|
||||
---
|
||||
|
||||
280
docs/archive/CONSOLIDATION_MIGRATIONS_FINALE.md
Normal file
280
docs/archive/CONSOLIDATION_MIGRATIONS_FINALE.md
Normal file
@@ -0,0 +1,280 @@
|
||||
# Rapport de Consolidation Finale des Migrations Flyway
|
||||
|
||||
**Date**: 2026-03-16
|
||||
**Auteur**: Lions Dev
|
||||
**Projet**: UnionFlow - Backend Quarkus
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Objectif Atteint
|
||||
|
||||
Consolidation complète de **10 migrations** (V1-V10) en **UNE seule migration V1** avec tous les noms de tables corrects dès le départ.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Travaux Effectués
|
||||
|
||||
### 1. Consolidation des Migrations
|
||||
|
||||
**Avant**:
|
||||
- V1 à V10 (10 fichiers SQL)
|
||||
- V1 contenait des duplications (3× `organisations`, 2× `membres`)
|
||||
- Total: 3153 lignes dans V1 + 9 autres fichiers
|
||||
|
||||
**Après**:
|
||||
- **V1 unique**: `V1__UnionFlow_Complete_Schema.sql` (1322 lignes)
|
||||
- **69 tables** avec noms corrects correspondant aux entités JPA
|
||||
- **0 duplication**
|
||||
- **0 fichier de seed data** (selon demande utilisateur)
|
||||
|
||||
### 2. Nommage Correct des Tables
|
||||
|
||||
**Problème initial**: V1 créait des tables au **pluriel** alors que les entités JPA utilisent `@Table(name="...")` au **singulier**.
|
||||
|
||||
**Solution**: Nouvelle V1 crée directement les tables avec les bons noms:
|
||||
- ✅ `utilisateurs` (pas `membres`)
|
||||
- ✅ `configuration` (pas `configurations`)
|
||||
- ✅ `ticket` (pas `tickets`)
|
||||
- ✅ `suggestion` (pas `suggestions`)
|
||||
- ✅ `permission` (pas `permissions`)
|
||||
- ... et 64 autres tables
|
||||
|
||||
### 3. Tests Unitaires Corrigés
|
||||
|
||||
**Problème**: `GlobalExceptionMapperTest.java` avait 17 erreurs de compilation.
|
||||
|
||||
**Cause**: Les tests appelaient des méthodes inexistantes (`mapRuntimeException`, `mapBadRequestException`, `mapJsonException`).
|
||||
|
||||
**Solution**: Tous les tests corrigés pour utiliser `toResponse(Throwable)` - la vraie méthode publique.
|
||||
|
||||
**Résultat**: ✅ **BUILD SUCCESS** - 227 fichiers de test compilés sans erreur.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Résultats
|
||||
|
||||
### Flyway
|
||||
|
||||
```
|
||||
✅ Flyway clean: réussi
|
||||
✅ Migration V1: appliquée avec succès
|
||||
✅ Temps d'exécution: 1.13s
|
||||
✅ Nombre de tables créées: 70 (69 + flyway_schema_history)
|
||||
```
|
||||
|
||||
### Backend
|
||||
|
||||
```
|
||||
✅ Démarrage: réussi
|
||||
✅ Port: 8085
|
||||
✅ Swagger UI: accessible
|
||||
✅ Features: 22 extensions Quarkus chargées
|
||||
```
|
||||
|
||||
### Tests
|
||||
|
||||
```
|
||||
✅ Compilation tests: réussie
|
||||
✅ Erreurs: 0 (avant: 17)
|
||||
✅ Fichiers compilés: 227
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Problème Découvert - Hibernate Validation
|
||||
|
||||
**Erreur détectée**: Hibernate schema validation échoue pour **toutes les tables**.
|
||||
|
||||
**Symptôme**:
|
||||
```
|
||||
Schema-validation: missing column [cree_par] in table [adresses]
|
||||
Schema-validation: missing column [modifie_par] in table [adresses]
|
||||
Schema-validation: missing column [date_creation] in table [adresses]
|
||||
Schema-validation: missing column [date_modification] in table [adresses]
|
||||
Schema-validation: missing column [version] in table [adresses]
|
||||
Schema-validation: missing column [actif] in table [adresses]
|
||||
```
|
||||
|
||||
**Cause**: Les migrations SQL n'incluent PAS les colonnes `BaseEntity` dans les tables:
|
||||
- `cree_par VARCHAR(255)`
|
||||
- `modifie_par VARCHAR(255)`
|
||||
- `date_creation TIMESTAMP NOT NULL DEFAULT NOW()`
|
||||
- `date_modification TIMESTAMP`
|
||||
- `version INTEGER NOT NULL DEFAULT 0`
|
||||
- `actif BOOLEAN NOT NULL DEFAULT true`
|
||||
|
||||
**Impact**:
|
||||
- ❌ Backend démarre mais Hibernate validation échoue
|
||||
- ❌ Toutes les entités JPA qui étendent `BaseEntity` auront des erreurs d'insertion/update
|
||||
- ⚠️ Production-blocking si `hibernate-orm.database.generation=validate` (mode prod)
|
||||
|
||||
**Solution Requise**: Corriger V1 pour ajouter les 6 colonnes BaseEntity dans toutes les 69 tables.
|
||||
|
||||
---
|
||||
|
||||
## 📁 Fichiers Modifiés/Créés
|
||||
|
||||
### Créés
|
||||
- ✅ `V1__UnionFlow_Complete_Schema.sql` (1322 lignes, consolidé final)
|
||||
- ✅ `CONSOLIDATION_MIGRATIONS_FINALE.md` (ce rapport)
|
||||
- ✅ `backup-migrations-20260316/` (sauvegarde V1-V10 originaux)
|
||||
|
||||
### Modifiés
|
||||
- ✅ `GlobalExceptionMapperTest.java` (17 tests corrigés)
|
||||
|
||||
### Supprimés
|
||||
- ✅ `V2__Entity_Schema_Alignment.sql`
|
||||
- ✅ `V3__Seed_Comptes_Epargne_Test.sql`
|
||||
- ✅ `V4__Add_DEPOT_EPARGNE_To_Intention_Type_Check.sql`
|
||||
- ✅ `V5__Create_Membre_Suivi.sql`
|
||||
- ✅ `V6__Create_Finance_Workflow_Tables.sql`
|
||||
- ✅ `V7__Monitoring_System.sql`
|
||||
- ✅ `V8__Fix_Monitoring_Columns.sql`
|
||||
- ✅ `V9__Create_Alertes_LCB_FT.sql`
|
||||
- ✅ `V10__Fix_All_Table_Names.sql`
|
||||
|
||||
---
|
||||
|
||||
## 📋 Liste Complète des 69 Tables Créées
|
||||
|
||||
### Core (11 tables)
|
||||
- utilisateurs, organisations, roles, permission, membre_role, membre_organisation
|
||||
- adresses, ayants_droit, types_reference
|
||||
- modules_organisation_actifs, module_disponible
|
||||
|
||||
### Finance (5 tables)
|
||||
- cotisations, paiements, intention_paiement, paiements_objets
|
||||
- parametres_cotisation_organisation
|
||||
|
||||
### Mutuelle (5 tables)
|
||||
- comptes_epargne, transactions_epargne
|
||||
- demandes_credit, echeances_credit, garanties_demande
|
||||
|
||||
### Événements & Solidarité (3 tables)
|
||||
- evenements, inscriptions_evenement
|
||||
- demandes_aide
|
||||
|
||||
### Support (4 tables)
|
||||
- ticket, suggestion, suggestion_vote, favori
|
||||
|
||||
### Notifications (2 tables)
|
||||
- notifications, template_notification
|
||||
|
||||
### Documents (2 tables)
|
||||
- document, pieces_jointes
|
||||
|
||||
### Workflows Finance (5 tables)
|
||||
- transaction_approvals, approver_actions
|
||||
- budgets, budget_lines, workflow_validation_config
|
||||
|
||||
### Monitoring (4 tables)
|
||||
- system_logs, system_alerts, alert_configuration, audit_logs
|
||||
|
||||
### Spécialisés (11 tables)
|
||||
- tontines, tours_tontine
|
||||
- campagnes_vote, candidats
|
||||
- campagnes_collecte, contributions_collecte
|
||||
- campagnes_agricoles, projets_ong, dons_religieux
|
||||
- echelons_organigramme, agrements_professionnels
|
||||
|
||||
### LCB-FT (2 tables)
|
||||
- parametres_lcb_ft, alertes_lcb_ft
|
||||
|
||||
### Adhésion (3 tables)
|
||||
- demande_adhesion, formule_abonnement, souscription_organisation
|
||||
|
||||
### Autre (3 tables)
|
||||
- membre_suivi, validation_etape_demande
|
||||
- comptes_wave, transaction_wave, webhooks_wave
|
||||
|
||||
### Comptabilité (4 tables)
|
||||
- compte_comptable, journal_comptable, ecriture_comptable, ligne_ecriture
|
||||
|
||||
### Configuration (2 tables)
|
||||
- configuration, configuration_wave
|
||||
|
||||
**Total: 69 tables métier + 1 flyway_schema_history = 70 tables**
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Prochaines Étapes (URGENT)
|
||||
|
||||
### P0 - Production Blocker
|
||||
|
||||
1. **Corriger V1 pour ajouter les colonnes BaseEntity**
|
||||
```sql
|
||||
-- Dans chaque CREATE TABLE, ajouter:
|
||||
cree_par VARCHAR(255),
|
||||
modifie_par VARCHAR(255),
|
||||
date_creation TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
date_modification TIMESTAMP,
|
||||
version INTEGER NOT NULL DEFAULT 0,
|
||||
actif BOOLEAN NOT NULL DEFAULT true
|
||||
```
|
||||
|
||||
2. **Retester Flyway clean + migrate**
|
||||
```bash
|
||||
mvn clean compile quarkus:dev -D"quarkus.http.port=8085" -D"quarkus.flyway.clean-at-start=true"
|
||||
```
|
||||
|
||||
3. **Vérifier Hibernate validation réussit**
|
||||
- Vérifier les logs: aucune erreur "Schema-validation: missing column"
|
||||
- Vérifier: "Hibernate ORM ... successfully validated"
|
||||
|
||||
### P1 - Qualité
|
||||
|
||||
4. **Exécuter les tests**
|
||||
```bash
|
||||
mvn test
|
||||
```
|
||||
|
||||
5. **Mettre à jour MEMORY.md**
|
||||
- Section "Flyway Migrations — Consolidation Finale (2026-03-16)"
|
||||
- Documenter: V1 unique, 69 tables, colonnes BaseEntity ajoutées
|
||||
|
||||
---
|
||||
|
||||
## ✨ Résumé
|
||||
|
||||
| Métrique | Avant | Après |
|
||||
|----------|-------|-------|
|
||||
| Migrations | V1-V10 (10 fichiers) | V1 unique |
|
||||
| Lignes V1 | 3153 | 1322 |
|
||||
| Duplications | 5 CREATE TABLE | 0 |
|
||||
| Tables mal nommées | 24 | 0 |
|
||||
| Seed data | Oui (V3) | Non (supprimé) |
|
||||
| Tests en erreur | 17 | 0 |
|
||||
| Backend démarre? | ❌ Non (V9 échouait) | ✅ Oui |
|
||||
| Hibernate validation? | N/A | ❌ Échoue (colonnes manquantes) |
|
||||
|
||||
---
|
||||
|
||||
## 📝 Notes Techniques
|
||||
|
||||
### Credentials PostgreSQL
|
||||
- **Host**: localhost:5432
|
||||
- **Database**: unionflow
|
||||
- **Username**: skyfile
|
||||
- **Password**: skyfile
|
||||
|
||||
### Commandes Utiles
|
||||
|
||||
```bash
|
||||
# Démarrer backend avec Flyway clean
|
||||
mvn compile quarkus:dev -D"quarkus.http.port=8085" -D"quarkus.flyway.clean-at-start=true"
|
||||
|
||||
# Compiler tests uniquement
|
||||
mvn test-compile
|
||||
|
||||
# Exécuter tests
|
||||
mvn test
|
||||
|
||||
# Vérifier logs Flyway
|
||||
grep -i "flyway\|migration" logs/output.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Créé par**: Lions Dev
|
||||
**Date**: 2026-03-16
|
||||
**Durée totale**: ~3h (analyse + consolidation + correction tests)
|
||||
76
docs/archive/JACOCO_TESTS_MANQUANTS.md
Normal file
76
docs/archive/JACOCO_TESTS_MANQUANTS.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# JaCoCo 100 % – Tests ajoutés et suites restantes
|
||||
|
||||
## Ce qui a été fait
|
||||
|
||||
### 1. GlobalExceptionMapper (100 % branches)
|
||||
- **Fichier :** `src/main/java/.../exception/GlobalExceptionMapper.java`
|
||||
- **Modifs :** `@ApplicationScoped` pour l’injection en test ; ordre des `instanceof` dans `mapJsonException` : **InvalidFormatException avant MismatchedInputException** (InvalidFormatException étend MismatchedInputException).
|
||||
- **Tests ajoutés dans** `GlobalExceptionMapperTest.java` :
|
||||
- `mapRuntimeException` : RuntimeException, IllegalArgumentException, IllegalStateException, NotFoundException, WebApplicationException (message non vide, null, vide), fallback 500.
|
||||
- `mapBadRequestException` : message présent, message null.
|
||||
- `mapJsonException` : MismatchedInputException, InvalidFormatException, JsonMappingException, JsonParseException (cas par défaut), avec sous-classes/stubs pour les constructeurs Jackson protégés.
|
||||
- `buildResponse` : délégation 3 args → 4 args ; message null ; details null.
|
||||
|
||||
### 2. IdConverter (package util)
|
||||
- **Fichier de test :** `src/test/java/.../util/IdConverterTest.java`
|
||||
- Couverture : `longToUUID` (null, membre, organisation, cotisation, evenement, demandeaide, inscriptionevenement, type inconnu, casse), `uuidToLong` (null, valeur), `organisationIdToUUID`, `membreIdToUUID`, `cotisationIdToUUID`, `evenementIdToUUID`.
|
||||
|
||||
### 3. UnionFlowServerApplication
|
||||
- **Fichier de test :** `src/test/java/.../UnionFlowServerApplicationTest.java`
|
||||
- Vérification de l’injection du bean (pas de couverture de `main()` ni `run()` qui appellent `Quarkus.waitForExit()`).
|
||||
|
||||
### 4. AuthCallbackResource
|
||||
- Les tests REST sur `/auth/callback` ont été retirés : en environnement test la ressource renvoie **500** (exception dans le bloc try ou en aval). À retester après correction de la cause (ex. config OIDC, format de la réponse, etc.).
|
||||
|
||||
---
|
||||
|
||||
## État actuel de la couverture (sans exclusions)
|
||||
|
||||
- **Instructions :** ~44 %
|
||||
- **Branches :** ~32 %
|
||||
- **Lignes :** ~46 %
|
||||
- **Méthodes :** ~55 %
|
||||
- **Seuils configurés :** 1,00 (100 %) pour LINE, BRANCH, INSTRUCTION, METHOD sur le BUNDLE → le **check JaCoCo échoue**.
|
||||
|
||||
---
|
||||
|
||||
## Suites de tests à ajouter pour viser 100 %
|
||||
|
||||
Les chiffres ci‑dessous sont issus du rapport JaCoCo (index par package). Pour chaque package, il faut ajouter ou compléter des tests jusqu’à couvrir toutes les lignes/branches/méthodes.
|
||||
|
||||
| Package | Instructions | Branches | À faire |
|
||||
|--------|---------------|----------|--------|
|
||||
| `dev.lions.unionflow.server.service` | 35 % | 21 % | ~40 classes, couvrir tous les services (DashboardServiceImpl, MembreService, CotisationService, etc.) |
|
||||
| `dev.lions.unionflow.server.resource` | 38 % | 41 % | ~33 resources REST : chaque endpoint et chaque branche (erreurs, paramètres, pagination) |
|
||||
| `dev.lions.unionflow.server.repository` | 59 % | 46 % | ~32 repositories : requêtes personnalisées, critères, cas null |
|
||||
| `dev.lions.unionflow.server.entity` | 70 % | 50 % | ~42 entités : getters/setters, `@PrePersist`, méthodes métier, listeners |
|
||||
| `dev.lions.unionflow.server.service.mutuelle.credit` | 7 % | 0 % | DemandeCreditService : tous les cas et branches |
|
||||
| `dev.lions.unionflow.server.service.mutuelle.epargne` | 18 % | 0 % | TransactionEpargneService, etc. |
|
||||
| `dev.lions.unionflow.server.security` | 30 % | - | RoleDebugFilter, autres filtres : tests d’intégration (filtre + requête REST) |
|
||||
| `dev.lions.unionflow.server.mapper` (racine + sous-packages) | 35–95 % | 21–64 % | Compléter les branches manquantes dans les mappers MapStruct (null, listes vides, champs optionnels) |
|
||||
| `de.lions.unionflow.server.auth` | 0 % | 0 % | AuthCallbackResource : corriger la 500 en test puis réécrire les tests REST |
|
||||
| `dev.lions.unionflow.server.util` | 0 % → couvert | - | IdConverter : fait |
|
||||
| `dev.lions.unionflow.server.client` | 0 % | - | UserServiceClient, RoleServiceClient : tests avec WireMock ou mock du client + services qui les utilisent |
|
||||
| `dev.lions.unionflow.server` | 0 % | - | UnionFlowServerApplication : `main`/`run` non couverts (blocage sur `waitForExit`) |
|
||||
|
||||
En pratique, il faut :
|
||||
- **Services :** pour chaque méthode publique, scénarios nominal, erreurs (exceptions, not found), paramètres null/optionnels, et chaque branche (if/else, try/catch).
|
||||
- **Resources :** pour chaque `@GET`/`@POST`/…, au moins 200, 404, 400, 401/403 si applicable, et corps de requête/réponse.
|
||||
- **Repositories :** tests avec base H2 et données de test pour chaque requête dérivée ou `@Query`.
|
||||
- **Entités :** instanciation, setters, callbacks JPA, méthodes métier.
|
||||
- **Mappers :** entité → DTO, DTO → entité, listes, champs null.
|
||||
- **Filtres / clients :** soit tests d’intégration (REST + filtre), soit tests unitaires avec mocks (ContainerRequestContext, client REST mocké).
|
||||
|
||||
---
|
||||
|
||||
## Recommandation
|
||||
|
||||
- **Option A – Build vert avec seuils réalistes :**
|
||||
Remonter temporairement les seuils JaCoCo (ex. 0,45 en LINE/INSTRUCTION, 0,32 en BRANCH) ou réintroduire des exclusions ciblées (entités, générés MapStruct, `*Application`) pour que la build passe, puis augmenter progressivement la couverture par packages.
|
||||
|
||||
- **Option B – Viser 100 % sans exclusions :**
|
||||
Continuer à ajouter des tests package par package en s’appuyant sur le rapport HTML JaCoCo (`target/site/jacoco/index.html`) et sur ce fichier, jusqu’à atteindre 1,00 sur tout le bundle.
|
||||
|
||||
---
|
||||
|
||||
*Dernière mise à jour : suite aux ajouts GlobalExceptionMapper, IdConverter, UnionFlowServerApplication et correction de l’ordre `mapJsonException`.*
|
||||
216
docs/archive/NETTOYAGE_MIGRATIONS_RAPPORT.md
Normal file
216
docs/archive/NETTOYAGE_MIGRATIONS_RAPPORT.md
Normal file
@@ -0,0 +1,216 @@
|
||||
# Rapport de Nettoyage Complet des Migrations Flyway
|
||||
**Date**: 2026-03-13
|
||||
**Auteur**: Lions Dev
|
||||
**Projet**: UnionFlow - Backend Quarkus
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Objectif
|
||||
|
||||
Nettoyer intégralement toutes les migrations Flyway selon les réalités du code source (entités JPA) et résoudre les problèmes de démarrage du backend.
|
||||
|
||||
---
|
||||
|
||||
## ❌ Problème Initial
|
||||
|
||||
**Erreur au démarrage**:
|
||||
```
|
||||
Migration V9__Create_Alertes_LCB_FT failed
|
||||
ERROR: relation 'membres' does not exist (SQL State: 42P01)
|
||||
```
|
||||
|
||||
**Cause racine**: Le fichier `V1__UnionFlow_Complete_Schema.sql` (3153 lignes) contenait:
|
||||
- ❌ **3 CREATE TABLE organisations** (lignes 11, 247, 884)
|
||||
- ❌ **2 CREATE TABLE membres** (lignes 331, 857)
|
||||
- ❌ **DROP/CREATE/CREATE** redondants
|
||||
- ❌ **74 ALTER TABLE** statements
|
||||
- ❌ **107 FOREIGN KEY** constraints
|
||||
|
||||
→ **Résultat**: Transaction rollback, tables jamais créées, V9 échoue.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Actions Effectuées
|
||||
|
||||
### 1. Nettoyage de V1__UnionFlow_Complete_Schema.sql
|
||||
|
||||
**Fichier avant**: 3153 lignes avec sections redondantes
|
||||
**Fichier après**: ~2318 lignes (sections 1-835 supprimées)
|
||||
|
||||
**Suppressions**:
|
||||
- ❌ Section V1.2 (CREATE organisations avec BIGSERIAL)
|
||||
- ❌ Section "Migration UUID" (DROP + recréation organisations/membres)
|
||||
- ❌ Sections avec CREATE TABLE sans IF NOT EXISTS
|
||||
- ✅ Conservé uniquement: Section consolidée V1.7 (ligne 836+) avec `CREATE TABLE IF NOT EXISTS`
|
||||
|
||||
### 2. Audit Complet Entités vs Migrations
|
||||
|
||||
**Script créé**: `audit_precise.sh`
|
||||
**Rapports générés**:
|
||||
- `AUDIT_MIGRATIONS.md` (audit initial)
|
||||
- `AUDIT_MIGRATIONS_PRECISE.md` (audit précis avec @Table annotations)
|
||||
|
||||
**Résultats**:
|
||||
- 📊 **69 entités JPA** (71 - 2 abstraites/listeners)
|
||||
- 📊 **76 tables** dans migrations
|
||||
- ✅ **45 entités OK** (table correspondante)
|
||||
- ❌ **24 entités sans table** (problèmes de nommage)
|
||||
- ⚠️ **31 tables orphelines**
|
||||
|
||||
### 3. Problèmes de Nommage Détectés
|
||||
|
||||
**Problème majeur**: V1 a créé des tables au **pluriel** alors que les entités utilisent `@Table(name="...")` au **singulier**.
|
||||
|
||||
| Entité | Table attendue (@Table) | Table créée dans V1 | Statut |
|
||||
|--------|-------------------------|---------------------|--------|
|
||||
| Membre | `utilisateurs` | `membres` | ❌ MAUVAIS NOM |
|
||||
| Configuration | `configuration` | `configurations` | ❌ MAUVAIS NOM |
|
||||
| Ticket | `ticket` | `tickets` | ❌ MAUVAIS NOM |
|
||||
| Suggestion | `suggestion` | `suggestions` | ❌ MAUVAIS NOM |
|
||||
| Favori | `favori` | `favoris` | ❌ MAUVAIS NOM |
|
||||
| Permission | `permission` | `permissions` | ❌ MAUVAIS NOM |
|
||||
| Document | `document` | `documents` | ❌ MAUVAIS NOM |
|
||||
| ... | ... | ... | ... |
|
||||
|
||||
**Total**: **24 tables** avec le mauvais nom (pluriel au lieu de singulier).
|
||||
|
||||
### 4. Migration V10 de Correction
|
||||
|
||||
**Fichier créé**: `V10__Fix_All_Table_Names.sql`
|
||||
|
||||
**Contenu**:
|
||||
|
||||
#### PARTIE 1 - Renommages (24 tables)
|
||||
```sql
|
||||
ALTER TABLE membres RENAME TO utilisateurs;
|
||||
ALTER TABLE configurations RENAME TO configuration;
|
||||
ALTER TABLE tickets RENAME TO ticket;
|
||||
ALTER TABLE suggestions RENAME TO suggestion;
|
||||
ALTER TABLE favoris RENAME TO favori;
|
||||
ALTER TABLE permissions RENAME TO permission;
|
||||
... (et 18 autres)
|
||||
```
|
||||
|
||||
#### PARTIE 2 - Suppressions (tables orphelines)
|
||||
```sql
|
||||
DROP TABLE IF EXISTS paiements_adhesions CASCADE;
|
||||
DROP TABLE IF EXISTS paiements_aides CASCADE;
|
||||
DROP TABLE IF EXISTS paiements_cotisations CASCADE;
|
||||
DROP TABLE IF EXISTS paiements_evenements CASCADE;
|
||||
DROP TABLE IF EXISTS adhesions CASCADE;
|
||||
DROP TABLE IF EXISTS uf_type_organisation CASCADE;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Liste Complète des Tables Renommées (24)
|
||||
|
||||
1. `membres` → `utilisateurs` (Membre)
|
||||
2. `configurations` → `configuration` (Configuration)
|
||||
3. `configurations_wave` → `configuration_wave` (ConfigurationWave)
|
||||
4. `documents` → `document` (Document)
|
||||
5. `favoris` → `favori` (Favori)
|
||||
6. `permissions` → `permission` (Permission)
|
||||
7. `suggestions` → `suggestion` (Suggestion)
|
||||
8. `suggestion_votes` → `suggestion_vote` (SuggestionVote)
|
||||
9. `tickets` → `ticket` (Ticket)
|
||||
10. `templates_notifications` → `template_notification` (TemplateNotification)
|
||||
11. `transactions_wave` → `transaction_wave` (TransactionWave)
|
||||
12. `demandes_adhesion` → `demande_adhesion` (DemandeAdhesion)
|
||||
13. `formules_abonnement` → `formule_abonnement` (FormuleAbonnement)
|
||||
14. `intentions_paiement` → `intention_paiement` (IntentionPaiement)
|
||||
15. `membres_organisations` → `membre_organisation` (MembreOrganisation)
|
||||
16. `membres_roles` → `membre_role` (MembreRole)
|
||||
17. `modules_disponibles` → `module_disponible` (ModuleDisponible)
|
||||
18. `roles_permissions` → `role_permission` (RolePermission)
|
||||
19. `souscriptions_organisation` → `souscription_organisation` (SouscriptionOrganisation)
|
||||
20. `validation_etapes_demande` → `validation_etape_demande` (ValidationEtapeDemande)
|
||||
21. `comptes_comptables` → `compte_comptable` (CompteComptable)
|
||||
22. `ecritures_comptables` → `ecriture_comptable` (EcritureComptable)
|
||||
23. `journaux_comptables` → `journal_comptable` (JournalComptable)
|
||||
24. `lignes_ecriture` → `ligne_ecriture` (LigneEcriture)
|
||||
|
||||
---
|
||||
|
||||
## 📊 État Final
|
||||
|
||||
### Migrations
|
||||
|
||||
| Migration | Description | Statut |
|
||||
|-----------|-------------|--------|
|
||||
| V1 | Schema complet consolidé (nettoyé) | ✅ OK |
|
||||
| V2 | Entity Schema Alignment | ✅ OK |
|
||||
| V3 | Seed Comptes Epargne Test | ✅ OK |
|
||||
| V4 | Add DEPOT_EPARGNE To Intention Type Check | ✅ OK |
|
||||
| V5 | Create Membre Suivi | ✅ OK |
|
||||
| V6 | Create Finance Workflow Tables | ✅ OK |
|
||||
| V7 | Monitoring System | ✅ OK |
|
||||
| V8 | Fix Monitoring Columns | ✅ OK |
|
||||
| V9 | Create Alertes LCB FT | ✅ OK (après V10) |
|
||||
| **V10** | **Fix All Table Names** | ✅ **NOUVEAU** |
|
||||
|
||||
### Entités vs Tables
|
||||
|
||||
- ✅ **69/69 entités** ont maintenant une table correspondante
|
||||
- ✅ **0 table orpheline** (supprimées)
|
||||
- ✅ **0 duplication** (nettoyé dans V1)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Prochaines Étapes
|
||||
|
||||
### 1. Tester le Backend
|
||||
|
||||
```bash
|
||||
cd unionflow/unionflow-server-impl-quarkus
|
||||
mvn clean compile quarkus:dev -D"quarkus.http.port=8085" -D"quarkus.flyway.clean-at-start=true"
|
||||
```
|
||||
|
||||
**Attendu**:
|
||||
- ✅ Flyway clean réussit
|
||||
- ✅ V1-V10 s'exécutent sans erreur
|
||||
- ✅ Backend démarre sur port 8085
|
||||
- ✅ Swagger accessible: `http://localhost:8085/q/swagger-ui`
|
||||
|
||||
### 2. Vérifier les Tests (si nécessaire)
|
||||
|
||||
**Tests en échec avant nettoyage**:
|
||||
- `GlobalExceptionMapperTest.java` (17 erreurs - méthodes manquantes)
|
||||
|
||||
**Action**: Corriger si nécessaire après confirmation du démarrage backend.
|
||||
|
||||
### 3. Documentation
|
||||
|
||||
**Fichiers créés**:
|
||||
- ✅ `AUDIT_MIGRATIONS.md` - Audit initial
|
||||
- ✅ `AUDIT_MIGRATIONS_PRECISE.md` - Audit précis avec @Table
|
||||
- ✅ `NETTOYAGE_MIGRATIONS_RAPPORT.md` - Ce rapport
|
||||
- ✅ `audit_precise.sh` - Script Bash d'audit
|
||||
- ✅ `V10__Fix_All_Table_Names.sql` - Migration de correction
|
||||
|
||||
**Mise à jour MEMORY.md** (à faire):
|
||||
- Ajouter: "Migration Flyway V1-V10 nettoyées, 24 tables renommées (utilisateurs, configuration, etc.)"
|
||||
|
||||
---
|
||||
|
||||
## ✨ Résumé
|
||||
|
||||
| Métrique | Avant | Après |
|
||||
|----------|-------|-------|
|
||||
| Fichier V1 | 3153 lignes | ~2318 lignes |
|
||||
| CREATE TABLE dupliqués | 3× organisations, 2× membres | 0 |
|
||||
| Entités sans table | 24 | 0 |
|
||||
| Tables orphelines | 31 | 0 |
|
||||
| Tables mal nommées | 24 | 0 |
|
||||
| Migrations | V1-V9 | V1-V10 |
|
||||
| Backend démarre? | ❌ Non | ⏳ À tester |
|
||||
|
||||
---
|
||||
|
||||
## 🎉 Conclusion
|
||||
|
||||
Le nettoyage complet des migrations Flyway est **TERMINÉ**. Tous les problèmes de nommage et de duplication ont été résolus. Le backend devrait maintenant démarrer sans erreur Flyway.
|
||||
|
||||
**Créé par**: Lions Dev
|
||||
**Date**: 2026-03-13
|
||||
**Durée**: ~2h d'analyse et correction
|
||||
31
docs/archive/TESTS_CONNUS_EN_ECHEC.md
Normal file
31
docs/archive/TESTS_CONNUS_EN_ECHEC.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Tests connus en échec
|
||||
|
||||
Ce document liste les tests qui échouent actuellement et les raisons connues.
|
||||
|
||||
## Tests Resource/Service : 82/82 (100% de réussite)
|
||||
|
||||
Tous les tests resource et service passent avec succes.
|
||||
|
||||
### Corrections appliquees (2026-02-11)
|
||||
|
||||
1. **`EvenementResourceTest.testModifierEvenement`** - CORRIGE
|
||||
- **Cause**: LazyInitializationException lors de la serialisation JSON de la reponse
|
||||
- **Fix**: Ajout de `@JsonIgnore` sur les collections lazy (`inscriptions`, `adresses`) et les methodes calculees (`getNombreInscrits`, `isComplet`, `getPlacesRestantes`, `getTauxRemplissage`, `isOuvertAuxInscriptions`) dans Evenement.java. Ajout de `Hibernate.initialize()` dans EvenementService. Ajout de `@JsonIgnore` sur les collections lazy de Organisation.java et Membre.java.
|
||||
|
||||
2. **`EvenementResourceTest.testModifierEvenementInexistant`** - CORRIGE
|
||||
- **Cause**: Le resource retournait 400 (IllegalArgumentException) au lieu de 404 pour un evenement non trouve
|
||||
- **Fix**: Ajout d'une verification du message d'erreur dans EvenementResource pour retourner 404 quand le message contient "non trouve"
|
||||
|
||||
3. **`MembreResourceImportExportTest.testImporterMembresExcel`** - CORRIGE
|
||||
- **Cause**: `@RestForm byte[]` ne recoit pas les fichiers multipart en RESTEasy Reactive
|
||||
- **Fix**: Remplacement de `@RestForm("file") byte[]` par `@RestForm("file") FileUpload` dans MembreResource.importerMembres()
|
||||
|
||||
## Tests Integration : echecs pre-existants (non lies aux corrections ci-dessus)
|
||||
|
||||
Les tests dans `dev.lions.unionflow.server.integration.*` (non commites, non suivis par git) ont des echecs pre-existants a investiguer separement.
|
||||
|
||||
---
|
||||
|
||||
**Date de creation**: 2026-01-04
|
||||
**Derniere mise a jour**: 2026-02-11
|
||||
**Taux de reussite resource/service**: 82/82 tests (100%)
|
||||
@@ -54,7 +54,7 @@ public class AuditService {
|
||||
auditLog.setEntiteType("Membre");
|
||||
auditLog.setEntiteId(membreId != null ? membreId.toString() : null);
|
||||
auditLog.setDateHeure(LocalDateTime.now());
|
||||
auditLog.setPortee(PorteeAudit.GLOBAL);
|
||||
auditLog.setPortee(PorteeAudit.PLATEFORME);
|
||||
try {
|
||||
auditLogRepository.persist(auditLog);
|
||||
} catch (Exception e) {
|
||||
|
||||
Reference in New Issue
Block a user