- ADMIN_ENTITE→ADMIN_ORGANISATION dans Javadoc et README
- OrganisationModuleService: retirer TONTINE de MUTUELLE (BCEAO-réglementé, incompatible)
- Ajouter TONTINE aux ASSOCIATION et CLUB_SERVICE (pratique courante Afrique de l'Ouest)
- V18 migration: aligner modules_requis avec le code Java
La V18 a été modifiée (fusion MUTUELLE_EPARGNE+CREDIT → MUTUELLE).
En prod, le checksum en DB ne correspond plus → Flyway refuse de démarrer.
repair-at-start met à jour la schema_history automatiquement.
Une mutuelle (MEC/COOPEC) fait TOUJOURS épargne ET crédit conjointement
dans le cadre réglementaire BCEAO/UEMOA. La séparation en deux types
n'avait pas de réalité terrain.
V18 corrigée :
- MUTUELLE_EPARGNE + MUTUELLE_CREDIT supprimés
- MUTUELLE ajouté : modules EPARGNE,CREDIT,FINANCE,LCB_FT (complet)
- COOPERATIVE enrichi : ajout EPARGNE + VOTES (réalité terrain — les coopératives
ont des AG avec votes et proposent souvent de l'épargne à leurs membres)
Passe de 17 → 16 types d'organisation.
Le mapping mobile _mapTypeOrganisationBilling garde les anciens codes en fallback
pour rétrocompatibilité.
- pom.xml : mise à jour dépendances
- application.properties : ajustements config
- MembreServiceTest, EntityCoverageTest : tests mis à jour pour nouveautés
- .gitignore : ajout du.exe.stackdump (dump Windows bash)
Migrations :
- V25 : numero_transaction nullable dans paiements (legacy V1 NOT NULL bloquant INSERT)
- V26 : autres colonnes legacy NOT NULL V1 (type_paiement, statut_paiement, etc.)
rendues nullables pour alignement avec l'entité Paiement
Refactor Paiement/PaiementObjet : mise à jour entités, repository, resource, service
pour cohérence avec le nouveau module Versement. Tests associés supprimés/ajustés.
- V30: ajoute membre_organisation_id/organisation_id/date_debut/fin/commentaire si absents,
rend membre_id nullable (legacy V1), remplace uk_membre_role par uk_mr_membre_org_role,
ajoute indexes. Idempotent via DO blocks.
- V31: rend destinataire_id, titre, nombre_tentatives nullables dans notifications
(colonnes legacy V1 que l'entité n'utilise plus, bloquaient les INSERT).
- application-dev.properties : token.issuer utilise ${DEV_HOST:localhost} pour valider
les JWT émis par Keycloak via l'IP LAN (mobile physique sur réseau local)
- .env : DEV_HOST=192.168.1.13 — source unique côté backend, en sync avec
android/local.properties → dev.host côté mobile
- V24 : suppression des 8 tables fantômes issues des migrations pré-consolidation
(document, permission, favori, ticket, suggestion, suggestion_vote, configuration,
role_permission) — toutes vides, les entités JPA pointaient déjà vers les tables
plurielles correctes. Les contraintes uk_role_permission et uk_suggestion_vote
sont maintenant sur les vraies tables (roles_permissions, suggestion_votes).
La colonne version était VARCHAR(20) au lieu de BIGINT, causant une erreur
Hibernate validate au démarrage. L'entité ModuleDisponible n'a pas de champ
version propre — la colonne était orpheline et conflicte avec BaseEntity @Version.
Fix idempotent : suppression VARCHAR + ajout BIGINT DEFAULT 0 (table vide).
Hibernate validate mode in prod requires exact table names.
V1 used singular names (permission, document, suggestion, etc.)
but entities use plural names (permissions, documents, suggestions, etc.).
Hibernate update mode was masking this by auto-creating plural tables.
Renamed 23 tables to match entities.
- SystemAlert.onCreate() now calls super.onCreate() to set dateCreation (was null → NOT NULL violation every minute)
- V1: types_reference updated with full schema (domaine, est_defaut, est_systeme, ordre_affichage, modules_requis, organisation_id)
- V9: idempotent guard for categorie nullable ALTER (already nullable in updated V1)
V4: system_logs colonnes niveau/stacktrace déjà renommées en prod
→ RENAME COLUMN enveloppé dans DO blocks IF EXISTS
V6: conversations/messages/conversation_participants existent déjà en prod
→ CREATE TABLE + CREATE INDEX → IF NOT EXISTS
formule_abonnement et souscription_organisation n'existent pas dans la DB
prod (nommées formules_abonnement/souscriptions_organisation dans l'ancien
schema). Remplacé par des DO blocks conditionnels (IF EXISTS).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- quarkus.flyway.ignore-migration-patterns=*:missing — migrations V1.2/V1.3
appliquées en DB mais absentes localement (après consolidation V1-V10)
- quarkus.log.file.enable=false — /var/log/unionflow/ absent dans le container
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remplace les tests "placeholders" qui acceptaient anyOf(200, 500)
par des tests robustes avec assertions sur le contenu JSON.
Modifications:
- DashboardResourceTest: 6 → 8 tests avec setup de données réelles
* Ajout BeforeEach avec création Organisation + Membre de test
* Validation du contenu JSON (organizationId, stats, activities, events)
* Tests cas d'erreur (params manquants, UUIDs invalides)
- MembreDashboardResourceTest: 2 → 5 tests
* Tests ajustés pour fonctionner sans données seed
* Ajout test authentification (401)
* Tests 404 pour membre inexistant
- MembreDashboardServiceTest: ajusté pour absence de données seed
* Tests 404/NotFoundException au lieu d'attendre des données seed
- application-test.properties: fix wave.api.key/secret vides
* Valeurs factices pour éviter erreur config en tests
Résultat: 17 tests dashboard, 100% de réussite (0 erreurs, 0 échecs)
Tâche: #57 - Remplacer tests placeholders dashboard
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
V1.2 now checks if the 'membres' table exists before trying to add
the organisation_id column. This prevents failures when Flyway runs
before Hibernate creates the initial schema from JPA entities.
Changes:
- Added table existence check before ALTER TABLE membres
- Migration will skip the ALTER if table doesn't exist yet
- Allows Hibernate to create initial schema first
This ensures migrations work correctly without any test data.