User stories & points ouverts

User stories (MVP priorisé)

#

En tant que…

1

organisateur, je crée une compétition et une ou plusieurs épreuves en choisissant un barème préconfiguré (Flint Indoor, IFAA Indoor) ou personnalisé.

2

organisateur, je crée ou importe ma base de compétiteurs, clubs et styles.

3

organisateur, j’inscris les compétiteurs présents aux épreuves du jour.

4

organisateur, je saisis les scores par compétiteur, volée par volée, avec contrôle des valeurs possibles selon le barème.

5

organisateur, je consulte un classement live par catégorie, avec départage automatique au X.

6

organisateur, j’exporte les résultats (Excel + PDF) au format fédération, avec podiums par catégorie.

7

compétiteur, je scanne mon QR code (ou saisis mon code court) pour accéder à mon inscription et proposer mes scores.

8

compétiteur sans token distribué, je me recherche dans la liste des inscrits et demande un rattachement, validé ensuite par l’organisateur.

Points restant à trancher

Style de tir — extension FFTL ?

Conserver la liste fermée des 12 codes IFAA telle quelle, ou prévoir une extension FFTL si des variantes locales existent ? Le mécanisme technique existe déjà (referentiels.styles.ajouter_variante_style, avec refus explicite d’écraser un code IFAA) – reste à décider si le besoin se présente réellement.

Format d’export fédération

Existe-t-il un modèle Excel imposé (colonnes attendues) à caler dès le départ ?

Vue compétiteur v1 — proposition ou lecture seule ?

Proposition de score dès le MVP, ou d’abord une version lecture seule (consultation du classement) pour sortir un premier périmètre plus simple ?

Points tranchés

Catégories Vétérans/Seniors optionnelles

Résolu : Competition.categories_veteran_actives (booléen) – activé ou non à la création de chaque compétition, plutôt qu’un réglage global figé une fois pour toutes. Voir Modèle de données et models/competiteur.py::categorie_age.

Hiérarchie Épreuve / Série / Volée

Résolu : confirmé – une Épreuve comporte une ou plusieurs séries, chaque série une ou plusieurs volées. Le Flint Indoor a 2 séries de 7 volées, avec 6 distances différentes sur les 6 premières volées et la 7e volée tirée sur 4 distances différentes.

Révisé depuis : cette hiérarchie décrit toujours le règlement, mais FletchScore n’enregistre plus les scores volée par volée – seulement le score final par épreuve (voir “Saisie du score final, pas volée par volée” ci-dessous). Score.numero_serie et numero_volee, ajoutés à ce moment-là pour lever une ambiguïté entre séries, ont depuis été retirés avec le reste de la saisie détaillée.

Saisie du score final, pas volée par volée

Résolu (révision d’un choix initial) : décidé après un premier jalon de saisie flèche par flèche, jugée trop lourde face à l’usage réel – les scores sont déjà totalisés à la main sur la feuille de match pendant le tir, le rôle de FletchScore est d’enregistrer ce résultat et de classer, pas de rejouer le calcul flèche par flèche. Score simplifié à total + nombre_x (une ligne par Inscription, contrainte UNIQUE). Bénéfice supplémentaire : supprime le besoin de modéliser les règles de score internes de chaque type d’épreuve pour la saisie – ouvre la voie à l’Animal Round et aux rounds 3-D (voir Règles métier issues du règlement IFAA / FFTL), qui restaient hors périmètre uniquement à cause de leur système de score complexe.

v0.2 – ordre des 3 morceaux, HTTPS repoussé

Résolu, sur proposition de l’assistant confirmée par l’utilisateur : Token/QR + rattachement d’abord (fondation dont tout le reste dépend), authentification organisateur ensuite, HTTPS local en dernier – repoussé après la v0.3 plutôt que fait maintenant.

Raison du report HTTPS : un certificat auto-signé affiche un avertissement “non sécurisé” sur le téléphone d’un compétiteur qui veut juste consulter un classement – mauvaise première impression pour un outil de club, sans rien débloquer de fonctionnel en retour tant que la v0.2 elle-même n’a qu’une écriture à faible enjeu (une demande de rattachement – une revendication d’identité validée par un humain avant tout effet, pas un score). La vraie donnée sensible (le score proposé par le compétiteur) arrive en v0.3 – plus logique de durcir le transport à ce moment-là.

Renumérotation ultérieure (demande de l’utilisateur) : la v0.2 d’origine (vue compétiteur seule) était trop petite pour une version à part – fusionnée avec cette v0.3 pour devenir la v0.2 actuelle. Ce dropdown reprend cette version fusionnée.

Confirmation ultérieure (demande de l’utilisateur) : le report HTTPS en v0.3 est définitif, plus une clause provisoire – la v0.3 démarre sur cette base.