Bonjour à tous,
Ci-dessous un draft des règles métiers de l'application Pollen pour la
version 2.
Si vous avez des remarques ou des ajouts à proposer pour les contraintes
sur les fonctionnalités, n'hésitez pas à modifier le fichier
dans src/site/fr/rst/business-rules.rst
Il y a pas mal de point de questionnement sur les fonctionnalités de
notifications enviseagables.
Cordialement,
Florian Desbois
---------8<---------------------------------8<-------------------------------------------8<-----------------------------------------------8<----------------------
Règles métiers
==============
:Author: fdesbois <pollen-devel(a)codelutin.com>
:Date: 2010-05-26
:Version: 1.0
Ce document a pour but de cataloguer l'ensemble des règles métiers de
l'application Pollen.
Ces règles dépendent principalement des options du sondage.
Avant-propos
------------
Pollen fonctionne via des urls générés pour l'accès au sondage. Ces urls
sont nécessaires lorsqu'une personne n'a pas de
compte utilisateur. Une classe correspond à cette uri pour Pollen :
PollUri. Elle contient à la fois l'uid (identifiant
unique) du sondage et celui d'un compte sondage (PollAccount). Ce
dernier peut correspondre au créateur du sondage ou à
un votant.
Options du sondage
------------------
- beginDate : date de début du sondage
* aucun vote possible avant cette date
- endDate : date de fin du sondage
* aucun vote possible après cette date
- maxChoiceNb : nombre de choix maximum par vote
* aucun vote possible avec plus de choix qu'indiqué par cette option.
* par défaut autant de choix sont possibles < nombre de choix du
sondage
* option utilisé uniquement pour un dépouillement NORMAL (trop
complexe pour CONDORCET, inutile pour POURCENTAGE et
NUMBER)
- closed : indique que le sondage est clos
* aucun vote possible
* aucune modification des votes existants possible
* aucune modification du sondage possible (choix, votants, options...)
* seul possibilité : lecture résultats et execution different algos
de dépouillement si possible (dépend du type de
dépouillement configuré dans le sondage)
- choiceAddAllowed : indique que l'ajout de choix est permis par les
votants uniquement
* la possibilité de voter dépend des dates du sondage et non celle
des choix
* la permission d'ajout de choix est fortement correlé aux dates
beginChoiceDate et endChoiceDate
* Note : attention au vote pendant l'ajout de choix : comportement
bizarre sur certains dépouillement (voir Ano
#139)
- anonymousVoteAllowed : indique que le vote peut etre anonyme
* les champs name, email et userAccount ne sont pas persistés
(restés à null)
* plus de notifications possibles par email
- anonymous : indique que le sondage reste anonyme (choix des votes et
nom des votants)
* idem que l'option précédent. Seule l'UI ne chargera pas les
valeurs des votes
- publicResults : indique que les résultats sont accessibles par
n'importe qui
* accès a la page de résultats pour tout le monde
* si l'option n'est pas enregistré, les résultats ne sont
accessibles que par le créateur du sondage : accès
restreint à la page des résultats (uid du créateur nécessaire).
* Note : il n'y a pas de juste milieu entre le créateur et le
visiteur, remarque seul un visiteur connaissant l'url
du sondage pourra accéder aux résultats.
- continuousResults : indique l'affichage en continu des résultats
* besoin de dépouillement à chaque vote
* les résultats sont obligatoirement publiques
- voteCounting : type de dépouillement
* Dépouillement POURCENTAGE : somme des choix = 100% / possibilité
de choix vide = 0
* Dépouillement NUMBER : uniquement nombre (entier ou non) /
possibilité de choix vide = null
* Dépouillement CONDORCET : uniquement des nombres entiers /
possibilité de choix vide = null
* Dépouillement NORMAL : uniquement des booléens (vrai/faux) /
possibilité de choix vide = null
- type : type de sondage
* Sondage restreint (RESTRICTED ou GROUP)
# accès du vote nécessitant un uid généré à la création du sondage
# possibilité de modifier/supprimer son vote
# email des votants obligatoires à la création du sondage
# liaison entre le votant et le compte utilisateur si connecté
(au moment du vote)
* Sondage libre (FREE)
# accès du vote libre
# possibilité de modifier/supprimer son vote avec l'uid généré
au moment du vote
# possibilité d'ajouter son email au moment du vote
# liaison entre le votant et le compte utilisateur si connecté
(au moment du vote)
- choiceType : type de choix (en attente)
- preventRules : notifications par email (voir plus loin)
- creator : Créateur du sondage (PollAccount)
* Sans compte utilisateur
# email non obligatoire
# envoie d'email si indiqué (au créateur et la/les liste(s)
restreinte(s))
* Avec compte utilisateur
# même possibilités que sans compte
# accès aux listes de favoris pour les sondages restreints
(RESTRICTED et GROUP)
# liaison physique entre le créateur (PollAccount) et
l'utilisateur connecté (UserAccount)
Validation du vote
------------------
- beginDate < now
- endDate > now
- closed = false
- uid de vote autorisé (RESTRICTED/GROUP)
- valeur des choix autorisé (dépend du type de dépouillement)
- nombre de choix < maxChoiceNb
Vote
----
- nom du votant
- email du votant (non obligatoire) : uniquement si le votant est non
connecté et sur un sondage FREE
- anonymousVoteAllowed: option anonyme disponible
Enregistrement du vote
----------------------
- anonymous/anonymousVoteAllowed : pas de sauvegarde nom/email/compte
utilisateur
- continuousResults : nécessite un depouillement
- type = FREE : génération de l'uid (nécessaire pour modification du vote)
- enregistrement flux RSS
- envoie email si disponible (PollAccount ou UserAccount)
Accès
-----
- Création du sondage : pollUri = null
- Modification du sondage : pollUri = pollUid / creatorUid ou ADMIN
- Suppression du sondage : pollUri = pollUid / creatorUid ou ADMIN
- Ajout d'un vote : pollUri = pollUid / participantUid
(RESTRICTED/GROUP) ou null (FREE)
- Modification d'un vote : pollUri = pollUid / participantUid ou ADMIN
- Suppression d'un vote : pollUri = pollUid / creatorUid ou ADMIN
- Ajout d'un choix : même chose que pour l'ajout d'un vote
- Suppression d'un choix : pollUri = pollUid / creatorUid ou ADMIN
- Modification d'un choix : fait à partir de la modification du sondage
- Ajout d'un commentaire : pollUri = pollUid / creatorUid ou
participantUid ou null ?
- Suppression d'un commentaire : pollUri = pollUid / creatorUid ou ADMIN
- Voir résultats : (PUBLIC_RESULTS = true) pollUri = pollUid
- Voir résultats : (PUBLIC_RESULTS = false) pollUri = pollUid /
creatorUid ou ADMIN
- Executer un dépouillement : pollUri = pollUid / creatorUid
Notifications
-------------
Deux modes de notification indépendants : email et rss.
- Création sondage : [email : createur / participants (RESTRICTED/GROUP)]
- Modification sondage : [email : participants ?]
- Gestion choix : [rss] [email : createur ? / participants ?]
- Vote : [rss] [email : createur (configuration) / participant non
connecté avec email (FREE)] --> Notifier
- Avant fin du sondage (background) : [email : participants sans vote
(RESTRICTED/GROUP)] --> Reminder
- Fin du sondage : [rss] [email : createur / participants]
- Execution premier dépouillement (PUBLIC_RESULTS &&
!CONTINUOUS_RESULTS) : [rss] [email : participants]
- Commentaire : [rss] [email : createur ? / participants ?]
Note :
Fusion possible entre fin du sondage et premier dépouillement pour
l'envoie d'email aux participants
Note :
Les cas avec des ? ne sont pas forcément utiles à cause du suivi rss