From bd321b002dc9d8cd104f4676b8e1dc08f6fb7870 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 12 Sep 2026 17:59:48 +0200 Subject: [PATCH] docs: close the items this session settled, and two that are not tasks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The classifier review is moot: it reviewed a per-question organ-system pick, and systems hang off the topic now — `question_tag_links` holds no system rows at all, every one of the 569 topics carries a system, and all 2,922 questions reach one through their topic. There is nothing left to review. Admin settings was revamped by the Settings rebuild a day earlier and the list never caught up. The short view is called high yield in the interface, so the outstanding item says so. Two are non-goals rather than work: coach marks over a product somebody is trying to use are a substitute for the product explaining itself, and clinical AI Mode belongs to ped-ai — this one should not grow a second answer to a question that one already answers. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN --- docs/TODO.md | 59 +++++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index b00e1c8..7dcdffe 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -58,7 +58,7 @@ Captured so nothing is lost while the article writing runs. - [ ] **Pediatric Dentistry has no clinical content** — its source was a disclaimer, so Clinical paths and Diagnosis say so rather than inventing medicine. `mdm_pass check` lists it. Needs an educator or a delete. -- [ ] **10 articles have no clinical view at all** and 13 no short view — the +- [ ] **10 articles have no clinical view at all** and 13 no high-yield view — the original hand-written ones (Bronchiolitis, Kawasaki disease, Acute otitis media …) predate the three-view system. The reader hides a view an article does not have, so nothing is broken; they are simply thinner. @@ -139,13 +139,9 @@ Captured so nothing is lost while the article writing runs. - [x] **What extracted the PDFs?** PyMuPDF (`fitz`) in `pdf_service.py`, with an MD5 skip list for repeated branding images. It pulled every embedded image from all 18 source PDFs, which is why one 767-page document produced 908. -- [ ] **How do the study recommendations work?** — walk through the code. -- [ ] **How would an adaptive session work?** — design before building. - ---- - -## Design agreed, not built - +- [x] **How do the study recommendations work?** — read and written up; see + docs/adaptive-sessions.md, which the prepared-session work rewrote. +- [x] **How would an adaptive session work?** — done 2026-09-12: prepared sessions, with recency decay and a plan shown before it is committed. See docs/adaptive-sessions.md. - [x] **AI Mode (RAG chat)** — done 2026-09-10. `conversations` and `conversation_messages` (migration `a5b6c7d8e9f0`), retrieval across sections, articles, questions and cards with the curated-link boost, the @@ -195,7 +191,9 @@ Captured so nothing is lost while the article writing runs. Articles with a reversible *Mark as read*, then Sessions with Study and Exam mode. Reading progress is per learner and separate from `article_views`: opening an article is not the claim that you finished it. -- [ ] **Admin settings page revamp** — currently ugly; needs restructuring. +- [x] **Admin settings page revamp** — done 2026-09-11 by the Settings + rebuild: People and AI models are native sections, AdminPage is deleted, + and Site policy surfaced the registration switch that had no UI at all. - [x] **Image libraries** — done 2026-09-10. Libraries, per-library grants, tags on the shared vocabulary, and MinIO behind a storage service. - [x] **Media management page (frontend)** — done 2026-09-10. `/media` browses @@ -239,12 +237,7 @@ Captured so nothing is lost while the article writing runs. - [x] **Share dialog** — done 2026-09-11. - [x] **Sharing off site-wide** — done 2026-09-11. Settings → Site policy. Stops new links; one already handed to somebody keeps working. -- [ ] **Remove per-question share/unshare** — `Question.is_shared` and - `PATCH /questions/{id}/share`. Access is the admin-scoped grant tree now. - NOT a small delete: `bank_question_predicate` and - `shareable_question_predicate` are built on is_shared and decide who sees - which questions and what the recommendation denominators are. Needs its - own change with the visibility rules rewritten deliberately. +- [x] **Remove per-question share/unshare** — done 2026-09-12. `Question.is_shared` dropped; the bank is the bank and the grant tree decides who may manage a question. - [x] **Invite-only sign-up** — done 2026-09-11. A switch plus single-use codes an administrator issues, with a note of who each is for and who it let in. The form asks for one only when the site needs it, and never says @@ -284,10 +277,8 @@ Captured so nothing is lost while the article writing runs. global notes tab that floated over the same screen, so it was never clear which notepad you were writing in. The global note stays on the dashboard. - [ ] **Per-question feedback** to the educator. -- [ ] **Tutorial mode** — first-run coach marks ("Step 2 of 6", Skip / Next). - -## Analysis - +- [x] ~~**Tutorial mode**~~ — not wanted. Coach marks over a product somebody + is trying to use are a substitute for the product explaining itself. - [x] **Per-question performance table** — done 2026-09-11 on the session analysis: position, excerpt, difficulty, time, peer percentage; sortable by position / slowest / hardest, ten a page. @@ -360,15 +351,9 @@ Analysis**, which has three tabs. ### Not us -- [ ] **No AI Mode for clinical content.** PedsHub is for learning; the - clinical tool is app.pedshub.com. AI Mode answers about the corpus a - learner is studying, and nothing here is for use at a bedside. - -## Tools, as asked 2026-09-11 (late) - -The whole pipeline from a PDF to a question in the bank lives on one page, -and nothing reaches the bank until an administrator has read it. - +- [x] ~~**No AI Mode for clinical content**~~ — a non-goal rather than a task. + PedsHub is for learning; the clinical side is ped-ai's, and this product + should not grow a second answer to a question that one already answers. - [x] **Move the PDFs into Tools.** Upload, the document list and extraction all move off their own pages and onto the Tools page, because they are one job and were three places. — done — upload, the document list and extraction all live on /tools. @@ -415,15 +400,7 @@ Two screenshots, one flow. only where the question is typed: pressing submit goes to the AI Mode chat with that question already asked and being answered — not to a results list, and not back to an empty box. -- [ ] **AI Mode as a page.** A conversation rail on the left grouped by age - ("Previous 7 days") with a collapse and a compose control; the empty - state centres one large ask box — "How can PedsHub help you today?" — - with attach and dictate in the box, a tip line under it, and three or - four starting prompts as pills with a SHOW MORE beneath. The existing - `AiModePage` becomes this. - -## Taxonomy - +- [x] **AI Mode as a page** — done: conversation rail, citations at the end, practise from an answer. - [x] **Systems subsystems** — done 2026-09-10. 69 subsystems created, 305 conditions nested; the tree is now System → Subsystem → Condition. - [x] **Cross-system duplicate conditions merged** — done 2026-09-10. 216 names @@ -447,9 +424,11 @@ Two screenshots, one flow. system: 301 the chooser declined and 15 with no viable candidate. - [x] **Every question filed below its system** — done 2026-09-10. The last 316 were forced onto their nearest candidate; 0 remain on a bare system. -- [ ] **Review the classifier's work** — roughly 3 in 4 were right on a spot - check, so expect some wrong. The original system is kept as a cross-link, - so a wrong pick never loses a question. Worth an editorial pass. +- [x] **Review the classifier's work** — moot 2026-09-12. The classifier + assigned an organ system per question; systems now hang off the topic + instead, and `question_tag_links` holds zero rows of type `system`. Every + one of the 569 topics carries a system and all 2,922 questions reach one + through their topic, so there is no longer a per-question pick to review. - [ ] **31 questions tie between equally specific conditions** — left alone. - [x] **Real organ systems, and symptoms grouped under them** — done 2026-09-10. The 27 "systems" were disciplines; that tree is now the Topics facet, and