-
Notifications
You must be signed in to change notification settings - Fork 0
0. RECAP Modelisation BDD et config SpringBoot
-
Schéma PostgreSQL
- Nom :
ticketflow - Gestion des migrations : Flyway
- Scripts :
-
V1: création du schéma -
V2: création des tables -
V3: clés étrangères -
V4: index -
V5: données initiales -
V6: vues SQL
-
- Nom :
- Table principale des utilisateurs.
- Colonnes :
-
id: identifiant technique auto-généré. -
firstname,lastname. -
emailunique. -
password_hash. -
phone. -
profile_picture_url. -
email_verified. -
status_id. -
created_at,updated_at. -
last_login_at.
-
Relations :
-
app_user -> user_status- Un utilisateur possède un statut.
-
app_user -> user_role- Un utilisateur peut avoir plusieurs rôles.
-
app_user -> ticket- Un utilisateur peut créer plusieurs tickets.
- Un utilisateur peut être assigné à plusieurs tickets.
-
app_user -> ticket_comment- Auteur de commentaires.
-
app_user -> ticket_attachment- Auteur des pièces jointes.
-
app_user -> ticket_history- Auteur des modifications.
- Liste des rôles disponibles.
- Exemples :
- USER
- SUPPORT
- ADMIN
- Table d'association N-N.
- Permet :
- Un utilisateur → plusieurs rôles.
- Un rôle → plusieurs utilisateurs.
Clé primaire :
(user_id, role_id)
- Statuts utilisateur.
- Exemples :
- ACTIVE
- DISABLED
- LOCKED
-
Stocke les tokens de validation email.
-
Relation :
- token → utilisateur.
-
Suppression :
-
ON DELETE CASCADE.
-
- Stocke les tokens de réinitialisation mot de passe.
- Relation :
- token → utilisateur.
- Suppression :
-
ON DELETE CASCADE.
-
Table centrale de l'application.
Colonnes :
idtitledescriptioncreator_idassignee_idstatus_idpriority_idcategory_id- dates :
- création
- modification
- fermeture
Relations :
-
Créateur :
ticket.creator_id -> app_user.id- Suppression utilisateur interdite.
-
Assignation :
ticket.assignee_id -> app_user.id- Suppression utilisateur :
- ticket conservé
- assignation supprimée (
SET NULL).
-
Statut :
ticket_status
-
Priorité :
ticket_priority
-
Catégorie :
ticket_category
Exemples :
- OPEN
- IN_PROGRESS
- CLOSED
Exemples :
- LOW
- MEDIUM
- HIGH
- CRITICAL
Contient :
- nom
- niveau de priorité.
Exemples :
- Bug
- Incident
- Demande
- Evolution
Commentaires sur un ticket.
Relations :
- ticket → commentaires :
- suppression cascade.
- auteur :
- utilisateur conservé.
Pièces jointes.
Stocke :
- nom fichier.
- chemin stockage.
- type MIME.
- taille.
Relations :
- ticket → pièces jointes :
- suppression cascade.
- uploader :
- utilisateur conservé.
Journal d'audit.
Stocke :
- utilisateur.
- action.
- champ modifié.
- ancienne valeur.
- nouvelle valeur.
- date.
Objectif :
- traçabilité complète.
Vue complète d'un ticket :
Retourne :
- informations ticket.
- statut.
- priorité.
- catégorie.
- créateur.
- assigné.
Retourne :
- commentaire.
- auteur.
- informations utilisateur.
Retourne :
- utilisateur.
- statut.
- rôle(s).
Utilise :
app_user
|
user_role
|
role
- Spring Boot 3.5.6
- Spring Web
- Spring Data JPA
- Spring Data JDBC
- Spring Security
- Validation
- PostgreSQL Driver
- Flyway
- Lombok
Exemple :
spring.datasource.url=jdbc:postgresql://localhost:5432/ticketflow
spring.datasource.username=<user>
spring.datasource.password=<password>Actif :
spring.flyway.enabled=true
spring.flyway.schemas=ticketflowRègles :
- Ne jamais modifier une migration déjà exécutée.
- Ajouter une nouvelle migration
Recommandé :
spring.jpa.open-in-view=falseSupprimer :
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialectHibernate détecte PostgreSQL automatiquement.
Créer les entités JPA :
AppUserRoleUserRoleUserStatusTicketTicketStatusTicketPriorityTicketCategoryTicketCommentTicketAttachmentTicketHistory
Créer :
-
AppUserRepository -
TicketRepository -
RoleRepository -
etc.
Remplacer la sécurité Spring par défaut.
Créer :
-
SecurityConfig -
UserDetailsService -
PasswordEncoder -
Gestion JWT
Flux :
Utilisateur
|
Login
|
Spring Security
|
Recherche app_user
|
Validation password_hash
|
JWT
Implémenter :
-
Inscription.
-
Hash mot de passe.
-
Validation email.
-
Connexion.
-
Modification profil.
-
Désactivation compte.
Implémenter :
-
Création ticket.
-
Consultation ticket.
-
Modification ticket.
-
Attribution ticket.
-
Changement statut.
-
Ajout commentaire.
-
Ajout pièce jointe.
-
Historisation.
Créer les contrôleurs :
-
/api/auth-
register
-
login
-
verify-email
-
reset-password
-
-
/api/users-
profil
-
modification
-
-
/api/tickets-
CRUD tickets
-
commentaires
-
pièces jointes
-
-
Base PostgreSQL : OK.
-
Migration Flyway : OK.
-
Modèle relationnel : OK.
-
Contraintes FK : OK.
-
Index : OK.
-
Vues SQL : OK.
-
Spring Boot démarre : OK.
-
Prochaine étape : implémentation du domaine Java + sécurité.