No description
Find a file
lila f53ac618bb feat(api): assemble full GameSession with shuffled answer options
Extend the game flow from raw term rows to a complete GameSession
matching the shared schema:

- Add getDistractors model query: fetches N same-POS, same-difficulty,
  same-target-language terms excluding a given termId. Returns bare
  strings since distractors only need their display text.
- Fix getGameTerms select clause to use the neutral field names
  (sourceText, targetText, sourceGloss) that the type already declared.
- Rename gameService entry point to createGameSession; signature now
  takes a GameRequest and returns a GameSession.
- Per question: fetch 3 distractors, combine with the correct answer,
  shuffle (Fisher-Yates), assign optionIds 0-3 by post-shuffle index,
  and assemble into a GameQuestion with a fresh UUID.
- Wrap the questions in a GameSession with its own UUID.
- Run per-question distractor fetches in parallel via Promise.all.

Known gap: the correct option is not yet remembered server-side, so
/game/answer cannot evaluate submissions. SessionStore lands next.
2026-04-10 21:44:36 +02:00
apps feat(api): assemble full GameSession with shuffled answer options 2026-04-10 21:44:36 +02:00
data-sources formatting 2026-04-10 20:09:46 +02:00
documentation formatting 2026-04-10 20:20:09 +02:00
packages feat(api): assemble full GameSession with shuffled answer options 2026-04-10 21:44:36 +02:00
scripts adjusting output schema 2026-04-10 21:44:09 +02:00
.dockerignore infra: add Docker Compose setup for local development 2026-03-25 18:56:04 +01:00
.env.example infra: add Docker Compose setup for local development 2026-03-25 18:56:04 +01:00
.gitignore setting up python env, download word data 2026-03-26 11:41:46 +01:00
.prettierignore chore: configure root eslint with react and tanstack router rules 2026-03-21 19:32:38 +01:00
.prettierrc chore: configure prettier with ignore rules and format scripts + running format 2026-03-20 18:37:38 +01:00
docker-compose.yml adjusting path where the database file is saved, so the data persists after reboot 2026-03-31 10:04:50 +02:00
eslint.config.mjs chore: configure root eslint with react and tanstack router rules 2026-03-21 19:32:38 +01:00
mise.toml setting up python env, download word data 2026-03-26 11:41:46 +01:00
package.json extraction datafiles with cefr annotations 2026-04-08 13:09:47 +02:00
pnpm-lock.yaml extraction datafiles with cefr annotations 2026-04-08 13:09:47 +02:00
pnpm-workspace.yaml formatting 2026-03-21 19:33:07 +01:00
README.md initial commit 2026-03-20 08:57:09 +01:00
tsconfig.base.json formatting 2026-03-21 19:33:07 +01:00
tsconfig.json chore: configure prettier with ignore rules and format scripts + running format 2026-03-20 18:37:38 +01:00
vitest.config.ts chore: configure vitest with project-based setup and coverage 2026-03-20 19:25:00 +01:00

glossa