react-logo/misc/projects/ticketing_app.md

71 lines
2.7 KiB
Markdown
Raw Normal View History

2020-02-17 22:28:57 +01:00
# 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
- Une interface de création d'une nouvelle demande pour un projet donné
- 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)