Found by the #387 upload journey (PR #432).
GET /api/documents/user/{id} returns offering_id but not course_id, while frontend/src/components/screens/Library.tsx filters and labels on d.course_id — so uploaded documents can never match a course filter and always render unlabeled (counted as 'Uncategorized').
Fix direction: either the API resolves and includes the abstract course_id (services/academics.py offering_course_id), or Library maps offering→course client-side. Per the repo convention the HTTP boundary keeps the abstract course_id, so the backend including it is probably right.
Discovered-by: #387 / PR #432.
🤖 Generated with Claude Code
Found by the #387 upload journey (PR #432).
GET /api/documents/user/{id}returnsoffering_idbut notcourse_id, whilefrontend/src/components/screens/Library.tsxfilters and labels ond.course_id— so uploaded documents can never match a course filter and always render unlabeled (counted as 'Uncategorized').Fix direction: either the API resolves and includes the abstract
course_id(services/academics.pyoffering_course_id), or Library maps offering→course client-side. Per the repo convention the HTTP boundary keeps the abstractcourse_id, so the backend including it is probably right.Discovered-by: #387 / PR #432.
🤖 Generated with Claude Code