Les écrans

FletchScore s’organise en 8 écrans, accessibles depuis la barre latérale. Le thème (clair/sombre) et la version installée sont affichés en bas de cette barre.

Accueil

Écran par défaut à l’ouverture : un résumé chiffré (nombre de compétitions, de compétiteurs, d’épreuves, et l’épreuve la plus récente) et des raccourcis vers les autres écrans.

Écran d'accueil de FletchScore, avec le résumé chiffré et les raccourcis

Écran d’accueil – résumé chiffré et raccourcis vers les autres écrans.

Note

“Dernière activité” affiche l’épreuve la plus récente par sa date, pas un horodatage de la dernière action réellement effectuée – FletchScore ne trace pas “quand” une compétition a été créée ou un score saisi.

Compétitions

Écran Compétitions, colonnes Compétitions et Épreuves

Écran Compétitions – une compétition sélectionnée à gauche affiche ses épreuves à droite.

Deux colonnes.

Colonne de gauche – Compétitions

En haut, bouton 📥 Restaurer : recharge une compétition sauvegardée (voir encadré ci-dessous). Ensuite, liste des compétitions existantes (boutons ✏️ – modifier –, 💾 – enregistrer comme modèle –, 📦 – sauvegarder – et – supprimer – sur chacune) et un formulaire de création (nom, lieu, dates, catégories Veteran/Senior, club organisateur – optionnel, “(aucun club organisateur)” par défaut), avec un menu Modèle : choisis-en un pour générer d’un coup toutes les épreuves d’un modèle de compétition enregistré précédemment (la date choisie ici sert de date par défaut à chaque épreuve générée – à corriger ensuite individuellement si elles ne sont pas toutes le même jour).

Sauvegarder/restaurer une compétition complète

Le bouton 📦 exporte une compétition entière (épreuves, inscriptions, scores, et les clubs/compétiteurs/barèmes nécessaires pour que le fichier soit réimportable seul) dans un fichier .json – utile pour archiver, ou transférer vers un autre poste. Le bouton 📥 Restaurer recharge un tel fichier : les clubs/ compétiteurs/barèmes déjà connus de ce poste sont réutilisés sans doublon, seuls ceux manquants sont ajoutés. Restaurer une sauvegarde déjà présente sur ce même poste est refusé (pas de fusion) – pensé avant tout pour transférer vers un poste qui ne l’a pas encore.

Supprimer une compétition vide

Le bouton supprime la compétition. Refusé dès qu’un score existe dans n’importe laquelle de ses épreuves, même un seul – aucune cascade forcée sur des données notées. En l’absence de score, la suppression entraîne aussi celle de ses épreuves, des inscriptions sans score, et des accès compétiteurs associés (codes, procurations, demandes en attente). Confirmation demandée avant, action irréversible.

Colonne de droite – Épreuves

Une fois une compétition sélectionnée à gauche : liste de ses épreuves (boutons ✏️ – modifier –, 💾 – enregistrer comme modèle – et – supprimer – sur chacune) et un formulaire de création, avec un menu Modèle qui préremplit nom et barème si tu en as déjà enregistré un.

Modifier ne change jamais l’identifiant

Le code d’une compétition ou d’une épreuve n’est jamais modifiable par ce biais – seuls les autres champs le sont. Changer le barème d’une épreuve est aussi bloqué une fois qu’un score y a été saisi.

Supprimer une épreuve vide

Le bouton supprime l’épreuve. Refusé dès qu’un score existe, même un seul – une épreuve déjà notée ne se supprime pas. Les inscriptions sans score, elles, sont supprimées avec (rien d’irréversible en jeu). Refusé aussi si la compétition est clôturée, même règle que pour la modification. Confirmation demandée avant, action irréversible.

Compétiteurs

Écran Compétiteurs, formulaires d'ajout et liste des compétiteurs

Écran Compétiteurs – import/export CSV, ajout au coup par coup, et liste avec les actions RGPD (🕒/🗑/❌).

En haut : 4 boutons – Importer/Exporter clubs.csv et competiteurs.csv (voir Modèle de données pour le format exact des colonnes). Une zone de texte juste en dessous affiche le rapport de la dernière action (lignes importées, ignorées, ou exportées).

Juste au-dessus de la liste des compétiteurs, un bouton 🕒 Inactifs (RGPD) ouvre la liste de ceux dont la dernière inscription remonte à plus de 3 ans (voir Sécurité & vue compétiteur, section “Conservation des données”) – un bouton 🗑 sur chacun permet de les anonymiser directement depuis cette fenêtre, un par un. Rien d’automatique : personne n’apparaît nulle part tant que ce bouton n’est pas explicitement ouvert.

En dessous, deux formulaires côte à côte pour une saisie au coup par coup (sans passer par un CSV) : Ajouter un club (avec un sélecteur pour en charger un existant à modifier) et Ajouter un compétiteur.

Enfin, la liste de tous les compétiteurs enregistrés, avec un bouton ✏️ (modifier), un bouton 🗑 (anonymiser) et un bouton (supprimer) sur chacun.

Répondre à une demande RGPD (droit à l’effacement)

Le bouton 🗑 anonymise le compétiteur : nom et prénom remplacés par Compétiteur/{id fédéral}, licence effacée, et tous ses accès (codes, procurations, demandes en attente) révoqués. Une confirmation est demandée avant, l’action est irréversible.

Ses scores et son rang dans les classements ne sont volontairement pas supprimés : effacer purement et simplement un compétiteur classé ferait remonter les rangs suivants, faussant rétroactivement un classement peut-être déjà publié ou imprimé. La ligne reste donc visible dans les classements, juste sous un nom anonymisé.

id_federal (le numéro de licence fédérale) est conservé comme identifiant technique – ce n’est donc pas une anonymisation complète au sens strict (la fédération pourrait toujours faire le lien via ce numéro dans son propre système), mais les données les plus directement identifiantes – nom, prénom, date de licence – ont bien disparu de l’application.

Supprimer un compétiteur jamais engagé

Le bouton supprime réellement la fiche – à ne pas confondre avec l’anonymisation (🗑, ci-dessus). Refusé dès que le compétiteur a au moins une inscription, même sans score, même dans une autre compétition : pour un compétiteur déjà engagé, seule l’anonymisation est possible, justement pour ne pas fausser un classement. Une confirmation est demandée avant, l’action est irréversible.

Saisie

Écran Saisie, onglet Saisie manuelle

Écran Saisie – onglet Saisie manuelle : liste des inscrit·e·s à gauche, formulaire de score final à droite.

Deux onglets – un score entre dans le système par l’un ou par l’autre, peu importe lequel : les deux se retrouvent au même endroit ensuite (l’écran Classement).

Saisie manuelle

Un sélecteur d’épreuve en haut, puis deux colonnes : à gauche un menu déroulant des compétiteurs pas encore inscrits, un bouton Inscrire, et la liste des inscrit·e·s (avec leur score s’il est déjà saisi, et un bouton pour annuler l’inscription tant qu’aucun score n’est encore saisi – disparaît de la ligne dès qu’un score existe) ; à droite, une fois un·e inscrit·e sélectionné·e, deux champs (score total, nombre de X) et un bouton Enregistrer. Le score actuellement enregistré s’affiche en dessous.

Propositions en attente

Un sélecteur d’épreuve, puis la liste des scores proposés par des compétiteurs identifiés depuis la vue web (voir “Connexions compétiteurs” ci-dessous) – compétiteur, total, nombre de X, et “proposé par [nom]” si ce n’est pas la personne elle-même qui a soumis (procuration validée, voir plus bas). Un score proposé n’apparaît dans aucun classement tant qu’il n’est pas validé ici. Recoupe-le avec la feuille de match papier avant de valider : FletchScore ne vérifie que les bornes du barème (le total ne dépasse pas le maximum possible), rien d’autre. Le bouton Rejeter écarte une proposition sans rien valider.

Classement

Écran Classement, groupé par catégorie

Écran Classement – groupé par catégorie (sexe + âge + style), avec les exports par épreuve et global.

Un sélecteur d’épreuve, une case “Podium seulement (top 3)”, et 3 boutons d’export (CSV, Excel, PDF) pour le classement de cette épreuve précise.

Plus bas, une section séparée “Export global (toute la compétition)” : un sélecteur de compétition (pas d’épreuve) et ses 3 boutons d’export – une colonne par épreuve, plus un total cumulé.

La liste du classement s’affiche en dessous, groupée par catégorie (sexe + tranche d’âge + style), triée par total décroissant.

Connexions compétiteurs

Écran Connexions compétiteurs, onglet Demandes en attente

Écran Connexions compétiteurs – contrôles du serveur web et, ici, l’onglet Demandes en attente.

Tout ce qui touche au lien en ligne avec les compétiteurs, regroupé sur un seul écran.

En haut, les contrôles du serveur web : un champ Port (laisse-le vide pour un port différent à chaque démarrage, ou fixe-en un pour garder toujours la même adresse d’une session à l’autre – mémorisé automatiquement pour la prochaine fois), une case Activer HTTPS (certificat auto-signé généré automatiquement – le navigateur du compétiteur affichera un avertissement “connexion non sécurisée” à accepter manuellement une fois, normal pour ce type de certificat), cochée par défaut (RGPD/article 32 – sinon les données qui transitent sur le wifi du club – noms, scores, cookies de session – sont en clair ; décochable si besoin, ex. si la bibliothèque cryptography n’est pas disponible, auquel cas la case est grisée), et un bouton Démarrer le serveur / Arrêter le serveur. Une fois démarré, l’adresse à donner aux compétiteurs s’affiche (à taper dans le navigateur de leur téléphone, sur le même wifi que le club).

La page qu’ils voient reprend l’identité visuelle de FletchTime (thème sombre par défaut, bascule vers un thème clair possible) et est bilingue français/anglais. L’accueil affiche un message de bienvenue, la liste des compétitions et épreuves en cours (avec un lien vers le classement de chacune, un lien pour demander un accès, et – une fois identifié – un lien pour demander une procuration), et un champ pour confirmer un code d’accès déjà reçu. Une fois un code confirmé, la session dure 7 jours (un lien “Se déconnecter” à côté du message de bienvenue permet de l’oublier avant) : l’accueil accueille par prénom et nom, le formulaire de code et le lien de demande d’accès disparaissent pour cette compétition, chaque épreuve affiche un statut personnel (“pas inscrit·e”, “inscrit·e”, “score en attente de validation”, “score validé : N pts”), un bandeau signale un nouveau message, et un formulaire Proposer mon score apparaît sur la page de chaque épreuve où le compétiteur (ou l’un de ses mandants, si une procuration a été validée – un menu déroulant permet alors de choisir pour qui) est inscrit (voir l’onglet “Propositions en attente” de l’écran Saisie).

Accueil de la vue compétiteur web, une fois identifié

Vue compétiteur web – accueil une fois identifié : bienvenue, messages, lien “Mes données”, statut par épreuve.

Classement d'une épreuve sur la vue compétiteur web

Vue compétiteur web – classement d’une épreuve, groupé par catégorie, consultable sans être identifié.

Formulaire "Proposer mon score" sur la vue compétiteur web

Vue compétiteur web – formulaire “Proposer mon score”, visible une fois identifié et inscrit à l’épreuve, sans score déjà validé.

Droit d’accès RGPD – « Mes données »

Une fois identifié, un lien Mes données apparaît à côté de « Se déconnecter » sur l’accueil du compétiteur : récapitule toutes les données personnelles détenues sur lui (identité, club, style, inscriptions, scores proposés/validés, procurations comme mandataire ou mandant), toutes compétitions confondues – pas seulement celle de la session en cours. Un lien ⬇ Télécharger mes données (JSON) exporte le tout dans un fichier – portabilité RGPD (article 20), aucun format sophistiqué requis par le texte, juste structuré et lisible par machine.

En dessous des contrôles serveur, un sélecteur de compétition puis quatre onglets :

Demandes en attente

Nom, prénom, id fédéral, date de naissance et club, pour recouper avec une carte de licence ou une pièce d’identité. FletchScore ne vérifie rien à ta place : à toi de confirmer l’identité de visu avant de cliquer sur Valider.

Une fois validée, une fenêtre s’ouvre avec un code d’accès (et un QR code, si la bibliothèque correspondante est installée) – à transmettre immédiatement au compétiteur : une fois cette fenêtre fermée, ce code ne sera plus jamais réaffichable. Le bouton Rejeter clôt une demande sans rien attribuer.

Accès actifs

La liste des compétiteurs ayant déjà un accès valide pour la compétition sélectionnée, avec un bouton Révoquer – utile si un accès a été donné par erreur, ou si un compétiteur ne doit plus pouvoir se connecter.

Procurations

Un compétiteur (le mandataire) peut demander à proposer les scores d’un autre (le mandant) – utile si une seule personne note pour tout un groupe. La demande apparaît ici ; Valider l’autorise réellement (le mandataire peut alors choisir le mandant dans le menu déroulant de son propre formulaire de proposition de score), Rejeter l’écarte sans rien autoriser.

Messages

Choisis un destinataire (un compétiteur avec un accès actif, ou “Tous les compétiteurs”), écris ton message, clique Envoyer. Le compétiteur le voit dès sa prochaine visite (bandeau sur l’accueil + page “Mes messages”) – FletchScore ne te dit pas qui l’a lu, seulement qu’il a été envoyé. L’historique de tous les messages envoyés pour cette compétition s’affiche en dessous.

Note

Consultation en lecture seule pour la plupart des visiteurs. Écritures possibles depuis la page compétiteur, jamais sur les données d’un autre compétiteur sans validation préalable de l’organisateur : la demande d’accès et la demande de procuration (sans aucun effet tant qu’un organisateur ne les a pas validées), la confirmation d’un code déjà attribué, et la proposition d’un score (réservée à un compétiteur identifié – pour lui-même s’il est inscrit, ou pour un mandant si une procuration a été validée).

Mot de passe

Optionnel : définis un mot de passe pour protéger l’ouverture de FletchScore. Sans mot de passe défini, l’application s’ouvre directement – rien ne change si tu ne configures rien ici.

Une fois défini, une fenêtre de connexion apparaît à chaque lancement de FletchScore, avant le reste de l’interface. Depuis cet écran, tu peux aussi le changer ou supprimer la protection – les deux actions redemandent le mot de passe actuel, pour qu’une session laissée ouverte ne suffise pas à elle seule à désactiver la protection.

Aide

Écran Aide, résumé du mode d'emploi

Écran Aide – résumé du mode d’emploi de chaque écran, avec un bouton vers cette documentation complète.

Un résumé du mode d’emploi de chaque écran, directement dans l’application, plus un bouton qui ouvre cette documentation complète dans le navigateur.

Note

Cet écran reste volontairement en texte seul, sans image embarquée dans l’application (contrairement à cette documentation en ligne) – éviter d’alourdir le paquet distribué (pip, exécutables PyInstaller) pour un contenu déjà disponible en un clic via “Ouvrir la documentation en ligne”.