# Application de suivi des demandes client ## Objectif Implémenter une application de suivi des demandes client proposant les fonctionnalités suivantes: - Authentification par identifiant et mot de passe - Autorisation par rôles: - "client" - "développeur" - Interfaces pour le rôle "client": - Une interface de visualisation des projets qui lui sont associés - Une interface de création d'une nouvelle demande pour un projet donné - Une interface de visualisation des demandes en cours/cloturée pour un projet donné - Une interface de visualisation de détails d'une demande et des commentaires associés, avec possibilité d'ajouter un commentaire - Interfaces pour le rôle "développeur": - Une interface de création d'un nouveau projet - Une interface de création d'un nouveau compte client - Une interface de visualisation des clients (listing) - Une interface de visualisation des projets (listing) - Une interface de visualisation des dernières demandes ouvertes (multi-projet) - Une interface de visualisation de détails d'une demande et des commentaires associés, avec possibilité d'ajouter un commentaire et de changer l'état d'une demande ## Modèle de données ### User (`User`) #### Attributs - `id:int (unique)` Identifiant (clé primaire) de l'utilisateur - `username:string (unique)` Nom de l'utilisateur - `password:string` Mot de passe de l'utilisateur - `projects:[]Project` Projets associés à l'utilisateur ### Projet (`Project`) #### Attributs - `id:int (unique)` Identifiant (clé primaire) du projet - `name:string` Nom du projet - `users:[]User` Utilisateurs attachés au projet ### Demande (`Request`) #### Attributs - `id:int (unique)` Identifiant (clé primaire) de la demande - `title:string` Titre associé à la demande - `author:User` Auteur de la demande (clé étrangère) - `project:Project` Identifiant du projet associé (clé étrangère) - `status:RequestStatus` Identifiant du statut courant de la demande - `comments:[]Comment` Commentaire associé à la demande - `createdAt:Date` Date de la création du commentaire ### Statut de demande (`RequestStatus`) #### Attributs - `id:int (unique)` Identifiant (clé primaire) du statut de requête - `label:string` Label associé au statut ### Commentaire (`Comment`) #### Attributs - `id:int (unique)` Identifiant (clé primaire) du commentaires - `request:Request` Identifiant de la demande associé au commentaire (clé étrangère) - `text:string` Texte du commentaire - `createdAt:Date` Date de la création du commentaire - `author:User` Auteur du commentaire (clé étrangère)