Home / Forum / Suggestions / Tournoi à équipes, acte 2

Tournoi à équipes, acte 2

Bonjour, je lance une nouvelle discussion sur ce sujet pour deux raisons : la précédente devenait trop longue, et lorsqu'il y a plusieurs pages, le forum vous place sur la première page au lieu de l'avant-dernière afin d'ajouter un message, vous obligeant à atteindre manuellement la dernière page pour écrire. De plus, pour une raison quelconque, chaque fois que j'atteins la dernière page, il me demande à nouveau de me connecter pour pouvoir rédiger, et après l'avoir fait, je suis renvoyé vers la page d'accueil ! Pas mal, c'était le moment de commencer un nouveau fil.

Je voulais vous donner une nouvelle liste de considérations qui ont émergé lors des difficultés rencontrées pendant les inscriptions à notre dernier tournoi ; quand vous aurez du temps, jetez-y un coup d’œil et je pourrai détailler les raisons de chaque demande si nécessaire :


- « Ajouter joueur non apparié » doit permettre l'inscription uniquement sur le nom de famille, sans prénom.

- Lorsqu’on saisit quelques caractères dans « Ajouter joueur non apparié » et que des joueurs correspondant au filtre apparaissent, ajouter à l’information affichée l’année de naissance (champ « B-Year »).

- Le rating par défaut d’un joueur inexistant dans les listes FIDE doit être 1399.

- Lorsqu’on étend une équipe, permettre l’ajout d’un joueur non présent dans les listes FIDE via le nom de famille, et éventuellement prénom et Elo. De plus autoriser l'ajout d'un joueur depuis la liste des non appariés. Il doit donc y avoir 5 possibilités : depuis les joueurs de l’utilisateur (comme maintenant), depuis FIDE (comme maintenant), depuis FIDE ID (comme maintenant), depuis la liste des non appariés, et uniquement avec nom de famille, prénom et Elo. « Ajouter joueur » depuis la liste ou les non appariés doit permettre un filtre de recherche. À évaluer si le joueur ajouté à la volée par son nom de famille doit finir dans la liste des joueurs de l’utilisateur ; je pencherais plutôt pour oui.

- Lorsqu’on fait « Nouvelle équipe à partir des sélectionnés », le focus doit immédiatement se placer sur le champ du nom afin de pouvoir commencer à écrire tout de suite. C’est une règle d’or qui doit être appliquée partout, sans forcer l’opérateur à cliquer avec la souris dans le champ pour débuter.

- Il arrive parfois que FIDE ne sépare pas le nom de famille du prénom par une virgule, et donc si l’on ajoute un joueur depuis FIDE avec ces caractéristiques, même s’il est trouvé, il n’est pas possible de continuer car le prénom manque. Cela n'est clairement pas acceptable. On peut résoudre en « devinant » quel est le prénom et le nom de famille, mais ce n’est pas toujours simple. À mon avis, la meilleure solution est (comme indiqué au premier point) d’accepter l’inscription uniquement avec le nom de famille.

- Un nouveau rappel sur l’importation d’un fichier pour les inscriptions. Nous en avions parlé, mais je pense qu’il faudrait permettre une inscription en masse, du moins pour les joueurs non appariés. Ainsi, l’ajout des non appariés doit pouvoir accepter une liste de joueurs, depuis un fichier texte ou même juste depuis une zone où coller la liste. Le format à décider, mais à mon avis suffirait un format « NomDeFamille,Prenom,Elo », un par ligne. Ou, alternativement, la ligne devrait également permettre le FIDE ID (je ne crois pas qu’il existe des noms de famille composés uniquement de chiffres). À la fin de l’inscription en masse, il doit générer un rapport sur le nombre de lignes collées et combien de joueurs ont réellement été inscrits, en indiquant les lignes qui n’ont pas pu être traitées pour une raison quelconque (ex. FIDE ID inexistant ou parsing échoué). Il resterait à considérer si un nom de famille présent dans les listes FIDE peut être capturé par la liste elle‑même, mais cela risque de devenir compliqué (homonymes, parfois avec le même nom et prénom identiques, d’autres situations délicates). Mieux vaut garder simple, n’ajouter que le nom de famille. En l’absence de prénom, l’accepter sans prénom, et en l’absence d’Elo le fixer à 1399. Ainsi la ligne « Paperino,,1756 » ou « Paperino,Paolino » ou « Paperino » sont toutes valides.


Dis-moi, pouvons‑nous considérer le problème du double Bye et de l’impossibilité de générer le tour après le retrait d’une équipe entièrement comprise et résolu pour l’avenir ? Je te assure que c’était une situation vraiment désagréable… quand en plus du tournoi il y a les prix, la gens ne sont pas très compréhensives ! :)


Bonjour et merci comme toujours,

Claudio.

Voir l'original (IT)

bonjour @Claudio

merci comme toujours pour le retour détaillé et pour le temps que vous consacrez à faire tourner ChessPairings sur le terrain. Vos signalements après un vrai tournoi valent plus d’un millier de tests.

Je vais par points, en partant de votre question finale qui est la plus importante.

DES BUGS DE VOTRE TOURNOI (double bye et blocage après retrait)

Je vous dirai la vérité : je pense que oui, mais je n’ai pas une garantie à 100 %.

Voici ce qui s’est passé en coulisses :

1) Double bye : corrigé dans v4.7.2. La cause était dans le TRF que nous envoyions au moteur de jumelage bbpPairings — on déclarait le bye comme « match nul contre virtuel » plutôt que comme « bye attribué par le système », et ainsi le moteur n’avait aucun moyen de savoir qu’une équipe en avait déjà pris un. Désormais on utilise le marqueur correct (PAB) et bbp6 honore automatiquement la règle FIDE « pas de double bye ».

2) Génération du tour bloquée après retrait d’équipe : corrigé dans v4.7.6. Quand une équipe se retirait à mi-tournoi, le TRF généré contenait des références à cette équipe (parce que d’autres équipes l’avaient rencontrée) mais pas sa ligne d’en-tête, donc bbp6 échouait avec « Invalid line ». Désormais les équipes retirées sont incluses dans le TRF avec le drapeau XXZ qui les exclut du pairing mais préserve la cohérence de l’historique.

3) Simulateur de stress (v4.7.7) : nous avons ajouté un test automatique qui exécute 12 scénarios complets (y compris retrait d’équipe et double bye) avant chaque nouvelle version. Si l’un des deux bugs réapparaît, nous le remarquons avant le déploiement plutôt que pendant votre tournoi.

La confirmation sereine ne pourra être donnée qu’après qu’une ou plusieurs de vos compétitions réelles aient traversé ces situations sans incident.

Pour autant que les tests soient précis, la réalité est toujours plus créative.

Je suis vraiment désolé pour cette mauvaise expérience, je comprends qu’avec des prix en jeu il n’y a pas de marge de tolérance.


═══════════════════════════════════════════════════════════

SUR VOS 7 DEMANDES — disponibles dans v4.8.0 (release aujourd’hui)

═══════════════════════════════════════════════════════════


3 demandes sur 7 ont été implémentées. Voici le détail :


═══ ACCEPTÉES ═══


✓ B-Year dans les résultats de « Ajouter joueur apparié » : la recherche FIDE affiche désormais également l’année de naissance, tant dans le panneau des appariés que dans la recherche au sein des équipes. Cela aide énormément en cas d’homonymie.

✓ « Ajouter joueur » dans l’expansion équipe — 5 modes. J’ai refait complètement cette section. Vous trouverez maintenant un sélecteur à pilules horizontales avec cinq options :

1) De ma liste (avec filtre live)

2) Recherche FIDE (avec B-Year dans les résultats)

3) ID FIDE (textarea bulk, comme avant)

4) Appariés — sélection depuis la liste des appariés de ce tournoi, avec filtre

5) Manuel — Nom + Prénom + Elo optionnel, avec case à cocher « ajouter également aux joueurs de ma liste » activée par défaut

Chaque changement de mode met automatiquement le focus sur le premier champ (votre « règle d’or »). Plus besoin de cliquer obligatoirement pour commencer à taper.

Le joueur ajouté en mode « Manuel » apparaît dans votre liste (si la case est cochée). Si un joueur avec le même nom+prénom existe déjà, celui-ci est réutilisé plutôt que de créer un doublon.

✓ Importation bulk d’appariés

Dans le panneau des appariés il y a un nouveau bouton « Importer liste ». Il ouvre une textarea où vous pouvez coller un joueur par ligne au format :

Nom,Prénom[,Elo|ID_FIDE]


Exemples valides :

Rossi,Mario,1750 → Elo 1750
Verdi,Giovanni,12345678 → recherche FIDE (ID 8 chiffres ou plus)
Bianchi,M → Elo 0, prénom uniquement initiale
Neri,Anna → Elo 0


La règle : le troisième champ, s’il est numérique entre 0 et 3500, est lu comme Elo ; s’il est >3500, c’est un ID FIDE (et dans ce cas nom/prénom/rating sont pris depuis l’archive FIDE, ignorant ce qui a été saisi).

À la fin apparaît un rapport : lignes lues, joueurs inscrits, lignes rejetées avec motif pour chacune.

J’ai préféré garder cela uniquement en paste, pas de téléchargement de fichier, pour des raisons de sécurité.


═══ NON ACCEPTÉES ═══


✗ Inscription apparié avec seulement le Nom (sans Prénom)

Je préfère demander au moins la première initiale du prénom. Un nom seul risque de laisser des données trop dispersées et ambiguës (surtout en présence d’homonymies). La validation accepte « Rossi M. » ou « Rossi Mario », mais pas « Rossi » seul.

Pour la même raison, je n’implémente pas de correction pour les joueurs FIDE sans virgule entre nom et prénom — ce sont des cas sporadiques et tenter d’« deviner » la séparation introduirait plus d’erreurs que de corrections.

Dans ces cas, je vous conseille d’ajouter le joueur manuellement avec Nom + initiale.

✗ Elo par défaut 1399 pour les joueurs sans rating

La valeur 1399 est spécifique à la Fédération italienne, alors que ChessPairings est multilingue et utilisé aussi hors Italie. Le défaut est 0. Si le 1399 est important pour vos tournois, vous pouvez évidemment le saisir manuellement (même en bulk).

✗ Téléchargement de fichier pour l’import d’appariés

Seul paste dans textarea, pour des raisons de sécurité de l’application.


Lorsque vous essayez les nouveautés, faites-moi savoir comment ça se passe — surtout si vous trouvez un workflow gênant ou quelque chose à peaufiner.

Ah, et sur le forum : je prends note du problème de la dernière page qui revient à l’accueil après la connexion. Je m’en occupe séparément.

Bonnes compétitions !

Stefano


Modifié le 05/05/2026 08:16

Bonjour, je vous avais écrit la même analyse ennuyeuse, avec des statistiques sur les tableaux FIDE, mais quand j'ai cliqué sur « Publier la réponse », il m'a dit que je devais me connecter et j'ai tout perdu ! Pour une raison quelconque, le Forum perd parfois l'accès et demande à nouveau de se connecter. Je suis démoralisé d'avoir tout perdu (j'avais écrit beaucoup) et de ne pas avoir suivi ma règle de toujours copier le contenu du message avant d'essayer de le publier :( Patience, quand je retrouverai confiance dans le monde, je réessaierai.


Bonjour,

Claudio.

Ciao @Claudio

Ces derniers jours, il y a d’autres cinq tournois par équipes et je n’ai pas reçu de signalements (mais 5 sont peu nombreux et il ne faut pas supposer qu’il n’y en ait pas eu).

Bonjour @stefanoloberti,

Nous nous retrouvons encore une fois, et cette fois nous aurons bien trois tournois d’équipe (cette fois avec des équipes de trois joueurs), qui feront partie d’une combinaison. Actuellement je ne vois pas la possibilité de gérer même des combinaisons, avec des classements totaux des différents résultats dans les tournois individuels ; peut-être en parlerons-nous plus tard. Pour l’instant nous les traiterons comme trois tournois séparés ; mais voyez que déjà dans ce cas il serait utile de pouvoir dupliquer un tournoi, ou au moins d’effectuer une exportation des inscrits, qui à l’exception de quelques cas seront les mêmes pour les trois tournois… sinon nous devrons créer manuellement chaque tournoi individuel et inscrire à nouveau tous les joueurs du premier. Ce sera également un aspect que nous aborderons plus tard.


Comme d’habitude, je dois vous soumettre quelques remarques préliminaires et quelques demandes de clarifications, merci comme toujours.


- Dans les paramètres du tournoi, une fois les inscriptions ouvertes, on ne peut ni voir ni modifier les règles de l’élimination directe. Si je me souviens bien vous aviez mis cette possibilité à la fin du tournoi, mais je pense qu’il devrait être possible de le faire à tout moment, surtout avant que le tournoi commence.

- Bug : dans la « Liste des joueurs » (ceux de votre club pour l’illustrer), si on les sélectionne tous, puis essaie de les supprimer, il indique correctement qu’on veut les supprimer (en indiquant le nombre total), mais ne supprime ensuite qu’un seul !

- Comment peut-on télécharger le règlement du tournoi, afin que quelqu’un puisse le consulter avant l’inscription ?

- Peut-être que je ne vois pas, mais comment un non‑administrateur peut-il voir la liste des inscrits ? Il devrait y avoir un lien public pointant vers le tournoi, où l’on puisse visualiser ses caractéristiques, voir les inscrits, télécharger/visualiser le règlement, et pouvoir utiliser un lien pour s’inscrire. Est-ce que je ne vois pas quelque chose ou n’a-t‑il pas été prévu ?


Bonjour,

Claudio.

Bonjour @LTB aujourd’hui je serai en voyage à Bâle pour le Bundesturnier.


En train, je vais m’installer pour examiner les demandes en détail, même si je pense qu’avant d’introduire de nouvelles fonctionnalités il faudrait effectuer un test de charge afin de vérifier que ce qui est en production ne génère pas d’erreurs ou d’exceptions, afin d’éviter de laisser l’organisateur avec le problème brûlant de quelque chose qui ne fonctionne pas.


Petite note sur l’appel d’offres : celui-ci n’est pas téléchargeable (comme tout autre fichier), mais il y a un champ « notes » où vous pourrez écrire des informations, et ce qui en ressort est une page comme celle‑ci : https://my.chesspairings.org/pubblico/torneo.php?id=1381&token=10705c963d87ab2fac5f0dd8e104769b35dc66197c083d3606ec16cfe6561c56&tab=bando

Modifié le 13/05/2026 07:32

Bonjour Stefano,

Le problème est exactement celui-ci : comment le public peut-il visualiser ces informations pendant la phase d’inscription ? Si l’on se rend sur le lien public des inscriptions ouvertes, on ne voit que le bouton Standings, un bref « Standings not available yet », et rien d’autre (ex. https://my.chesspairings.org/pubblico/torneo_squadre.php?id=208&token=5f5b5aa47b850102f0424a8bad91d113bad9d40eff9fc4c3fb31bd8177241113)… l’onglet « Regulation/Bando » n’existe pas. La solution semble « simple », il faut activer les onglets « Participants » et « Regulations » même en phase d’inscription, sinon, je répète, comment les joueurs peuvent-ils voir ces informations ? C’est tellement important que j’ai vraiment le doute d’avoir raté quelque chose :)


Bonne chance pour Bâle !


Ciao,

Claudio.

Bonjour @LTB en effet dans la section tournoi par équipes cela n'est pas encore implémenté. Je m'en occupe maintenant

Ciao @LTB


Je passe en points, en commençant par la meilleure nouvelle : toutes les quatre plaintes que vous avez soulevées étaient confirmées dans le code, et elles sont résolues dans v4.8.9 (en ligne à partir d'aujourd'hui).


═══════════════════════════════════════════════════════════

VOS 4 PLAITES — résolues dans v4.8.9

═══════════════════════════════════════════════════════════


✓ Les suppléments non visibles/modifiables pendant les inscriptions


Confirmé : la carte « Configurer les suppléments » était enterrée dans l'onglet Classement, qui est cependant caché tant que le tournoi est en phase d'inscription (il n'y a pas encore de classement à afficher). Résultat : il n'y avait tout simplement aucun moyen d'y accéder.


Je l'ai déplacée dans l'onglet Paramètres, en bas. Maintenant elle est toujours accessible et modifiable quel que soit l'état du tournoi — inscriptions, en cours, terminé. Même drag & drop identique qu'avant, mêmes préréglages.


✓ Bug « supprime tous les joueurs du club » qui ne supprimait qu'un


Bug réel, et assez ridicule une fois compris : la page avait deux formulaires HTML imbriqués l'un dans l'autre (un pour la suppression massive, un dans chaque ligne de la table pour la suppression individuelle). Les navigateurs ferment automatiquement le formulaire externe dès qu'ils rencontrent celui interne — donc seule la première case à cocher finissait réellement dans le POST. Le message « voulez-vous supprimer N » était correct car compté côté JavaScript, mais ensuite le serveur ne recevait que 1. Corrigé.


✓ Chargement du règlement du tournoi


Techniquement le champ existait déjà (la textarea « Notes » dans les paramètres), mais avec ce nom générique personne ne pouvait deviner qu'il s'agissait du règlement public. J'ai renommé le champ en « Règlement / Notes du tournoi », avec un placeholder explicatif (date, lieu, prix, règlement, contacts…) et une ligne sous qui clarifie : « Sera affiché comme onglet Règlement dans la page publique du tournoi. »


✓ Vue publique pendant les inscriptions — le gros problème


Vous aviez raison sur toute la ligne : la page publique du tournoi à équipes avant les inscriptions affichait uniquement l'onglet Classement avec « Standings not available yet » et rien d'autre. Pas d'équipes inscrites, pas de règlement, aucun lien pour s'inscrire. Vous n'aviez rien perdu — c'était vraiment ainsi.


Maintenant la page publique du tournoi à équipes comporte :


- Onglet « Équipes » (toujours visible, avec compteur) → liste des équipes inscrites, chacune extensible pour voir le roster joueur par joueur (titre, nom+prénom, rating, ID FIDE, éventuelles réserves en bas). Pendant les inscriptions c'est l'onglet par défaut qui s'ouvre.


- Onglet « Règlement » → visible lorsque vous avez rempli les notes du tournoi.


- CTA vert en évidence « Inscrivez votre équipe » dans l'en-tête, lorsqu'il y a des inscriptions en ligne ouvertes. Avec compteur « N / max équipes inscrites » si vous avez défini un plafond.


- Onglet « Classement » / « Partenaires » → apparaissent lorsque le tournoi démarre (tour > 0).


- Badge d'état clair dans l'en-tête : vert « Inscriptions », LIVE animé quand le tournoi est en cours, gris « Terminé » à la fin du tournoi.



═══════════════════════════════════════════════════════════

DUPLICATION TOURNOI À ÉQUIPES═══════════════════════════════════════════════════════════


Vous avez dit « on traitera cela plus tard », mais puisque la duplication existait déjà pour les tournois individuels, reproduire le même modèle sur les tournois à équipes ne faisait qu'une matinée de travail. Donc c'est inclus.


Comment ça fonctionne :


Dans la liste de vos tournois à équipes il y a une nouvelle icône (feuille superposée, bleue) sur la droite de chaque tournoi. Cliquez → modal avec le nom prérempli comme « X (copie) » → confirmez → vous êtes dirigé

directement vers le nouveau tournoi.


Ce qui est copié :

• Paramètres complets (type, tours, échiquiers, cadence, couleur initiale, moteur, etc.)

• Configuration des suppléments (pour ne pas les refaire à chaque fois)

• Toutes les équipes actives (nom, sigle, capitaine, e‑mail du capitaine, numéro d'équipe de seed, rating moyen)

• Tout le roster de joueurs de chaque équipe, avec ordre des échiquiers et drapeau titulaire/réserve


Ce qui N'EST PAS copié (volontairement) :

• Résultats, parties, compositions des tours — le nouveau tournoi

commence vierge

• Équipes retirées

• Inscrits individuels encore en attente d'affectation

• Tokens publics et short code → ils sont régénérés à partir de zéro, ainsi les liens de la copie diffèrent de ceux de l'original


Le nouveau tournoi démarre dans l'état « inscriptions », tour 0, date d'aujourd'hui. De là vous le modifiez normalement (nom définitif, dates, éventuelles petites différences dans les rosters).


Pour votre combinaison de 3 tournois : créez le premier comme d'habitude, dupliquez deux fois, et en 30 secondes vous avez les 3 tournois prêts avec les mêmes joueurs. Économie estimée : une demi-heure pour chaque

tournoi que vous auriez dû réinscrire à la main.




Comme d'habitude, quand vous essayez les nouveautés faites-moi savoir comment ça se passe — même juste « ok fonctionne » est précieux, car cela confirme que le correctif tient sur le terrain et pas seulement dans mes tests. J'ai essayé de gérer ce flux (pas d'autres du tournoi à équipes) et je n'ai trouvé aucune erreur.


Bon tournoi (à tous les tournois, en fait !),


Stefano


Génial, tout semble bien dirigé, merci ! Je suis perplexe quant à la volonté de ne pas copier les joueurs non appariés lorsqu'on duplique le tournoi, mais cela pourrait aussi fonctionner... je les aurais eux aussi dupliqués, ce serait pratique pour dupliquer un tournoi (en faire une capture d'écran) avant de composer les équipes.

Enfin, il serait pratique qu'un éventuel lien dans la section Notes/Réglement/Ban réponde à un clic, afin que si on insère un lien vers son propre règlement (ou n'importe quoi d'autre) l'utilisateur puisse y accéder en cliquant dessus. Pour le moment tout est en texte brut.


Salut,

Claudio.

Ciao @LTB le texte brut (sans HTML) est plus sûr pour éviter les injections de liens malveillants pouvant déclencher des alertes sur le domaine.


Il y a près d’un millier d’utilisateurs et chaque jour 1000 appariements sont générés, la sécurité est donc très importante.

@LTB j’ai résolu le bug du forum de déconnexion

Génial ! Mais le chemin du succès est pavé de difficultés et d’utilisateurs casse-pieds ! Voici une autre avalanche de considérations, obtenues lors de tests pour éviter d’avoir à faire les tours à la main pendant les prochains tournois :) Parmi les remarques, certaines sont purement esthétiques et d’autres discutables, la plus importante concerne la possibilité de modifier les paramètres du tournoi à tout moment :


Inscriptions :

- La page publique du tournoi devrait permettre d’étendre ou de réduire toutes les équipes, comme tu l’as fait pour la page admin.


Tours :

- L’affichage des tours est « mauvais », il faudrait essayer de rendre les champs alignés. La vue étendue va bien, mais la vue compacte a tous les résultats désalignés. Même l’impression du tour devrait avoir la colonne « RÉSULTAT » centrée par rapport à la page. La page publique des abbinements est également désalignée.

- À mon avis, lorsqu’on clique sur « Lancer tournoi », cela devrait automatiquement générer le premier tour ; je trouve redondant le bouton « Générer Tour ». Si l’objection est que cela permet de faire un tour manuel, cette possibilité existe déjà une fois le tour généré, il n’est pas nécessaire de demander à l’utilisateur de générer le tour.

- La gestion des formations doit être affinée… elle fonctionne très bien lors de l’inscription (il suffit de déplacer les joueurs avec la souris), mais pendant le tournoi ce n’est pas clair. Prenons un cas pratique : je me trompe et lance le tournoi avec une formation incorrecte. Je fais le premier tour, et au moment d’entrer les résultats je réalise qu’une formation est erronée, mais heureusement il y a le bouton « Gérer Formation » :) Alors je la change (et déjà ici le changement est beaucoup moins efficace, il m’oblige à mettre temporairement une case vide, puis à jouer un jeu de trois cartes pour corriger la formation finale). Je fais « Confirmer Formation » et tout va bien. J’insère mes résultats (encore une fois, le sens du bouton « Sauvegarder Résultats » n’est pas clair, il semble redondant…). Je génère le nouveau tour, et on me remet la formation initiale. Cela pourrait être acceptable, mais comment puis-je changer définitivement une formation jusqu’à la fin du tournoi ? Alors je vais dans « Formations », où je peux changer la formation (avec un système encore différent, qui te laisse aussi mettre deux fois le même joueur, puis ne fait pas passer « Sauvegarder Formation » ; il faut uniformiser la méthode de changement). Je reviens aux « Abbinements », mais la modification n’existe plus, et je devrais la changer à nouveau là-bas (car si j’efface et recrée le tour, la modification faite dans « Formations » est perdue. Pire encore : retourné au premier tour, je change la formation du tour 1, génère le tour 2, et on me remet la formation initiale, dont il n’y a plus aucune trace partout ! En bref, à mon avis il faudrait pouvoir changer temporairement une formation lors de l’introduction des résultats (en uniformisant la modalité de changement), ce qui est bien, mais cela devrait aussi me permettre de modifier une formation de façon stable pour les tours suivants. Je rappelle que pendant le dernier tournoi c’est exactement ce qui s’est passé : une équipe avait été insérée avec une mauvaise formation, et à chaque tour il fallait manuellement se souvenir de changer la formation avant d’insérer les résultats.

- Nous l’avions déjà vu dans les tournois individuels, mais dans ceux en équipes je ne trouve pas la possibilité de modifier le tournoi pendant les tours (ex. le nombre de tours, ou les méthodes de tie‑break). C’est particulièrement grave parce que si tu démarres un tournoi avec un nombre de tours excessif par rapport aux joueurs, tu ne peux plus sortir : même en laissant faire, tu arrives au point où tu es bloqué avec le message « Pairing engine error : Error while pairing /tmp/....trf. No valid pairings exists… etc. ». Le message d’erreur du moteur de mise en paire pendant un tournoi *ne doit pas* se produire, il doit être prévenu ! Et dans ce cas tu n’as même pas moyen de t’en sortir ! Les paramètres du tournoi doivent toujours être accessibles du début à la fin.


Fin du tournoi :

- Le classement final comprend à la fois celui des équipes et celui par case, mais l’Export (PDF, CSV, etc.) ne contient que le classement d’équipe et il n’y a pas celui par case. Soit on le met en file d’attente avec le classement d’équipe, soit on fournit un bouton spécifique pour l’exporter. De plus le classement par case n’utilise aucun tie‑break, il faudrait les prévoir là aussi.


Bonjour,

Claudio.

bonjour @LTB

solide batterie de retours, toujours avec l’avantage d’être venue de la salle de tournoi et non d’un test en laboratoire — merci.

La v5.4.0 est en ligne aujourd’hui et contient cinq des six points que vous avez soulevés. Le sixième (le démarrage qui génère aussi le tour 1) je l’ai laissé de côté volontairement.


Je passe par les points en suivant la structure de la réponse.

═══════════════════════════════════════════════════════════

INSCRIPTIONS — agrandir/réduire page publique

═══════════════════════════════════════════════════════════

✓ Fait.

Sur la page publique du tournoi par équipes, au-dessus de la liste des équipes, il y a maintenant les deux boutons « Agrandir tout » / « Réduire tout » identiques à ceux de l’admin. Les petits triangles sur les

de chaque équipe continuent de fonctionner indépendamment, vous pouvez donc ouvrir uniquement les équipes qui vous intéressent ou toutes en une fois, comme vous préférez.

═══════════════════════════════════════════════════════════

TURNS — alignements

═══════════════════════════════════════════════════════════

✓ Fait sur les trois fronts que vous avez signalés.

  1. Vue compacte des correspondances (admin) — le problème était que la ligne de l’en-tête de carte se comportait comme un espace « flex » libre : si une équipe avait un nom plus long qu’une autre, le score à droite glissait de quelques pixels. Je l’ai converti en grille avec colonne de score fixe et chiffres tabulaires (donc « 1.5 - 0.5 » et « 2 - 0 » occupent la même largeur). Maintenant les résultats sont alignés même en défilement vertical.
  2. Impression du tour — la colonne RÉSULTAT avait une largeur de 55 px, trop pour « ½-½ ». Elle est portée à 78 px, table-layout fixe, vertical-align middle. La ligne respire maintenant et est symétrique par rapport à la page.
  3. Page publique des correspondances — la grille était rigide et les noms longs brisaient l’alignement. Réécrite avec colonnes nommées et minmax(0, 1fr) sur les noms, tabular-nums sur le rating et le résultat.


Pendant que je travaillais dessus, j’ai aussi trouvé un bug que vous n’aviez pas signalé mais qui se manifestait : dans l’export TXT du classement des équipes, la ligne « LTBagna Càuda » était décalée d’un caractère par rapport aux autres. Cause : le « à » est 2 octets UTF‑8 et PHP comptait les octets plutôt que les caractères lorsqu’il faisait le padding de la colonne. J’ai remplacé sprintf par mb_str_pad. La ligne est maintenant droite.

═══════════════════════════════════════════════════════════

TURNS — gestion des formations

═══════════════════════════════════════════════════════════

✓ Fait l’essentiel. Je n’ai pas unifié les trois UI sous un seul composant (ce serait trop invasif pour le moment), mais j’ai résolu le problème fonctionnel que vous décrivez.

L’exemple que vous me racontiez — « une équipe part avec la mauvaise formation, à chaque tour je dois m’en souvenir et la corriger manuellement » — est maintenant géré ainsi :

  1. Dans chacun des trois points où vous pouvez aujourd’hui modifier une formation (drag&drop lors de l’inscription, onglet Formations, « Gérer Formation » pendant un tour) il y a une case à cocher sous la formation : « ☐ Appliquer également comme formation par défaut pour les prochains tours ». Si vous laissez vide, la modification vaut uniquement pour ce tour (comportement actuel, utile pour le cas « aujourd’hui je garde X sur le banc parce qu’il avait de la fièvre »). Si vous cochez, la modification devient aussi la NOUVELLE formation par défaut : l’effectif est réordonné (scacchiera_default mise à jour) et tous les tours futurs partiront de là plutôt que de l’ordre initial.
  2. Validation anti‑duplication côté serveur partout. Avant, l’onglet « Formations » vous permettait d’ajouter le même joueur sur deux échiquiers puis d’échouer à la sauvegarde de façon peu claire. Maintenant dans les trois flux (impostaFormazione, aggiornaFormazioneDefault, rigeneraPartiteMatch du match en tour) on refuse avec un message explicite : « Le même joueur est assigné à deux échiquiers (1 et 2). Corrigez la formation avant de sauvegarder. »


En résumé : pendant le tournoi, si au tour 2 vous réalisez que la formation d’une équipe était mauvaise, cochez une fois la case et à partir des tours 3‑4‑5 la bonne est prise. Plus de « se souvenir à chaque tour ». En unifiant graphiquement les trois UI sous un seul composant drag&drop je reviendrai peut‑être plus tard, mais la valeur est déjà présente dans la version actuelle.

Concernant le « Sauvegarder résultats » qui vous semblait redondant : l’étiquette n’est pas optimale, je l’ai laissée parce que le bouton fait le commit définitif des résultats qui jusqu’à ce moment sont en autosave (l’historique est mis à jour uniquement au clic). Mais vous avez raison qu’on ne comprend pas très bien. J’y réfléchis.

<...

ciao @LTB

solita batteria di feedback solida, sempre con il vantaggio di venire dalla sala torneo e non da un test in laboratorio — grazie.

La v5.4.0 è online da oggi e contiene cinque dei sei punti che hai sollevato. Il sesto (l'avvio che genera anche il turno 1) l'ho lasciato fuori per scelta.

Ciao Stefano,

Wow! Così tante cose indirizzate in così poco tempo... complimenti!

C'è ancora qualche inezia grafica, ma le indirizzeremo risolte le cose importanti! :)


Una piccola apperente dimenticanza: prendo ancora il Pair Engine Error se modifico il numero turni a torneo in corso... accetta un numero esagerato, e poi quando non riesce più a generare il turno viene fuori il messaggio. Ma mi lascia generare un turno manuale senza fiatare (e questo va bene, lasciamolo, se non crea altri mal di pancia lasciamolo).


Secondo me poi dovresti dare la possibilità di riaprire un torneo concluso, al momento non pare esserci la possibilità. Ti faccio un caso pratico, metto dentro l'ultimo turno, concludo il torneo e pubblico la classifica; salta fuori tizio che dice che il suo risultato dell'ultimo turno è sbagliato! Cosa faccio?


Mi sono accorto anche che posso ritirare una squadra, ma non sono in grado di aggiungere una squadra a torneo iniziato; se mi arriva un ritardario che voglio fare entrare dal secondo turno che faccio?


Per il resto molto bene! Adesso, per gestire la nostra combinata, ho realizzato una piccola applicazione web, dove gli posso dare in pasto le classifiche esportate "TXT (Report)" (che sono utili come l'oro), le analizzo e faccio la classifica combinata dei vari tornei, pesando i risultati in base al numero di turni del singolo torneo. Se se interessato a vederlo al momento l'ho parcheggiato su un mio spazio web, ti posso inviare in privato l'URL. Al momento mi calcola solo le classifiche delle squadre, ma adesso che mi hai aggiunto le classifiche di scacchiera nell'export aggiungo anche quelle (spero non mi cambierai il layout a breve...). Magari un giorno riuscirai anche ad implementare il concetto di combinata.


Ciao @LTB


grazie per la risposta e per essere tornato sui punti aperti con la solita precisione. Vado per i tre temi che hai sollevato, più una nota a piè di pagina sulla combinata.


═══════════════════════════════════════════════════════════

PAIRING ENGINE ERROR — chiuso davvero, stavolta (spero)

═══════════════════════════════════════════════════════════


✓ Fatto. Avevi ragione: nonostante il fix v5.4.0 lo prendevi ancora. Ho fatto autopsia e trovato due falle che si erano insinuate:


(1) Il salvataggio impostazioni accettava qualsiasi `num_turni` nel range 1-30 senza controllare il massimo teorico Swiss per le squadre attive. Quindi se mettevi "20 turni" con 6 squadre il salvataggio passava liscio e ti ritrovavi nel dead-end quando il motore arrivava al limite.


(2) Il fallback che intercettava l'errore tecnico per riformularlo user-friendly matchava solo la stringa "no valid pairings". Se bbp6 restituiva "Pairing engine error" alla lettera (o "Cannot pair", o altre formulazioni interne), il messaggio criptico passava intatto.


La cosa interessante della tua osservazione è la frase "ma mi lascia generare un turno manuale senza fiatare, e va bene, lasciamolo". Te l'ho presa come specifica esplicita: il punto NON è impedirti di salvare num_turni alti — quello ti taglierebbe via la valvola di sfogo del pairing manuale. Il punto è non farti finire davanti a un errore criptico.


Quindi ho strutturato il fix in tre livelli:


• Salvataggio impostazioni: se metti `num_turni > max_teorico` con torneo in corso, il salvataggio passa, ma compare un warning giallo: "Attenzione: con 6 squadre attive il pairing automatico copre al massimo 5 turni. I turni eccedenti andranno generati manualmente." Lo vedi e sai cosa aspettarti.


• Pairing automatico (Genera turno): blocca con un messaggio che esplicita la via d'uscita — "Pairing automatico esaurito per 6 squadre attive (massimo teorico 5 turni). Usa 'Pairing manuale' per generare turni aggiuntivi, oppure riduci num_turni a 5 e concludi il torneo." Niente più dead-end senza istruzioni operative.


• Pairing manuale: nessun blocco, mai. Esattamente come chiedevi.


Inoltre, indipendentemente dai tre livelli sopra, ho allargato il catch sull'errore del motore in modo che intercetti anche "Pairing engine error" alla lettera e qualsiasi altra formulazione tecnica generica. Se per qualunque motivo bbp6 fallisce per altre cause (per esempio vincoli di colore irrisolvibili al turno 3 con max teorico 5), invece di propagarti la stringa cruda vedi: "Il motore di pairing non è riuscito a generare il turno (...). Possibili cause: troppi turni per le squadre attive, vincoli di colore irrisolvibili. Puoi usare 'Pairing manuale' oppure ridurre num_turni e concludere."


In due parole: "Pairing engine error" e amici non dovrebbero mai più raggiungere l'arbitro in sala. Mai più davvero, stavolta.


═══════════════════════════════════════════════════════════

RIAPRI TORNEO CONCLUSO — fatto

═══════════════════════════════════════════════════════════


✓ Fatto. Il tuo caso pratico è perfetto come specifica: arbitro conclude il torneo, pubblica la classifica, salta fuori un risultato dell'ultimo turno sbagliato. Adesso c'è una via legittima.


Nel torneo a squadre concluso, accanto allo step finale del torneo trovi un bottone giallo "Riapri Torneo" con conferma esplicita — lo vedi e sai cosa aspettarti.


═══════════════════════════════════════════════════════════

SULLA TUA APP DI COMBINATA

═══════════════════════════════════════════════════════════

Ciao @LTB


grazie per la risposta e per essere tornato sui punti aperti con la solita precisione. Vado per i tre temi che hai sollevato, più una nota a piè di pagina sulla combinata.


═══════════════════════════════════════════════════════════

PAIRING ENGINE ERROR — chiuso davvero, stavolta (spero)

═══════════════════════════════════════════════════════════


✓ Fatto. Avevi ragione: nonostante il fix v5.4.0 lo prendevi ancora. Ho fatto autopsia e trovato due falle che si erano insinuate:


(1) Il salvataggio impostazioni accettava qualsiasi `num_turni` nel range 1-30 senza controllare il massimo teorico Swiss per le squadre attive. Quindi se mettevi "20 turni" con 6 squadre il salvataggio passava liscio e ti ritrovavi nel dead-end quando il motore arrivava al limite.


(2) Il fallback che intercettava l'errore tecnico per riformularlo user-friendly matchava solo la stringa "no valid pairings". Se bbp6 restituiva "Pairing engine error" alla lettera (o "Cannot pair", o altre formulazioni interne), il messaggio criptico passava intatto.


La cosa interessante della tua osservazione è la frase "ma mi lascia generare un turno manuale senza fiatare, e va bene, lasciamolo". Te l'ho presa come specifica esplicita: il punto NON è impedirti di salvare num_turni alti — quello ti taglierebbe via la valvola di sfogo del pairing manuale. Il punto è non farti finire davanti a un errore criptico.


Modifié le 17/05/2026 10:43

Bonjour Stefano,

J’ai essayé les modifications. La possibilité de rouvrir le tournoi fonctionne, et je vous assure qu’il s’agit d’une sauvegarde indispensable !

- Pair Engine Error : je confirme que les messages semblent maintenant être capturés et reformatés… peut-être pourrait-on dire que le temps nécessaire pour afficher le long et compliqué message rend difficile sa lecture ; un tel message (qui provoque probablement la panique) devrait demander une confirmation avant de continuer. Mais il y a une étrange obstruction : avec un tournoi à 6 équipes de trois membres chacune, même si le programme accepte un nombre de tours supérieur à 5, il ne semble pas possible d’aller au-delà du troisième tour (au lieu du cinquième comme l’indique la logique). Pouvez‑vous vérifier s’il est réellement le bbp6 qui fait des caprices, ou s’il y a une autre raison ? Si je supprime tous les tours (opération un peu longue si le nombre de tours est élevé) et que je change le tournoi de Swiss à Round Robin (même si le programme accepte un nombre de tours incongru… il faudrait, dans le cas du round robin, « griser » le nombre de tours à n‑1. En effet, silencieusement, le programme modifie le nombre de tours à n‑1 dès que vous lancez le tournoi, même si vous aviez entré un autre nombre), le tournoi se termine normalement avec 5 tours. Désolé pour l’usage excessif des parenthèses pour décrire les situations, mais je rédige pendant que j’essaye.

- Inscription tardive : je comprends les implications. Le tour de passe‑temps du Place Holder n’est pas simple, et vous devriez toujours le prévoir à l’avance :) Voyons si le PoC parvient à valider l’introduction d’une nouvelle équipe à tout moment…


Suggestion : dans la « Impression du tour », que l’arbitre utilise généralement pour imprimer et coller les tours, ajoutez en haut à droite un QR Code qui pointe vers la page publique du tournoi, afin que quiconque le souhaite puisse le scanner et voir les tours sur son téléphone, y compris les suivants…


Bonjour,

Claudio.

bonjour @LTB

tout d’abord la chose importante : le blocage sur votre Swiss à 6 équipes je l’ai identifié et corrigé. Il passe en v5.5.1, je vous explique ci-dessous. Pour les autres points je réponds par ordre.


═══════════════════════════════════════════════════════════

BÉRÈCHE BLOQUANTE — 6 ÉQUIPES S'ARRÊTENT À LA RONDE 3 (CORRECTION v5.5.1)

═══════════════════════════════════════════════════════════

✓ Fait. Et vous aviez raison sur le soupçon « bbp6 fait des caprices » : l’auteur du problème était bien bbp6, mais à cause d’une information erronée que nous lui transmettons.

Cause première : dans le TRF que nous envoyons au moteur il y a un enregistrement (XXR) qui déclare combien de rondes durera la compétition. Si vous mettez num_turni=7 avec 6 équipes, nous écrivions « XXR 7 » exactement. bbp6 à ce moment-là fait un lookahead : il voit que le maximum théorique d’un Swiss à 6 équipes est N‑1 = 5 rondes distinctes, calcule qu’après la ronde 3 il ne reste plus que 2 rondes pairables contre les 4 déclarées, et refuse les abbinements dès la ronde 4 avec « no valid pairings ». Ce n’est pas un caprice, c’est justement conforme à FIDE : le moteur ne veut pas s’engager à commencer une compétition qu’il sait ne pouvoir pas terminer.

Solution : dans le TRF on limite XXR au max théorique (5 dans votre cas) AVANT de l’envoyer à bbp6. Le num_turni que vous avez défini pour la compétition reste inchangé dans la base — donc les rondes supplémentaires peuvent toujours être générées manuellement, exactement l’intention de v5.5.0. Simplement bbp6 ne voit que ce qu’il peut compléter automatiquement.

Conséquence pratique pour vous : votre Swiss à 6 équipes vous sera pairée jusqu’à la ronde 5 sans accrocs, quel que soit le num_turni que vous avez défini (5, 6, 10, 30 — peu importe). Les rondes 6+ continuez à les générer à la main si besoin.

Tests automatiques écrits pour sécuriser : 4 scénarios (cap pair, cap impair avec équipe retirée, no‑cap quand num_turni est déjà dans la plage), tous passent.

═══════════════════════════════════════════════════════════

ROUND ROBIN — num_turni silencieux (reporté, non bloquant)

═══════════════════════════════════════════════════════════

Vous avez raison : dans le Round Robin la valeur num_turni est en fait inutilisée (l’algorithme Berger fixe toujours N‑1 pour N pair, N pour N impair). Mais aujourd’hui le champ est un input libre, et c’est déroutant.

Je l’inscris à la liste pour la prochaine mise à jour (v5.5.2 ou v5.6) : quand type_torneo='round_robin' le champ num_turni devient désactivé/grisé et se met automatiquement à N‑1 (ou N avec BYE) dès que vous changez le nombre d’équipes, avec un petit tooltip expliquant pourquoi.

Je ne l’ai pas mis en v5.5.1 car c’est une amélioration UX cosmétique et la correction ci-dessus était urgente : mieux vaut ne pas ralentir.

═══════════════════════════════════════════════════════════

ERREUR DU MOTEUR — le message disparaît trop vite

═══════════════════════════════════════════════════════════

Centré. Aujourd’hui c’est un flash jaune/rouge qui se dissipe, mais si l’arbitre est dans la salle et qu’il y a une dizaine de joueurs qui demandent « quand on part ? », ce message ne le lit pas.

En v5.5.2 (ou v5.6) je le transforme en modal avec confirmation explicite « J’ai compris » pour les erreurs du moteur de pairing. Les autres flashs informatifs restent tels quels — je ne veux pas alourdir l’UX sur des choses routinières, mais sur l’erreur du moteur de pairing oui, elle doit être insistante.

═══════════════════════════════════════════════════════════

QR CODE DANS L'IMPRESSION DE RONDE — c’est déjà là !

═══════════════════════════════════════════════════════════

Bonne nouvelle : le QR code dans « Impression de ronde » est en production depuis un moment, tant pour les compétitions individuelles que pour celles à équipes. Vous le trouvez en haut à droite sur l’impression A4. Il pointe directement vers la page publique du tournoi, où les joueurs voient les abbinements et le classement en temps réel.

La raison pour laquelle vous ne l’aviez peut-être pas vu : il apparaît UNIQUEMENT si le tournoi a la visibilité publique activée (et donc un token_publique généré). Si dans les paramètres du tournoi vous laissez « privé », le QR n’est pas imprimé (ce serait inutile, la page ne serait pas accessible).

Donc :

  1. Allez dans Paramètres du tournoi
  2. Visibilité → « Public »
  3. Sauvegarder
  4. Re‑imprimez la ronde → le QR code apparaîtra en haut à droite


Si vous vouliez plutôt un QR sur le formulaire d’inscription ou sur le classement, dites-le moi et je l’ajoute là.

═══════════════════════════════════════════════════════════

INSCRIPTION DES RETARDÉS — PoC en cours

═══════════════════════════════════════════════════════════

Je confirme que le PoC dont je vous parlais dans v5.5.0 donne des signaux positifs (Z et SHORT fonctionnent tous les deux avec bbp6). Je l’inclurai dans v5.6 quand il sera intégré proprement dans le formulaire « Ajouter équipe à tournoi en cours ». Vous avez raison que c’est un appui — la réalité est qu’à moins de v5.6, c’est la seule voie certaine, et je m’en excuse.

═══════════════════════════════════════════════════════════


En résumé :

• v5.5.1 (aujourd’hui) : correction du bug 6 équipes, c’est le point bloquant

• v5.5.2/v5.6 (bientôt) : RR grisé, modal confirmation erreur moteur

• v5.6 : inscription des retardés à partir du PoC validé


Quand vous avez un moment, réessayez votre Swiss à 6 équipes avec le num_turni que vous voulez : il doit avancer jusqu’à la ronde 5 sans plus d’« Erreur moteur de pairing » ni arrêt à la ronde 3. Faites-moi savoir comment ça se passe.


Bonjour Stefano,

je suis content que nous ayons trouvé ce « bug » dans l’alimentation de bbp6, c’était plutôt sournois ! Et j’ai vu que tu as désormais la version 5.6.3. J’ai essayé, mais le Générateur de Tour échoue avec le même message (cette fois en modal). J’ai aussi tenté d’effacer le tour (le troisième) et de le recréer, mais il s’arrête toujours au troisième tour et ne génère pas le quatrième. Alors j’ai essayé d’effacer tous les tours pour recommencer depuis Démarrer le tournoi, et ça a fonctionné jusqu’au cinquième. À ce stade je soupçonne que la modification n’ait effet que si le tournoi a été lancé avec la nouvelle version, sinon l'XXR avait déjà été envoyé.

Oui, le nombre de tours du Round Robin n’est pas urgent, il peut attendre.

Mais le QR Code ne s’affiche absolument pas :) Bien sûr je me réfère à l’« Imprimer tour » de l’administrateur, car c’est ce que l’arbitre imprime et colle en salle. Pour être précis, par exemple, ce lien : https://my.chesspairings.org/stampa_abbinamenti_squadre.php?id=225&turno=1. Alors qu’à la section publique il y a effectivement un QR Code qui pointe vers Telegram (« Suivez ce tournoi sur Telegram »), mais le cadre dédié est tout blanc (ex : https://my.chesspairings.org/pubblico/torneo_squadre.php?id=225&token=1cc53800c380a43d37ab097d5509b97ace5f78718b7e09f3a725f8ddcd0fdeb8). Mais si je suis déjà sur la page publique, je n’ai pas besoin d’un QR Code vers la page publique, il faut un QR Code pour ceux qui voient le tour imprimé par l’administrateur. Et quand j’ouvre les paramètres du tournoi, je ne trouve pas de drapeau « Visibilité → Public », je vois seulement « Inscriptions équipe en ligne » et « Inscriptions individuelles en ligne ». Même chose lors de la création du tournoi. De plus, comme tu le disais, il faudrait un QR Code aussi dans le classement (qui pointe vers le classement public), ainsi qu’à titre pratique pour donner une meilleure visibilité à ton programme. Donc je suis un peu confus. Mais j’ai trouvé le drapeau dans les tournois individuels, peut‑être ne l’as-tu pas propagé aux équipes ?

Je suis aussi confus quant à la possibilité d’ajouter des retardataires… J’avais compris qu’à partir de 5.6 il y aurait cette option, je vois la 5.6.3 en ligne, mais je ne vois pas « Ajouter équipe à tournoi en cours »… peut‑être j’ai mal compris.


Bonjour,

Claudio.


Modifié le 18/05/2026 21:38

ciao @LTB

ho chiuso tutti i tre punti che mi avevi segnalato dopo la v5.6.3. Te li riepilogo per ordine. Sono già tutti in produzione (v5.6.9 al footer).

═══════════════════════════════════════════════════════════

ISCRIZIONE RITARDATARI SQUADRE — v5.6.4

═══════════════════════════════════════════════════════════


✓ Fatto. Replicato il pattern dei tornei individuali (esisteva già in mig 051) anche per le squadre.

Come si attiva: in Impostazioni torneo trovi un nuovo flag "Consenti iscrizione tardiva" (visibile solo per Swiss, l'RR per definizione ha calendario fisso). Quando è attivo e il torneo è in corso, nella scheda Squadre compare una card arancio "Aggiungi squadra a torneo in corso". La squadra entra dal turno successivo a 0 punti e con numero_squadra MAX+1 (non rinumero il seeding originale, mantengo la storia TRF di bbp6 coerente).


Il PoC (Proof of Concept) che ti raccontavo nella v5.5.0 mi aveva confermato che bbp6 accetta "0000 - Z" per i turni passati (zero-point bye, FIDE C.04.2 Art. 2.4) — quindi questo è il formato in produzione adesso, no placeholder fragili.

Sul cap XXR mi hai fatto pensare a un dettaglio importante: se aggiungi una squadra il max_teorico cresce (es. da 6 squadre a 7, max passa da 5 a 7). Però se questa squadra poi si ritira torni a 6 squadre — e nella v5.5.1 il cap si ricalcolava a max(N-1)=5, abbassando di nuovo il limite e potenzialmente rompendo pairing già prodotti col cap 7. Soluzione adottata (chiamiamola "opzione 3"): salvo il max_teorico AL MOMENTO DELL'AVVIO in una colonna `xxr_baseline`. Il cap effettivo nel TRF è ora `MAX(xxr_baseline, max_teorico_attuale)`. Late entry alza il cap, ritiri non lo abbassano sotto il baseline.

Test: ho aggiunto 12 nuovi test automatici al test runner squadre (PARTE C + PARTE D) — 31 verdi su 31. Il C10 in particolare conferma che bbp6 genera correttamente un turno 3 a 5 squadre quando il baseline è ancora 3 (chiamata reale al motore, non solo precheck logico).

══════════════════════════════════════════════════════════

QR CODE — VISIBILITÀ PUBBLICA E STAMPA CLASSIFICA (v5.6.5)

═══════════════════════════════════════════════════════════

Sul punto del QR Code nella vista pubblica hai centrato un buco: il flag "Visibilità privato/pubblico" esisteva sui tornei individuali ma non sulle squadre — io le avevo lasciate "sempre tecnicamente pubbliche" via token_pubblico autogenerato, scelta che era funzionale al sistema follower Telegram ma incoerente come UX. Adesso anche le squadre hanno il toggle, con un'unica differenza rispetto agli individuali: default 'pubblico' (sui nuovi e sui legacy via backfill) — così non rompo i follower esistenti. Quando lo metti privato la pagina pubblica dà 404, niente QR nelle stampe e i broadcast Telegram si auto-sospendono.

Stampa classifica: nuova pagina `stampa_classifica_squadre.php` (analoga a stampa_abbinamenti_squadre) con QR in alto a destra che porta alla classifica pubblica live. Ne ho fatto una anche per gli individuali. Le trovi col link "Stampa classifica" accanto al menu Esporta, nella scheda Classifica. A4 portrait, auto-stampa.

═══════════════════════════════════════════════════════════

QR TELEGRAM BIANCO NELLA VISTA PUBBLICA (v5.6.6 → v5.6.9)

═══════════════════════════════════════════════════════════

Questo punto è stato il più rognoso. La libreria QR che usavamo (davidshimjs/qrcodejs, una versione del 2013) ha smesso di funzionare su Chrome 148+: errore `f.getPatternPosition is not a function` riproducibile su qualsiasi testo, qualsiasi correctLevel. Identico in modalità incognito e con la lib inline o esterna — niente a che vedere con cache o estensioni. Probabilmente un'ottimizzazione JIT del browser che non digerisce la minificazione vecchia.

Soluzione: ho sostituito con `qrcode-generator` di Kazuhiko Arase (la lib autoritativa da cui qrcodejs aveva forkato), versione corrente, output SVG inline scalabile. Helper unico `renderQR(elemento, testo, sizePx)` su tutte le 10 pagine del progetto che generavano QR (le 4 stampe + le 2 pagine pubbliche + iscrizione + profilo + dashboard utente + marathon).

Risultato: i QR ora funzionano dappertutto, su tutti i browser. Test sul tuo Chrome dovrebbero passare al primo tentativo.

═══════════════════════════════════════════════════════════

TORNEI XXR GIÀ "ROTTI" — BACKFILL + DIAGNOSTICA (v5.6.7)

══════════════════════════════════════════════════════════

Sul punto che mi avevi sollevato dei tornei in corso che avevano già XXR storica gonfia: ho fatto due cose.

  1. (1) backfill (migrazione 074): scrivo retroattivamente `xxr_baseline` su 22 tornei legacy Swiss in_corso/concluso con baseline NULL. Il valore calcolato è identico al cap che si applicherebbe ora — quindi nessun comportamento attuale cambia, ma i tornei legacy diventano robusti contro ritiri futuri e protetti dall'opzione 3 esattamente come quelli creati in v5.4…

ciao @LTB

ho chiuso tutti i tre punti che mi avevi segnalato dopo la v5.6.3. Te li riepilogo per ordine. Sono già tutti in produzione (v5.6.9 al footer).

═══════════════════════════════════════════════════════════

ISCRIZIONE RITARDATARI SQUADRE — v5.6.4

═══════════════════════════════════════════════════════════


✓ Fatto. Replicato il pattern dei tornei individuali (esisteva già in mig 051) anche per le squadre.

Come si attiva: in Impostazioni torneo trovi un nuovo flag "Consenti iscrizione tardiva" (visibile solo per Swiss, l'RR per definizione ha calendario fisso). Quando è attivo e il torneo è in corso, nella scheda Squadre compare una card arancio "Aggiungi squadra a torneo in corso". La squadra entra dal turno successivo a 0 punti e con numero_squadra MAX+1 (non rinumero il seeding originale, mantengo la storia TRF di bbp6 coerente).

══════════════════════════════════════════════════════════

QR CODE — VISIBILITÉ PUBLIQUE ET IMPRESSION DE LA RANGEMENT (v5.6.5)

═══════════════════════════════════════════════════════════

Sul punto del QR Code nella vista pubblica hai centrato un buco: il flag "Visibilità privato/pubblico" esisteva sui tornei individuali ma non sulle squadre — io le avevo lasciate "sempre tecnicamente pubbliche" via token_pubblico autogenerato, scelta che era funzionale al sistema follower Telegram ma incoerente come UX. Adesso anche le squadre hanno il toggle, con un'unica differenza rispetto agli individuali: default 'pubblico' (sui nuovi e sui legacy via backfill) — così non rompo i follower esistenti. Quando lo metti privato la pagina pubblica dà 404, niente QR nelle stampe e i broadcast Telegram si auto-sospendono.

Stampa classifica: nouvelle page `stampa_classifica_squadre.php` (analogue à stampa_abbinamenti_squadre) con QR en haut à droite qui mène au classement public live. J'ai aussi fait une pour les individuels. Vous la trouvez avec le lien "Stampa classifica" à côté du menu Esporta, dans l'onglet Exportation.

12»
Se connecter pour participer à la discussion
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.