Summary
Phase 2 of the badge expansion. Wire `computeBadges` to consume tables that already exist in the schema but don't yet feed the recognition system: `group_memberships`, `event_committee_assignments`, `event_sessions`, and `event_session_types`. Adds ~10 new badges spanning sustained community participation and granular conference roles.
Requirements
Context
Tables already exist (verified during the disciplines/skills work): `groups`, `group_memberships`, `event_committee_areas`, `event_committee_assignments`, `event_sessions`, `event_session_presenters`, `event_session_types`. Nothing in `badges.ts` reads them today.
The Phase 1 issue (#1951) is a prerequisite — its widened `computeBadges` signature is the natural place to add these new inputs. Phase 3 introduces the brand-new `awards` / `mentorship` / `contributions` tables.
Implementation Notes
- `loadMemberDossier` will need to load these additional rows (or join them lazily) before passing to `computeBadges`. Worth measuring query count — the Promise.all batch is already a few queries deep.
- Conference-role badges should prefer `event_sessions` data over `event_attendances.notes` regex. If a session matches via `event_session_presenters`, emit the session-type badge; otherwise fall back to the existing logic.
- Group membership end-dating (if the join carries dates) should distinguish "current chair" from "former chair" — current rates higher in the visual hierarchy.
Summary
Phase 2 of the badge expansion. Wire `computeBadges` to consume tables that already exist in the schema but don't yet feed the recognition system: `group_memberships`, `event_committee_assignments`, `event_sessions`, and `event_session_types`. Adds ~10 new badges spanning sustained community participation and granular conference roles.
Requirements
Context
Tables already exist (verified during the disciplines/skills work): `groups`, `group_memberships`, `event_committee_areas`, `event_committee_assignments`, `event_sessions`, `event_session_presenters`, `event_session_types`. Nothing in `badges.ts` reads them today.
The Phase 1 issue (#1951) is a prerequisite — its widened `computeBadges` signature is the natural place to add these new inputs. Phase 3 introduces the brand-new `awards` / `mentorship` / `contributions` tables.
Implementation Notes