pdf-quiz-generator/backend/app
Daniel 765a477d4b feat: figures a question can actually have — managed, labelled, previewed
question_media replaced the two filename columns months ago: any number
of figures per question, each with a role, a label the prose can refer
to, a caption and an order. Only the editor's own endpoint ever read
them. The editor showed the two legacy text fields, and the player and
the answer review rendered the legacy paths — so the model existed and
nothing used it.

- FigureManager in the question editor: add from the image bank, name,
  caption, reorder, remove, per role. A figure with no caption is called
  out, because a caption is how anyone finds it again. The image id is
  shown, since that is what the link survives a rename by.
- FigureStrip on the player and the review. Explanation figures are
  labelled thumbnails that open full size and page between them — a
  stack of full-width radiographs between two paragraphs pushes the
  explanation off the screen, and "as in Figure 2" needs Figure 2 to be
  named where it sits. A stem figure stays full size: it is the question.
- question_figures.py is the single place rows become what a page
  renders, so the three views cannot disagree.
- Explanation figures are withheld until answers are revealed, the same
  rule the explanation itself follows.

The legacy paths still render where a question was never backfilled, so
nothing that worked before stops working.

Backend 242/242, frontend 290/290.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN
2026-09-11 12:59:43 +02:00
..
middleware Add comprehensive structured logging with Loki + Grafana 2026-04-11 02:53:54 +02:00
models fix: one sessions list, at /sessions, with plan material out of it 2026-09-11 04:10:25 +02:00
routers feat: figures a question can actually have — managed, labelled, previewed 2026-09-11 12:59:43 +02:00
schemas feat: figures a question can actually have — managed, labelled, previewed 2026-09-11 12:59:43 +02:00
services feat: figures a question can actually have — managed, labelled, previewed 2026-09-11 12:59:43 +02:00
tasks refactor: name the study plans ourselves, and stop reserving 64k tokens a call 2026-09-11 01:41:18 +02:00
utils feat: access as one tree — branches, libraries, and an honest "everything" 2026-09-11 12:53:56 +02:00
__init__.py Initial commit: PDF Quiz Generator app 2026-03-30 20:04:53 +00:00
cli.py Fix CLI argument handling for all commands 2026-04-08 20:57:58 +02:00
config.py feat: article CMS, three reading views, and articles written from the library 2026-09-10 17:13:07 +02:00
database.py Tag filtering, multi-category, bug fixes, image validation, docs 2026-04-04 22:48:26 +02:00
logging_config.py Add comprehensive structured logging with Loki + Grafana 2026-04-11 02:53:54 +02:00
main.py feat: access as one tree — branches, libraries, and an honest "everything" 2026-09-11 12:53:56 +02:00