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@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