dahoud
a7bcaf9277
feat(backend): endpoints inscriptions + feedback événements
...
Ajoute infrastructure complète pour gérer inscriptions et feedbacks événements.
## Entités
- FeedbackEvenement : note 1-5, commentaire, modération (PUBLIE/EN_ATTENTE/REJETE)
- InscriptionEvenement : déjà existait, utilisation ajoutée
## Repositories
- InscriptionEvenementRepository : findByMembreAndEvenement, findByEvenement, countConfirmees, isMembreInscrit
- FeedbackEvenementRepository : findByMembreAndEvenement, findPubliesByEvenement, calculateAverageNote
## Service (EvenementService)
Inscriptions :
- inscrireEvenement() : vérifie capacité, crée inscription CONFIRMEE
- desinscrireEvenement() : soft delete inscription
- getParticipants() : liste inscriptions confirmées
- getMesInscriptions() : inscriptions du membre connecté
Feedbacks :
- soumetteFeedback() : note 1-5 + commentaire, vérifie participation, événement terminé
- getFeedbacks() : liste feedbacks publiés
- getStatistiquesFeedback() : note moyenne + nombre feedbacks
## REST Endpoints (6 total)
Inscriptions :
- POST /api/evenements/{id}/inscriptions - S'inscrire
- DELETE /api/evenements/{id}/inscriptions - Se désinscrire
- GET /api/evenements/{id}/participants - Liste participants
- GET /api/evenements/mes-inscriptions - Mes inscriptions
Feedbacks :
- POST /api/evenements/{id}/feedback - Soumettre feedback (note+commentaire)
- GET /api/evenements/{id}/feedbacks - Liste feedbacks + stats
## Database
- Migration V7 : table feedbacks_evenement
- Contrainte unique: un feedback par membre/événement
- Index: membre_id, evenement_id, date_feedback, moderation_statut
Débloquer fonctionnalités événements mobile.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-03-16 20:11:03 +00:00
dahoud
3be01e28a7
feat(backend): implémentation complète du système de messagerie
...
Ajoute l'infrastructure backend complète pour les conversations et messages :
## Entités
- Conversation : conversations individuelles, groupes, broadcast, annonces
- Message : messages avec statut, priorité, pièces jointes, soft delete
## Repositories
- ConversationRepository : findByParticipant, findByIdAndParticipant (sécurité)
- MessageRepository : findByConversation, countUnread, markAsRead
## Services
- ConversationService : CRUD conversations, archive, mute, pin
- MessageService : send, edit, delete, getMessages
## REST Endpoints (12 total)
- GET /api/conversations - Lister mes conversations
- GET /api/conversations/{id} - Récupérer une conversation
- POST /api/conversations - Créer conversation
- PUT /api/conversations/{id}/archive - Archiver
- PUT /api/conversations/{id}/mark-read - Marquer comme lu
- PUT /api/conversations/{id}/toggle-mute - Activer/désactiver son
- PUT /api/conversations/{id}/toggle-pin - Épingler
- GET /api/messages?conversationId=X - Lister messages
- POST /api/messages - Envoyer message
- PUT /api/messages/{id} - Éditer message
- DELETE /api/messages/{id} - Supprimer message
## Database
- Migration V6 : tables conversations, messages, conversation_participants
- Indexes sur organisation, type, archived, deleted pour performance
## Sécurité
- SecuriteHelper.resolveMembreId() : résolution membre depuis JWT
- Vérification accès conversation avant toute opération
- @RolesAllowed sur tous les endpoints
Débloquer la fonctionnalité Communication mobile (actuellement 100% stubs).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-03-16 06:39:39 +00:00
dahoud
f5271cc29e
feat(admin): sécurité ADMIN_ORGANISATION pour import/création membres
...
Implémente la sécurité au niveau Resource pour ADMIN_ORGANISATION :
les utilisateurs avec ce rôle ne peuvent gérer que les membres
de leurs organisations.
MembreService.java:
- Ajout listerMembresParOrganisations(orgIds, page, sort)
* Filtre membres par liste d'organisations avec JOIN
* Support pagination et tri
* Retourne liste vide si orgIds vide
- Ajout lierMembreOrganisationEtIncrementerQuota(membre, orgId, typeMembreDefaut)
* Crée MembreOrganisation avec statut ACTIF ou EN_ATTENTE_VALIDATION
* Incrémente quota si souscription active existe
* Gère statut selon typeMembreDefaut fourni
MembreResource.java:
- Injection OrganisationService + import Organisation entity
- GET /api/membres: sécurisé pour ADMIN_ORGANISATION
* ADMIN_ORGANISATION: filtre par ses organisations uniquement
* Utilise listerMembresParOrganisations()
* ADMIN/SUPER_ADMIN: accès complet (inchangé)
- POST /api/membres: sécurisé pour ADMIN_ORGANISATION
* @RolesAllowed: ADMIN, SUPER_ADMIN, ADMIN_ORGANISATION, MEMBRE
* ADMIN_ORGANISATION: require organisationId + validation accès
* Appelle lierMembreOrganisationEtIncrementerQuota()
* ADMIN/SUPER_ADMIN: fonctionnement inchangé
- POST /api/membres/import: sécurisé pour ADMIN_ORGANISATION
* ADMIN_ORGANISATION: require organisationId + validation accès
* Retourne 403 si tentative d'accès à org non autorisée
* Retourne 400 si organisationId manquant
Spec: admin-org-membres-import-quota.md
Critères acceptation: 8/8 ✅
- Filtrage liste membres par organisation
- Création membre avec organisationId obligatoire
- Import Excel avec orgId obligatoire
- Validation accès organisation
- Format Excel validé (déjà implémenté)
- Quota vérifié (déjà implémenté)
- Membres liés à org (déjà implémenté)
- Quota incrémenté (déjà implémenté)
Tâche: #56 - Implémenter Spec Admin Import Membres
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-03-16 06:07:56 +00:00
dahoud
347d89cc02
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 >
2026-03-16 05:15:17 +00:00
dahoud
d8e3f23ec4
fix(entity): appeler super.onCreate() dans SystemLog pour peupler dateCreation
...
Problème : SystemLog override @PrePersist sans appeler parent
Conséquence : dateCreation restait NULL → erreur PostgreSQL constraint violation
Solution : Ajout super.onCreate() pour déclencher BaseEntity.onCreate()
Fixes: null value in column date_creation violates not-null constraint
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-03-16 05:14:04 +00:00
dahoud
75a19988b0
Sync: code local unifié
...
Synchronisation du code source local (fait foi).
Signed-off-by: lions dev Team
2026-03-15 16:25:40 +00:00
dahoud
e82dc356f3
fix: ParametresLcbFtService compilation errors
...
Corrections pour T027 (tests backend):
- Logger.getLogger(*.class) au lieu de *.java
- Builder pattern: setters pour champs BaseResponse hérités
Impact: Compilation 100% réussie, tests 1167/1168 passent
Signed-off-by: lions dev Team
2026-03-15 04:50:06 +00:00
dahoud
eb729bdc56
feat(backend): Phase 3 - Service et Resource LCB-FT (Spec 001)
...
Implémentation backend pour conformité anti-blanchiment :
1. ParametresLcbFtService
- getParametres() : récupération params par org/devise
- getSeuilJustification() : seuil rapide (avec cache)
- saveOrUpdateParametres() : CRUD admin
- Cache Quarkus pour performance
- Fallback 500k XOF par défaut
2. ParametresLcbFtResource
- GET /api/parametres-lcb-ft : params complets (@PermitAll)
- GET /api/parametres-lcb-ft/seuil-justification : seuil léger
- POST /api/parametres-lcb-ft : CRUD admin (@RolesAllowed)
- OpenAPI/Swagger documentation complète
3. Validation existante confirmée
- TransactionEpargneService.validerLcbFtSiSeuilAtteint()
- Audit LCB-FT via AuditService.logLcbFtSeuilAtteint()
Phase 3 : 67% complété (4/6 tâches, 2 optionnelles skip)
- T012 ✅ Service paramètres
- T013 ✅ Validation seuils (existante)
- T014 ✅ Audit opérations (existant)
- T017 ✅ Endpoint REST mobile
- T015 ⏩ Optionnel (KYC crédit)
- T016 ⏩ Optionnel (alertes)
Spec : specs/001-mutuelles-anti-blanchiment/spec.md
Branche : 001-mutuelles-anti-blanchiment
Signed-off-by: lions dev Team
2026-03-15 02:31:35 +00:00
dahoud
a1e30b51fb
feat(dashboard): cotisations tout temps + synthèse membre
...
- CotisationRepository: calculerTotalCotisationsPayeesToutTemps(membreId)
- MembreDashboardService: envoi totalCotisationsPayeesToutTemps dans la synthèse
Made-with: Cursor
2026-03-09 19:58:25 +00:00
dahoud
4a0c5f9d33
Configure Maven repository for unionflow-server-api dependency
2025-12-10 01:08:17 +00:00