Closed memphis-tools closed 1 year ago
Mises à jour: tournament_controller: generate_tournament_from_json Une instance de classe tournament est crée en faisant le "unpacking" du dictionnaire issu de la lecture du fichier tournaments_db.json Telle que la classe a été définie ses attributs sont à mettre à jour après instanciation. Içi ce qu'il manquait c'est le current_match_id, il demeurait à 1 au lieu d'être incrémenté. Le bon déroulé de l'algo nécessite une correspondance réelle, afin de permettre les interruptions (ou exceptions) de saisie des scores. Dès qu'on avait au moins 4 joueurs, le problème pourvait s'observer. Les points de la base players_db.json étaient comptés en double, triple etc selon le nombre de rounds, 2, 3 etc, dans le cas d'interruption de saisie. class Tournament: ajout '"current_match_id": self.current_match_id'
tournament_controller - fonction update_tournament_database_with_matches_scores Rappel que tel que le fichier "tournaments_db.json" est structuré la liste des rounds, ainsi que les matches, n'ont pas d'id pysondb. L'update par id n'était pas possible. Certains de nos objets de gestion ne sont pas systématiquement les instances de classe, mais leur "représentation sous forme de listes, tuples ou de dictionnaires". Le cas demeure et est à reprendre pour amélioration. Içi la fonction cherche à travailler soit à partir d'une instance, ou d'une "représentation" pour laquelle une instance est créee : dans le second cas il manquait la bonne définition du match nul. Au lieu d'ajouter 0.5 points, on avait un joueur avec 0 pts et le second à 1.
L'application n'a été éprouvée qu'en mode mono-utilisateur. Il a été constaté que lorsque l'on crée plusieurs tournois (nombre rounds et/ou joueurs aléatoires) et qu'on fait évoluer leurs scores on pouvait parvenir à créer un déphasage. Nous sommes en mode console /terminal par défaut, avec une base de données type fichiers json, et un usage d'un package pysondb qui n'est plus mis à jour. Il semble qu'une saisie rapide des scores de tournois, en l'effectuant successivement aléatoirement pour x tournoi et n match, aie pour conséquence de créer un déphasage dans les scores totalisés pour les joueurs. On ne retrouve pas le total des points comptabilisés dans les tournois. Pour constater le cas il faut, être en mode console /terminal, aller vite dans la saisie, avoir crée 2 à 3 tournois et déclencher la création de round + mise à jour des scores de matches de manière aléatoire (passer d'un tournoi et/ou match à l'autre).
Une piste du déphasage serait la rapidité de saisie de l'utilisateur vs mise à jour des fichiers .json ? Cela ne semble pas lié à une saisie interrompue des scores d'un round. Le cas est présenté sous l'angle ci-dessus, mais peut être qu'il peut se remarquer en d'autres circonstances. En outre, il n'y pas de mécanismes type "sémaphore" mis en place. L'accès d'un processus à la base de données .json est concurrentiel sans priorité imposée.