Files
unionflow-mobile-apps/union-flow.puml
dahoud f930ae7341 feat: PHASE 1 - Adresses et Rôles/Permissions
PHASE 1.1 - Entité Adresse:
- Création entité Adresse avec types (SIEGE_SOCIAL, BUREAU, DOMICILE, AUTRE)
- Relations flexibles: Organisation, Membre, Evenement
- Enum TypeAdresse dans module API (DRY/WOU)
- Repository et Service AdresseService
- Relations bidirectionnelles mises à jour

PHASE 1.2 - Système Rôles et Permissions:
- Entité Role avec types (SYSTEME, ORGANISATION, PERSONNALISE)
- Entité Permission avec structure MODULE > RESSOURCE > ACTION
- Tables de liaison MembreRole et RolePermission
- Repositories pour toutes les entités
- Services RoleService et PermissionService
- Relations bidirectionnelles dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de service cohérents
- Relations JPA standardisées
2025-11-30 01:31:12 +00:00

276 lines
6.0 KiB
Plaintext

@startuml MCD_UnionFlow
!theme plain
skinparam linetype ortho
skinparam packageStyle rectangle
skinparam classAttributeIconSize 0
title UnionFlow - MCD avec Wave Mobile Money
package Base {
abstract class BaseEntity {
+ id : UUID
+ dateCreation : LocalDateTime
+ version : Long
+ actif : Boolean
}
}
package Orgs {
class Organisation {
+ nom : String
+ email : String
+ statut : StatutOrg
}
class TypeOrganisation {
+ code : String
}
class Adresse {
+ ville : String
+ pays : String
}
}
package Membres {
class Membre {
+ numeroMembre : String
+ email : String
+ telephoneWave : String
}
class Role {
+ code : String
}
class Permission {
+ code : String
}
class MembreRole {
}
class RolePermission {
}
}
package Paiements {
class Paiement {
+ montant : BigDecimal
+ methodePaiement : MethodePmt
+ statutPaiement : StatutPmt
}
class Cotisation {
+ montantDu : BigDecimal
+ statut : StatutCot
}
class PaiementCotisation {
+ montantApplique : BigDecimal
}
class Adhesion {
+ fraisAdhesion : BigDecimal
+ statut : StatutAdh
}
class PaiementAdhesion {
+ montantApplique : BigDecimal
}
}
package Wave {
class CompteWave {
+ numeroTelephone : String
+ statutCompte : StatutWave
}
class TransactionWave {
+ waveTransactionId : String
+ montant : BigDecimal
+ statutTransaction : StatutTxWave
}
class WebhookWave {
+ waveEventId : String
+ statutTraitement : StatutWebhook
}
class ConfigurationWave {
+ cle : String
+ valeur : String
}
}
package Compta {
class CompteComptable {
+ numeroCompte : String
+ soldeActuel : BigDecimal
}
class JournalComptable {
+ code : String
}
class EcritureComptable {
+ montantDebit : BigDecimal
+ montantCredit : BigDecimal
}
class LigneEcriture {
+ montantDebit : BigDecimal
+ montantCredit : BigDecimal
}
}
package Evenements {
class Evenement {
+ titre : String
+ typeEvenement : TypeEvt
+ statut : StatutEvt
}
class InscriptionEvenement {
+ statut : StatutInsc
}
class PaiementEvenement {
+ montantApplique : BigDecimal
}
}
package Solidarite {
class DemandeAide {
+ typeAide : TypeAide
+ statut : StatutAide
+ montantDemande : BigDecimal
}
class PaiementAide {
+ montantApplique : BigDecimal
}
}
package Docs {
class Document {
+ nomFichier : String
+ hashMd5 : String
}
class PieceJointe {
+ ordre : Integer
}
}
package Notifs {
class Notification {
+ typeNotification : TypeNotif
+ statut : StatutNotif
}
class TemplateNotification {
+ code : String
}
}
package Audit {
class AuditLog {
+ typeAction : TypeAction
+ severite : Severite
}
class ParametreSysteme {
+ cle : String
+ valeur : String
}
}
BaseEntity <|-- Organisation
BaseEntity <|-- TypeOrganisation
BaseEntity <|-- Adresse
BaseEntity <|-- Membre
BaseEntity <|-- Role
BaseEntity <|-- Permission
BaseEntity <|-- MembreRole
BaseEntity <|-- RolePermission
BaseEntity <|-- Paiement
BaseEntity <|-- Cotisation
BaseEntity <|-- PaiementCotisation
BaseEntity <|-- Adhesion
BaseEntity <|-- PaiementAdhesion
BaseEntity <|-- CompteWave
BaseEntity <|-- TransactionWave
BaseEntity <|-- WebhookWave
BaseEntity <|-- ConfigurationWave
BaseEntity <|-- CompteComptable
BaseEntity <|-- JournalComptable
BaseEntity <|-- EcritureComptable
BaseEntity <|-- LigneEcriture
BaseEntity <|-- Evenement
BaseEntity <|-- InscriptionEvenement
BaseEntity <|-- PaiementEvenement
BaseEntity <|-- DemandeAide
BaseEntity <|-- PaiementAide
BaseEntity <|-- Document
BaseEntity <|-- PieceJointe
BaseEntity <|-- Notification
BaseEntity <|-- TemplateNotification
BaseEntity <|-- AuditLog
BaseEntity <|-- ParametreSysteme
Organisation "1" *-- "0..*" Membre
Organisation "0..1" --o "0..*" Organisation
Organisation "1" *-- "1" TypeOrganisation
Organisation "0..1" --o "0..*" Adresse
Organisation "1" *-- "0..*" CompteWave
Membre "1" *-- "0..*" MembreRole
MembreRole "1" *-- "1" Role
Membre "0..1" --o "0..*" Adresse
Membre "0..1" --o "0..*" CompteWave
Role "1" *-- "0..*" RolePermission
RolePermission "1" *-- "1" Permission
Paiement "1" *-- "0..*" PaiementCotisation
Paiement "1" *-- "0..*" PaiementAdhesion
Paiement "1" *-- "0..*" PaiementEvenement
Paiement "1" *-- "0..*" PaiementAide
Paiement "0..1" --o "1" TransactionWave
Paiement "1" *-- "1" Membre
Cotisation "1" *-- "0..*" PaiementCotisation
PaiementCotisation "1" *-- "1" Paiement
Cotisation "1" *-- "1" Membre
Cotisation "1" *-- "1" Organisation
Adhesion "1" *-- "0..*" PaiementAdhesion
PaiementAdhesion "1" *-- "1" Paiement
Adhesion "1" *-- "1" Membre
Adhesion "1" *-- "1" Organisation
CompteWave "1" *-- "0..*" TransactionWave
TransactionWave "1" *-- "0..*" WebhookWave
WebhookWave "0..1" --o "1" TransactionWave
WebhookWave "0..1" --o "1" Paiement
CompteWave "1" *-- "1" Organisation
CompteWave "0..1" --o "1" Membre
JournalComptable "1" *-- "0..*" EcritureComptable
EcritureComptable "1" *-- "1..*" LigneEcriture
LigneEcriture "1" *-- "1" CompteComptable
EcritureComptable "0..1" --o "1" Paiement
EcritureComptable "1" *-- "1" Organisation
Evenement "1" *-- "0..*" InscriptionEvenement
InscriptionEvenement "1" *-- "1" Membre
InscriptionEvenement "1" *-- "1" Evenement
Evenement "1" *-- "1" Organisation
Evenement "0..1" --o "1" Adresse
Evenement "0..1" --o "0..*" PaiementEvenement
PaiementEvenement "1" *-- "1" Paiement
PaiementEvenement "1" *-- "1" InscriptionEvenement
DemandeAide "1" *-- "0..*" PaiementAide
PaiementAide "1" *-- "1" Paiement
DemandeAide "1" *-- "1" Membre
DemandeAide "0..1" --o "1" Membre
DemandeAide "1" *-- "1" Organisation
PieceJointe "1" *-- "1" Document
Document "0..1" --o "0..*" PieceJointe
PieceJointe "0..1" --o "1" Membre
PieceJointe "0..1" --o "1" Organisation
PieceJointe "0..1" --o "1" Cotisation
PieceJointe "0..1" --o "1" Adhesion
PieceJointe "0..1" --o "1" DemandeAide
PieceJointe "0..1" --o "1" TransactionWave
Notification "0..1" --o "1" TemplateNotification
Notification "1" *-- "1" Membre
Notification "0..1" --o "1" Organisation
AuditLog "0..1" --o "1" Membre
AuditLog "0..1" --o "1" Organisation
@enduml