70 lines
2.6 KiB
Markdown
70 lines
2.6 KiB
Markdown
|
# 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)
|