feat: bonus level en dagelijkse uitdaging per groep (5/6/7/8) #63

Closed
opened 2026-04-09 21:23:00 +02:00 by Ghost · 2 comments
Ghost commented 2026-04-09 21:23:00 +02:00 (Migrated from codeberg.org)

Nu er een groepselectie is (groep 5–8), zou het logisch zijn om de bonus en de dagelijkse uitdaging ook per groep te differentiëren.

Gewenst gedrag

Bonus per groep:

  • In plaats van één "Bonus: Alle steden door elkaar" → vier groep-specifieke bonuslevels
  • Groep 5: trekt uit sets 54/55/56/57
  • Groep 6: trekt uit sets 61–67
  • Groep 7: trekt uit de 7.x sets
  • Groep 8: trekt uit de 8.x sets
  • De bonus is altijd zichtbaar in de geselecteerde groep

Dagelijkse uitdaging per groep:

  • Idem: de daily challenge trekt uit de sets van de geselecteerde groep
  • Of: één gedeelde daily maar gefilterd op de geselecteerde groep
  • Seed-logica blijft op datum gebaseerd (deterministisch)

Afhankelijkheden

  • Wacht op merge van v2.0 BETA pilot (milestone #1) — groepen 7/8 sets moeten eerst bestaan
  • Geen breaking change voor groep 5/6 als de huidige bonus/daily als fallback blijft

Niet in scope

  • Multiplayer of vergelijkende scores per groep
Nu er een groepselectie is (groep 5–8), zou het logisch zijn om de bonus en de dagelijkse uitdaging ook per groep te differentiëren. ## Gewenst gedrag **Bonus per groep:** - In plaats van één "Bonus: Alle steden door elkaar" → vier groep-specifieke bonuslevels - Groep 5: trekt uit sets 54/55/56/57 - Groep 6: trekt uit sets 61–67 - Groep 7: trekt uit de 7.x sets - Groep 8: trekt uit de 8.x sets - De bonus is altijd zichtbaar in de geselecteerde groep **Dagelijkse uitdaging per groep:** - Idem: de daily challenge trekt uit de sets van de geselecteerde groep - Of: één gedeelde daily maar gefilterd op de geselecteerde groep - Seed-logica blijft op datum gebaseerd (deterministisch) ## Afhankelijkheden - Wacht op merge van v2.0 BETA pilot (milestone #1) — groepen 7/8 sets moeten eerst bestaan - Geen breaking change voor groep 5/6 als de huidige bonus/daily als fallback blijft ## Niet in scope - Multiplayer of vergelijkende scores per groep
Ghost commented 2026-04-14 23:10:49 +02:00 (Migrated from codeberg.org)

Scope-uitbreiding: absorbeert #31

#31 (wateren integreren in daily/bonus) wordt in deze issue meegenomen. Reden: zodra daily en bonus per groep werken, moet de pool in groep 6/7/8 ook meer dan alleen steden kunnen bevatten (wateren in groep 5/6/7, landen en regio's in groep 7, gebergten in groep 7/8).

Uitgebreide scope:

  • Bonus per groep trekt uit álle item-types die in de groep voorkomen — niet alleen ALL_CITIES:
    • Groep 5: steden (54/55/56) + wateren (57)
    • Groep 6: steden (61–67)
    • Groep 7: steden + gewesten + wateren + landen + fuzzy regio's (71–79)
    • Groep 8: steden + landen + wateren + gebergten (81–89)
  • Daily per groep idem, seed blijft datum-gebaseerd per groep (bijv. seed = date-string + groepnummer)
  • Rendering-mix binnen één sessie: de huidige renderQuestion() schakelt al op currentCity.kind / quizType — dezelfde mechaniek gebruiken voor gemengde daily/bonus-vragen
  • Distractors per type: nearbyDistractors() moet filteren op hetzelfde type als het juiste antwoord (geen stad als afleider voor een water-vraag)
  • Mastery/streak werkt al onafhankelijk van type, geen wijziging nodig

Implementatie-volgorde (TDD per stap):

  1. buildDailyPool(group) / buildBonusPool(group) — unit-test met vaste seed, verwacht gemengde types
  2. nearbyDistractors() uitbreiden: zelfde-type filter
  3. Renderlaag: per vraag juiste primitief tonen (bestaand codepad)
  4. Groep-selectie UI: daily en bonus knoppen per groep
  5. Playwright smoke-test per groep
### Scope-uitbreiding: absorbeert #31 #31 (wateren integreren in daily/bonus) wordt in deze issue meegenomen. Reden: zodra daily en bonus per groep werken, moet de pool in groep 6/7/8 ook meer dan alleen steden kunnen bevatten (wateren in groep 5/6/7, landen en regio's in groep 7, gebergten in groep 7/8). **Uitgebreide scope:** - **Bonus per groep** trekt uit álle item-types die in de groep voorkomen — niet alleen `ALL_CITIES`: - Groep 5: steden (54/55/56) + wateren (57) - Groep 6: steden (61–67) - Groep 7: steden + gewesten + wateren + landen + fuzzy regio's (71–79) - Groep 8: steden + landen + wateren + gebergten (81–89) - **Daily per groep** idem, seed blijft datum-gebaseerd per groep (bijv. seed = date-string + groepnummer) - **Rendering-mix binnen één sessie**: de huidige `renderQuestion()` schakelt al op `currentCity.kind` / quizType — dezelfde mechaniek gebruiken voor gemengde daily/bonus-vragen - **Distractors per type**: `nearbyDistractors()` moet filteren op hetzelfde type als het juiste antwoord (geen stad als afleider voor een water-vraag) - **Mastery/streak** werkt al onafhankelijk van type, geen wijziging nodig **Implementatie-volgorde** (TDD per stap): 1. `buildDailyPool(group)` / `buildBonusPool(group)` — unit-test met vaste seed, verwacht gemengde types 2. `nearbyDistractors()` uitbreiden: zelfde-type filter 3. Renderlaag: per vraag juiste primitief tonen (bestaand codepad) 4. Groep-selectie UI: daily en bonus knoppen per groep 5. Playwright smoke-test per groep
Ghost commented 2026-04-15 11:17:57 +02:00 (Migrated from codeberg.org)

Vervangen door #80 — redesign bundelt per-groep differentiatie samen met mixed-types en alle Geobas 7/8 primitieven.

Vervangen door #80 — redesign bundelt per-groep differentiatie samen met mixed-types en alle Geobas 7/8 primitieven.
Sign in to join this conversation.
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
jelmer/topoquiz#63
No description provided.