Expand description
The Needs attention queue: which live rows want a person, why, and which of them a blocking problem, a dismissal or a timing threshold alone accounts for.
One query finds every row any detector picks; AttentionStanding then sorts each into
exactly one section. Every count of “needs attention” (tab badge, overview, Courses column,
Registrations filter, daily snapshot) is count_needing_attention or a grouping of the same
rows, so none can disagree.
Structs§
- Attention
Dismissal - One dismissal still in force or recently made, for the “Dismissed recently” section.
- Attention
Registration - One live row at least one detector picked.
- Attention
Rules - Everything that decides which rows are picked and where each lands.
- Blocking
Problem - A problem that holds up many registrations at once.
- Blocking
Problems - The problems currently holding up many rows at once, as the alert rules see them.
- Stopped
Phase - A processing phase that is paused or late.
Enums§
- Attention
Reason - Why a row is picked. A row can carry several.
- Attention
Standing - Which section of the Needs attention tab a picked row belongs to. Exactly one per row.
- Blocking
Problem Kind - What kind of thing a
BlockingProblemis, which decides what itssubjectnames.
Constants§
- STUDENT_
NUMBER_ STUCK_ AFTER_ PRESS - How long after an “I have enrolled” press a fetch of the code’s enrolment list must have started for a missing linking email to mean the student is stuck. Above the longest press-to-list delay seen in production (56 min).
- TOO_
MANY_ SUBMIT_ RETRIES - Resends after which retrying is not the answer. Verify polls do not count: confirming routinely takes many.
Functions§
- count_
needing_ attention - The canonical Needs attention count: what the tab badge, the overview and the daily snapshot show.
- dismiss_
attention - Takes a row off the queue for as long as it carries only
reasons, replacing any earlier dismissal of it. Call in the transaction that records the audit action. - get_
attention_ items - Every live row at least one detector picks, oldest phase start first, narrowed to
only_idswhen given. Superseded rows are outside every detector: acting on a replaced attempt is never right. - get_
dismissals_ since - Dismissals made since
since, newest first. - needs_
course_ setup - Whether what stopped a row carrying
error_codeis the module’s configuration rather than anything support can fix.