Playermodele - v-l-m/vlm GitHub Wiki
Cette page est destinée à décrire le modèle VLM de gestion des JOUEURS (=players) pour qu'ils puissent avoir plusieurs BATEAUX (=boats), ainsi que les modalités de migration de l'ancien modèle vers le nouveau.
#Etat des lieux, juin 2010
- un utilisateur un compte
- tout est dans la table user, hormis
- quelques préférences de cartes, qui sont associées à un idusers dans user_prefs
- les logs utilisateurs dans user_action
- les résultats aux courses, dans les tables races_results et waypoints_crossing
#Les inconvénients
- partage de mots de passe entre utilisateurs pour le boat-sitting
- mauvais principe de sécurité
- banalisation de certains compte
- déresponsabilisation des joueurs vis à vis de bateaux "commun"
- difficultés pour les équipes nombreuses pour identifier qui a fait un changement sur un bateau
- difficultés pour avoir une vision globale d'un joueur
- les joueurs ont plusieurs bateaux (plusieurs compte users)
- le nombre d'users n'est pas un indicateur fiable du nombre de joueurs
- il n'y a pas de lien entre les bateaux
- corollaires :
- l'adresse email n'est pas fiabilisée
- il est difficile d'offrir une interface multi-courses pour les joueurs
- il est difficile, sauf à multiplier les données, d'offrir une interface de communication
- impossible de consolider des classements...
- ...etc...
#Sémantique & conventions
- player skipper
- boat un bateau tel qu'actuellement
- boatpseudo = username tel qu'actuellement
- boatpassword = le mot de passe associé à l'username dans l'ancien mode.
- boatname = le nom du bateau (champ actuel)
- un idusers #
- un idplayers @
#Spec Générale / expression de besoin
- Un player_' a plusieurs (0..n) '_boats.
- Un boat appartient à UN player
- Un boat à 0..n boatsitter(s)
- Un boat a des préférences propres (carte, pavillon)
- Un joueur à des préférences propres (équipe, pays, email, ...)
- La transition doit être gérable pour les outils comme pour les joueurs.
#Contraintes / Questions
- minimiser les changements dans le modèle actuel
- laisser un chemin de migration aux outils
- permettre l'ancien mode as is
- générer un mot de passe automatique à la création d'un bateau "nouveau" et le stocker dans users
- cela permet aux anciens outils de fonctionner (le joueur leur fournit le mot de passe automatique)
- l'email utilisé comme identifiant de compte n'est pas celui exposé (ou pas) par le joueur vis à vis de l'extérieur.
- plus précisément : l'email identifiant n'est PAS modifiable et n'est JAMAIS affiché. OK
- donner aux joueurs la possibilité de regrouper eux même leurs bateaux.
- contrainte d'affichage; Dans les classements, on affiche le "nom du skipper" sur "bateau"
- Comment gérer les contraintes de longueurs de noms ? (on veut autoriser des noms poétique mais pas pourrir les classements avec...)
- L'identifiant le plus simple et le plus signifiant est une adresse email, qu'il faudra valider (par envoi d'un lien de confirmation).
- password hashé dans la base => OK en sha256
- Impact sur la récupération de mot de passe => Simple formulaire pour demander le réenvoi (c'est le ticket #404)
- Modalités pour les admins de pouvoir se connecter quand même sur le compte d'un user pour voir ce qu'il voit => oui
- Modalités pour un admin de faire un reset du password d'un boulet.
- besoin de tracer les player_action ?
- ajouter une colonne player dans le log user.
- intégrer la notion d'adresse de contact (VW, twitter, facebook, email, jabber, ...)
- faire un classement des players (décroissant par nombre de n°1, puis n°2 pour départager, etc...) et un nombre rapporté au nombre de participation (?)
- la gestion d'équipe
- la possibilité de simplement voir un bateau (i.e : un droit moins fort que le boatsitter qui peut aussi le diriger)
- préférences liées en fait au player (pavillon != pays, avatar, ...)
- la polaire est actuellement rattaché au boat et utilisée comme telle par le moteur. Ce qui fait qu'on peut techniquement avoir des boats de plusieurs catégories sur la même course.
- veut on garder cette possibilité ? pour l'instant : OUI, ne serait que pour l'IceBreaker.
- du même ordre, mais ce n'est pas contradictoire, veut on définir de façon définitive le type d'un bateau (ex : on construit un immoca, et ce sera un immoca pour toujours, comme en vrai ;))
- on verra plus tard :)
- gérer la préférence de langue et de native language (langage souhaité) dans players (c'est le ticket #96)
Le ticket #136 est à fermer à la fin de la feuille de route
- le ticket #357 est destiné à l'implémentation primaire (création de compte player, envoi du mail de confirmation)
- le ticket #210 pour l'interface pour changer le mot de passe
- le ticket #364 pour pouvoir rattacher un bateau, et les IHM permettant de visualiser le résultat
- le ticket #365 pour pouvoir se logguer dans le nouveau mode tout en gardant l'ancien mode, et pouvoir changer de bateau.
- le ticket #368 pour pouvoir créer un bateau en tant que player.
- le ticket #380 pour administrer les liens players / users et détecter les anomalies
- le ticket #210 : permettre au joueur de changer son mot de passe
- le ticket #404 (bien nommé !) : permettre au joueur de demander un nouveau mot de passe.
- le ticket #381 pour les WS (get) pour les fonctions ci-dessus
- le ticket #367 pour tracer les players actions.
- le ticket #377 pour les IHM de gestion du boatsitting (et modif de l'auth associé)
- le ticket #389 pour gérer le mode admin en tant que player
- le ticket #383 pour le nettoyage auto de la table players_pending
- le ticket #96 : pour enrichir les fonctionnalités de langue.
- le ticket #387 : pour enrichir les fonctionnalités de communication
- le ticket #323 pour le ws/playersetup
- le ticket #384 : affichage du nom du joueur et des boatsitters récents dans le palmares
- le ticket X pour blinder les contrôles lors de la création des nouveaux objets.
- le ticket #382 : distingo profile, results et palmares
- le ticket #154 : pour ajouter un tchat jabber intégré dans vlm
- le ticket X pour distinguer le pays du pavillon (?)
- le ticket X pour la gestion d'équipe
- le ticket X pour un classement par podium et par joueur