feat(questions): expand and validate the question bank (#5) #37

Merged
Reliodas merged 1 commit from feat/5-question-bank into develop 2026-06-24 09:23:50 +00:00
Owner

Closes #5.

Les passages de manche 2 s'épuisaient (5 à 7 questions/catégorie) et la banque n'avait aucune validation automatique.

Changements

  • Champ round séparant le pool général (manche 1) des pools par catégorie (manche 2) ; champs facultatifs difficulty/source/verifiedAt. Une question n'apparaît plus dans les deux manches.
  • Banque portée à 142 questions : 22 en culture générale (round 1) et 10 par catégorie de manche 2 (vs 5–7). Questions à forte confiance factuelle.
  • validateQuestionBank : doublons d'id/texte, correctId hors réponses, catégorie de manche 2 inconnue, volumes minimaux par manche/catégorie. Exécutée au démarrage, en test, via npm run validate:questions et en CI.
  • Chargeur rendu conscient de la manche.

Les volumes minimaux sont des planchers de non-régression, à relever quand la banque grandit (l'enrichissement vers de très longs passages reste un travail de contenu à poursuivre/relire).

Tests

  • validate-bank.test.ts (cas valides/invalides + banque embarquée) ; node:test 176, Jest 13, Vitest 72 ; couverture serveur au-dessus des planchers ; typecheck + builds OK.

Critères d'acceptation

  • Séparer/identifier clairement les questions par manche (round)
  • Valider automatiquement structure et cohérence (doublons, correctId, catégories, volume minimal)
  • Fournir davantage de questions par catégorie (5–7 → 10)
  • Champs source/difficulté disponibles
  • Réserve pour 90 s pleins : plancher posé, enrichissement de contenu à poursuivre

🤖 Generated with Claude Code

Closes #5. Les passages de manche 2 s'épuisaient (5 à 7 questions/catégorie) et la banque n'avait aucune validation automatique. ## Changements - Champ `round` séparant le pool général (manche 1) des pools par catégorie (manche 2) ; champs facultatifs `difficulty`/`source`/`verifiedAt`. Une question n'apparaît plus dans les deux manches. - Banque portée à **142 questions** : 22 en culture générale (round 1) et **10 par catégorie** de manche 2 (vs 5–7). Questions à forte confiance factuelle. - `validateQuestionBank` : doublons d'id/texte, `correctId` hors réponses, catégorie de manche 2 inconnue, volumes minimaux par manche/catégorie. Exécutée au démarrage, en test, via `npm run validate:questions` et en CI. - Chargeur rendu conscient de la manche. Les volumes minimaux sont des planchers de non-régression, à relever quand la banque grandit (l'enrichissement vers de très longs passages reste un travail de contenu à poursuivre/relire). ## Tests - `validate-bank.test.ts` (cas valides/invalides + banque embarquée) ; node:test 176, Jest 13, Vitest 72 ; couverture serveur au-dessus des planchers ; typecheck + builds OK. ## Critères d'acceptation - [x] Séparer/identifier clairement les questions par manche (`round`) - [x] Valider automatiquement structure et cohérence (doublons, correctId, catégories, volume minimal) - [x] Fournir davantage de questions par catégorie (5–7 → 10) - [x] Champs source/difficulté disponibles - [ ] Réserve pour 90 s pleins : plancher posé, enrichissement de contenu à poursuivre 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(questions): expand the bank and validate it automatically
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
b7efba3eec
Round 2 passages ran dry because each category held only 5-7 questions, and the
bank had no automated integrity check (#5).

- Add a `round` field separating the first-round general pool from the
  per-category second-round pools, plus optional `difficulty`/`source`/
  `verifiedAt`. A question no longer appears in both rounds.
- Expand the bank to 142 questions: 22 general (round 1) and 10 per second-round
  category (was 5-7).
- Add validateQuestionBank: duplicate ids/texts, correctId not among answers,
  unknown second-round category, and minimum volumes per round/category. It runs
  at server startup, in a node:test, via `npm run validate:questions`, and in CI.
- Make the loader round-aware.

The minimum volumes are non-regression floors and can be raised as the bank
grows. Update Regles.md and Implémentation.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reliodas merged commit 9330514cd6 into develop 2026-06-24 09:23:50 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jeux/le-grand-concours#37
No description provided.