gwift-book/source/part-4-go-live/gwift/specs.adoc

108 lines
4.5 KiB
Plaintext
Raw Normal View History

2020-02-17 20:45:39 +01:00
== Besoins utilisateurs
2015-11-06 12:13:23 +01:00
Nous souhaitons développer un site où un utilisateur donné peut créer une liste contenant des souhaits et où d'autres utilisateurs, authentifiés ou non, peuvent choisir les souhaits à la réalisation desquels ils souhaitent participer.
2015-11-06 12:13:23 +01:00
Il sera nécessaire de s'authentifier pour :
2020-02-17 20:45:39 +01:00
* Créer une liste associée à l'utilisateur en cours
* Ajouter un nouvel élément à une liste
2015-11-06 12:13:23 +01:00
Il ne sera pas nécessaire de s'authentifier pour :
2016-05-31 21:00:59 +02:00
2020-02-17 20:45:39 +01:00
* Faire une promesse d'offre pour un élément appartenant à une liste, associée à un utilisateur.
2015-11-06 12:13:23 +01:00
L'utilisateur ayant créé une liste pourra envoyer un email directement depuis le site aux personnes avec qui il souhaite partager sa liste, cet email contenant un lien permettant d'accéder à cette liste.
2016-05-31 21:00:59 +02:00
A chaque souhait, on pourrait de manière facultative ajouter un prix. Dans ce cas, le souhait pourrait aussi être subdivisé en plusieurs parties, de manière à ce que plusieurs personnes puissent participer à sa réalisation.
2015-11-06 12:13:23 +01:00
2016-05-31 21:00:59 +02:00
Un souhait pourrait aussi être réalisé plusieurs fois. Ceci revient à dupliquer le souhait en question.
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
== Besoins fonctionnels
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
=== Gestion des utilisateurs
2015-11-06 12:13:23 +01:00
Pour gérer les utilisateurs, nous allons faire en sorte de surcharger ce que Django propose: par défaut, on a une la possibilité de gérer des utilisateurs (identifiés par une adresse email, un nom, un prénom, ...) mais sans plus.
Ce qu'on peut souhaiter, c'est que l'utilisateur puisse s'authentifier grâce à une plateforme connue (Facebook, Twitter, Google, etc.), et qu'il puisse un minimum gérer son profil.
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
=== Gestion des listes
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Modèlisation
2015-11-06 12:13:23 +01:00
Les données suivantes doivent être associées à une liste:
2020-02-17 20:45:39 +01:00
* un identifiant
* un identifiant externe (un GUID, par exemple)
* un nom
* une description
* le propriétaire, associé à l'utilisateur qui l'aura créée
* une date de création
* une date de modification
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Fonctionnalités
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
* Un utilisateur authentifié doit pouvoir créer, modifier, désactiver et supprimer une liste dont il est le propriétaire
* Un utilisateur doit pouvoir associer ou retirer des souhaits à une liste dont il est le propriétaire
* Il faut pouvoir accéder à une liste, avec un utilisateur authentifier ou non, *via* son identifiant externe
* Il faut pouvoir envoyer un email avec le lien vers la liste, contenant son identifiant externe
* L'utilisateur doit pouvoir voir toutes les listes qui lui appartiennent
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
=== Gestion des souhaits
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Modélisation
2015-11-06 12:13:23 +01:00
Les données suivantes peuvent être associées à un souhait:
2020-02-17 20:45:39 +01:00
* un identifiant
* identifiant de la liste
* un nom
* une description
* le propriétaire
* une date de création
* une date de modification
* une image, afin de représenter l'objet ou l'idée
* un nombre (1 par défaut)
* un prix facultatif
* un nombre de part, facultatif également, si un prix est fourni.
==== Fonctionnalités
* Un utilisateur authentifié doit pouvoir créer, modifier, désactiver et supprimer un souhait dont il est le propriétaire.
* On ne peut créer un souhait sans liste associée
* Il faut pouvoir fractionner un souhait uniquement si un prix est donné.
* Il faut pouvoir accéder à un souhait, avec un utilisateur authentifié ou non.
* Il faut pouvoir réaliser un souhait ou une partie seulement, avec un utilisateur authentifié ou non.
* Un souhait en cours de réalisation et composé de différentes parts ne peut plus être modifié.
* Un souhait en cours de réalisation ou réalisé ne peut plus être supprimé.
* On peut modifier le nombre de fois qu'un souhait doit être réalisé dans la limite des réalisations déjà effectuées.
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
=== Gestion des réalisations de souhaits
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Modélisation
2015-11-06 12:13:23 +01:00
Les données suivantes peuvent être associées à une réalisation de souhait:
2020-02-17 20:45:39 +01:00
* identifiant du souhait
* identifiant de l'utilisateur si connu
* identifiant de la personne si utilisateur non connu
* un commentaire
* une date de réalisation
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Fonctionnalités
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
* L'utilisateur doit pouvoir voir si un souhait est réalisé, en partie ou non. Il doit également avoir un pourcentage de complétion sur la possibilité de réalisation de son souhait, entre 0% et 100%.
* L'utilisateur doit pouvoir voir la ou les personnes ayant réalisé un souhait.
* Il y a autant de réalisation que de parts de souhait réalisées ou de nombre de fois que le souhait est réalisé.
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
=== Gestion des personnes réalisants les souhaits et qui ne sont pas connues
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Modélisation
2015-11-06 12:13:23 +01:00
Les données suivantes peuvent être associées à une personne réalisant un souhait:
2020-02-17 20:45:39 +01:00
* un identifiant
* un nom
* une adresse email facultative
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
==== Fonctionnalités