Skip to content

feat: atelier des boosters à thème (index local, fiche, aperçu, création rapide) - #187

Merged
Palawizard merged 3 commits into
devfrom
feat/atelier-themes
Nov 4, 2026
Merged

Palawizard merged 3 commits into
devfrom
feat/atelier-themes

Conversation

@Palawizard

Copy link
Copy Markdown
Owner

Créer un booster à thème prenait plus d'une heure : parcours lent des catégories par l'API Wikipédia (429), descriptions Wikidata par lots de 50, scripts réécrits à chaque thème, et theme.js bloqué plus de 11 min sur l'index de tirage d'un gros thème.

Ce qui change

  • tools/themes : atelier qui tourne sur PalaServer (/srv/nas/palacards-themes, données sur le NAS).
    • index (une fois par saison, ~15 min) : dumps du Wikipédia FR (catégories, élément Wikidata) + requêtes en bloc sur QLever (P31, P106, P641, P27, P17, P136, P279, descriptions et libellés FR) + cartes de la saison → base DuckDB.
    • Fiche YAML par booster (exemple.yaml) : familles, classes Wikidata avec sous-classes, catégories et profondeur, filtres de rareté, de personnes et de description, exclusions, ajouts.
    • preview (quelques secondes) : raretés, familles, légendaires, UR, bruit probable, catégories qui apportent le plus, échantillons.
    • create : essai dans une transaction annulée, puis --go (sauvegarde puis création en une transaction, rareté et rang posés à l'insertion).
  • API : createTheme écrit la rareté et le rang dès l'insertion (même correctif pour la page Admin et theme.js).
  • Import des saisons : les dumps de novembre 2026 ont un tuple par ligne après INSERT … VALUES ; l'ancien parseur ne lisait plus rien (homonymies et articles de qualité vides à la saison 2).
  • CI : tests de l'atelier dans le job pytest.

Mesures (2026-11-04, saison 1)

  • Index : 13 min de bout en bout (dumps 5 min, analyse 6 min, Wikidata 1 min, DuckDB 2 min).
  • « Jeux vidéo » refait avec une fiche écrite en 5 min : 19 927 cartes en 9 s, 92 % de recouvrement avec le booster n° 15 d'octobre ; essai de création en prod : 2,1 s.
  • Thème de 161 000 cartes (films, séries, acteurs) : aperçu 2,8 s, essai de création 7 s.

Vérifications

  • vitest test/events.test.ts (30 tests), pytest tools/import (34) et tools/themes (5), ruff, eslint, prettier.

Palawizard and others added 2 commits November 4, 2026 09:12
… au pouce

- Paquets (téléphone) : « Ouvrir le suivant » dans une barre collée en bas,
  visible même sous le récapitulatif de dix lignes et la barre de Safari.
- Paquets : notifications et gros tirages des potes mis en attente pendant
  la requête et la pile (ils cachaient la frise de rareté) ; pity, recyclage
  auto et wishlist affichés sous les cartes au lieu d'un toast par paquet ;
  plus de toast pour un recyclage manuel (la case l'affiche déjà).
- Collection : encart de complétion repliable au-dessus des filtres sous
  1024 px (il était sous la grille à chargement continu, donc inatteignable).
- Upgrader : barre « Tenter » collée en bas quand l'établi est hors écran.
- iPhone : champs à 16 px minimum au doigt, Safari ne zoome plus au focus.
…aperçu, création rapide)

- tools/themes : index DuckDB d'une saison construit une fois (~15 min) depuis les dumps du Wikipédia FR
  (arbre des catégories, élément Wikidata de chaque article) et des requêtes en bloc sur QLever (P31, P106,
  P641, P27, P17, P136, P279 en entier, descriptions et libellés en français), sans l'API Wikipédia ;
- fiche YAML par booster (familles : classes Wikidata avec sous-classes, catégories et profondeur, motifs
  de titre, titres ; filtres de rareté, de personnes et de description ; exclusions et ajouts) ;
- aperçu en quelques secondes (raretés, familles, légendaires, UR, bruit probable, catégories qui apportent
  le plus, échantillons) et création en prod en une transaction, rareté et rang posés à l'insertion ;
- API : createTheme écrit la rareté et le rang dès l'insertion (plus de 11 min pour 150 000 articles avant) ;
- import des saisons : lecture du nouveau format des dumps (un tuple par ligne après INSERT … VALUES),
  sinon homonymies et articles de qualité seraient vides à la saison 2 ;
- CI : tests de l'atelier dans le job pytest.
@Palawizard
Palawizard merged commit 19a1f88 into dev Nov 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant