SOC sections are filed as Recitations unless the section label contains LEC #39
Labels
No labels
bug
chore
data
feature
frontend
good first issue
intermediate
needs/docs
needs/research
needs/upstream
type/bug
type/external
type/feature
type/refactor
urgency
high
urgency
immediate
urgency
low
urgency
medium
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
ScottyLabs/cal#39
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What's wrong
build_events_and_rrules()uses category "Lectures" only when the section label containsLEC, and puts everything else in "Recitations". Most CMU courses have noLecsection at all; their lettered sections (A, B, ...) are the class itself. A dry parse of the Fall 2026 SOC page (2026-10-03) gives:Lecsection (e.g. 48-025 has only section A), so all their meetings land in "Recitations";Lec/Lec N(274), digits (22), others such as SV, RW, AA (about 60).How to reproduce
cd api && python -m scraper.scripts.export_soc --semester Fall_26 --dry-run, then countcategory_keyper event inbuild_events_and_rrules()(or add the counts todry_run_report()).Expected
A rule based on the SOC data. Rule to check: a course's lettered sections are recitations only when the course also has a
Lecsection; otherwise each section is a class meeting (a lecture). Check the rule against a few known courses (a CS course with Lec plus recitations, a single-section seminar, a Tepper mini) before coding it.Where to look
api/scraper/transforms/soc_events.pyL31-36 (decision);group_soc_rows()inapi/scraper/helpers/event.pygives you all of a course's sections.api/scraper/persistence/supabase_categories.py(category names).category_idis not part of the event identity, so a rerun moves existing events to the right category.2c5f2e9.Done when
api/tests/scraper_events/test_section_category.py(a course with Lec plus A/B, a course with only A/B, a mini A3)