Add auto-detected admin checklist to the event dashboard - #2126
Open
maebeale wants to merge 9 commits into
Open
Conversation
maebeale
force-pushed
the
maebeale/event-dashboard-todo-section
branch
from
August 9, 2026 14:55
c4c4f11 to
ac59eeb
Compare
maebeale
marked this pull request as ready for review
August 9, 2026 20:28
maebeale
force-pushed
the
maebeale/event-dashboard-todo-section
branch
from
August 11, 2026 07:12
d994d1a to
2f702f7
Compare
Admins had no at-a-glance view of the outstanding work to run an event; they had to infer it from roster filters, the scholarships page, bulk payments, etc. This adds an "Event checklist" panel under the headcount cards that derives the whole lifecycle of to-dos (set up -> before the event -> during & after) purely from system state — nothing is manually checkable. Outstanding work groups by phase at the top; satisfied / not-applicable items collapse below. Registrant tasks link to the bulk-reminder flow pre-filtered; admin tasks link to the roster / Scholarships / bulk-payments / forms / reports pages pre-filtered. Also adds the drill-in plumbing the checklist needs: an org_status=none roster filter (registrations with no organization linked) and an event_id filter on the forms index. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The "Allocate bulk payments" row now expands to show who submitted each bulk payment (name + payer organization) and how much of it is still unapplied, so an admin can see the money's source without leaving the dashboard. Registrant-facing checklist items are retitled with a "Remind" prefix and all route to the bulk-reminder flow pre-filtered by criteria (payment/CE/scholarship status); the scholarship-agreement reminder, which has no semantic filter, recreates its recipient selection via the reminder page's name filter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Retitle the registrant-facing checklist items to "Send reminder: <thing>" and shorten their button to "Send" so the action reads clearly without doubling. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Detected by the presence of any event_staffs; links to the event staff page so an admin can add the roster. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Correct the copy — CE hours are registrant-submitted — and link the row to the participation report rather than the roster. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Left over from resolving the organization_status rebase conflict. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Events IA refactor renamed statistics_events_path to reports_events_path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Counts active registrants not yet set up in every onboarding system (EventRegistration::CHECKLIST_STEPS) and links to the event onboarding page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Counts active registrants with no portal account yet and links to the reminders flow's bulk invite mode (mode=invite), which #2168 added. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
maebeale
force-pushed
the
maebeale/event-dashboard-todo-section
branch
from
August 12, 2026 15:07
d2c3c93 to
5bfa0a3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 suggested review level: 5 Inspect 🔬 new EventChecklist service + ~30 EventDashboard detection methods + a new roster filter, all feeding a new dashboard panel
What is the goal of this PR and why is this important?
How did you approach the change?
EventChecklistservice turns state into an ordered list ofItems (:todo/:done/:not_relevant), each with a count, the affected registrants, and a pre-filtered drill-in. Registrant tasks → bulk-reminder flow; admin tasks → roster / Scholarships / bulk-payments / forms / reports.EventDashboardmethods (reusing its existing per-registrant maps). Not-relevant items skip their queries, so pre-event pages never compute post-event work (e.g. certificate readiness).org_status=noneroster filter (registrations with no org linked at all) and anevent_idfilter on the forms index.Anything else to add?
event_dashboard.rb, so expect small add-only merge conflicts there.event_checklist_spec(bucketing, ordering, free/pre/post gating, survey placeholder, CTA paths), newEventDashboardcount specs,organization_status("none")scope, formsevent_idfilter, and a dashboard render smoke test.