feat(rules): freeze configurable game format (#17) #20

Merged
Reliodas merged 3 commits from feat/17-freeze-target-rules into develop 2026-06-22 16:27:50 +00:00
Owner

Implémente le ticket #17 : fige les règles cibles et centralise les paramètres déjà appliqués par le moteur.

Changements

  • Source de vérité : nouveau server/src/modules/game/rules.js regroupant les constantes de format (candidats 6–12, timers, quotas, finalistes).
  • Durées effectives : QCM 10 → 5 s, passage de catégorie 60 → 90 s.
  • phase1.js / phase2.js / room.store.js consomment les constantes ; les index de classement dérivent de SCOREBOARD_AFTER_QUESTIONS (plus de nombres magiques).
  • Les constantes candidats/quotas/finalistes expriment la règle cible mais ne sont pas encore câblées : configuration, qualification et barrages restent dans #7, la finale dans #18.
  • Docs (docs/Regles.md, docs/Implémentation.md) : format flexible 6–12, quota configurable (min 3 / défaut 6), 3 finalistes fixes, nouvelles durées, et distinction explicite règle cible validée vs automatisation absente.
  • Tests : durées importées des constantes, countdown de la première manche vérifié sur 5 s, nouveau phase2.test.js couvrant le timer de catégorie (90 s) et le plateau de 12 catégories.

Vérification

  • cd server && npm test → 70/70 (1 skip pré-existant)
  • cd client && npm test → 33/33
  • cd client && npm run build → OK
  • git diff --check → propre

Refs #17, #7, #18

Implémente le ticket #17 : fige les règles cibles et centralise les paramètres déjà appliqués par le moteur. ## Changements - **Source de vérité** : nouveau `server/src/modules/game/rules.js` regroupant les constantes de format (candidats 6–12, timers, quotas, finalistes). - **Durées effectives** : QCM 10 → **5 s**, passage de catégorie 60 → **90 s**. - `phase1.js` / `phase2.js` / `room.store.js` consomment les constantes ; les index de classement dérivent de `SCOREBOARD_AFTER_QUESTIONS` (plus de nombres magiques). - Les constantes candidats/quotas/finalistes expriment la **règle cible** mais ne sont pas encore câblées : configuration, qualification et barrages restent dans #7, la finale dans #18. - **Docs** (`docs/Regles.md`, `docs/Implémentation.md`) : format flexible 6–12, quota configurable (min 3 / défaut 6), 3 finalistes fixes, nouvelles durées, et distinction explicite règle cible validée vs automatisation absente. - **Tests** : durées importées des constantes, countdown de la première manche vérifié sur 5 s, nouveau `phase2.test.js` couvrant le timer de catégorie (90 s) et le plateau de 12 catégories. ## Vérification - `cd server && npm test` → 70/70 (1 skip pré-existant) - `cd client && npm test` → 33/33 - `cd client && npm run build` → OK - `git diff --check` → propre Refs #17, #7, #18
Reliodas added this to the 1.0.0-alpha milestone 2026-06-22 16:25:41 +00:00
feat(rules): freeze configurable game format
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_metadata/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
8f197aadd4
Centralize the engine-applied game parameters in a single source of
truth (server/src/modules/game/rules.js) and adjust the two effective
timers to the validated target format:

- QCM timer 10 -> 5 seconds
- category passage timer 60 -> 90 seconds

phase1/phase2/room.store now consume the constants, and the
scoreboard indices are derived from SCOREBOARD_AFTER_QUESTIONS instead
of magic numbers. Candidate/qualifier/finalist constants express the
validated target rules but are not wired into the engine yet; their
configuration, qualification and tie-breaks belong to #7 and the final
round to #18.

Documentation (docs/Regles.md, docs/Implémentation.md) is updated to
describe the flexible 6-12 candidate format, the configurable second
round quota, the fixed three finalists, the new timers, and to clearly
distinguish validated target rules from automation that is not yet
implemented.

Tests import the constants instead of hardcoding durations, the
first-round countdown is asserted against the 5s timer, and a new
phase2.test.js covers the category passage timer at 90s and the
12-category board.

Refs #17, #7, #18

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reliodas merged commit e11f44402b into develop 2026-06-22 16:27: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#20
No description provided.