USRSE / USRSE/usrse.github.io

feat(badges): plumb working group and refined conference role badges

Open
#1,952 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
HTML
Stars
33
Forks
104
Avg merge
12h 3m
Merged PRs (30d)
10

Description

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

  • Working Group Member / Working Group Chair badges from `group_memberships` joined to `groups` (filter to working-group type, distinguish chair/co-chair from rank-and-file).
  • Affinity Group Member / Affinity Group Coordinator from the same tables filtered to affinity-group type.
  • Program Committee badge from `event_committee_assignments`.
  • Reviewer badge from `event_committee_assignments` filtered to reviewer-style areas.
  • Refined conference-role badges using `event_sessions` and `event_session_types`: Keynote Speaker, Plenary Speaker, Lightning Talk, Tutorial Lead, Workshop Lead, Birds of a Feather Lead, Panelist. Replaces the current heuristic regex on `event_attendances.notes` with a proper join.
  • Backwards compatibility: existing `Talk` and `Poster` badges continue to work for events that don't have richer session data.
  • `pickFeaturedBadges` updated — Keynote and Plenary should rank near the top of the achievements strip alongside Service tier.

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Phase 1 issue #1951, then inspect badges.ts and loadMemberDossier to trace how computeBadges receives data. Load the named group, committee, session, and session-type rows, implement the listed badges and ranking changes, preserve the existing Talk and Poster fallback, and measure the added query count.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.