pub struct AttentionRegistration {Show 32 fields
pub id: Uuid,
pub user_id: Uuid,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub email: Option<String>,
pub course_id: Uuid,
pub course_name: String,
pub course_module_id: Uuid,
pub course_module_name: Option<String>,
pub state: CreditRegistrationState,
pub state_entered_at: DateTime<Utc>,
pub error_code: Option<CreditRegistrationErrorCode>,
pub attempt_count: i32,
pub needs_admin_attention: bool,
pub next_attempt_at: DateTime<Utc>,
pub submitted_at: Option<DateTime<Utc>>,
pub resubmit_not_before: Option<DateTime<Utc>>,
pub student_number: Option<DbSecret>,
pub stuck_in_state: bool,
pub permanent_error: bool,
pub retry_window_expired: bool,
pub misregistered: bool,
pub too_many_attempts: bool,
pub outcome_uncertain: bool,
pub total_count: i64,
pub stuck_in_state_count: i64,
pub permanent_error_count: i64,
pub retry_window_expired_count: i64,
pub misregistered_count: i64,
pub too_many_attempts_count: i64,
pub outcome_uncertain_count: i64,
pub flagged_without_reason_count: i64,
}Expand description
One row the Errors tab wants a human to look at, with the detectors that picked it.
The *_count fields are totals over the whole queue this call selected, not over the page, so a
caller reads them off the first row instead of running a second aggregate.
Fields§
§id: Uuid§user_id: Uuid§first_name: Option<String>§last_name: Option<String>§email: Option<String>§course_id: Uuid§course_name: String§course_module_id: Uuid§course_module_name: Option<String>§state: CreditRegistrationState§state_entered_at: DateTime<Utc>§error_code: Option<CreditRegistrationErrorCode>§attempt_count: i32§needs_admin_attention: boolThe pipeline’s cached “a human should look at this”. Membership in the queue does not depend on it alone, and it is never reported as a reason.
next_attempt_at: DateTime<Utc>§submitted_at: Option<DateTime<Utc>>§resubmit_not_before: Option<DateTime<Utc>>§student_number: Option<DbSecret>§stuck_in_state: bool§permanent_error: bool§retry_window_expired: bool§misregistered: bool§too_many_attempts: bool§outcome_uncertain: bool§total_count: i64§stuck_in_state_count: i64§permanent_error_count: i64§retry_window_expired_count: i64§misregistered_count: i64§too_many_attempts_count: i64§outcome_uncertain_count: i64§flagged_without_reason_count: i64Rows the flag alone put in the queue. Reachable by no reason, so a caller grouping by reason has to account for them separately or leave part of its own queue unreachable.
Implementations§
Source§impl AttentionRegistration
impl AttentionRegistration
Sourcepub fn resubmission_facts(&self) -> ResubmissionFacts
pub fn resubmission_facts(&self) -> ResubmissionFacts
What decides whether a human may move this row; see ResubmissionFacts. The queue never
holds a superseded row.
Sourcepub fn reasons(&self) -> Vec<AttentionReason>
pub fn reasons(&self) -> Vec<AttentionReason>
The detectors that picked this row.
Sourcepub fn counts_by_reason(&self) -> Vec<(AttentionReason, i64)>
pub fn counts_by_reason(&self) -> Vec<(AttentionReason, i64)>
How many rows of the whole queue each detector picked, in AttentionReason::ALL order.
Trait Implementations§
Source§impl Clone for AttentionRegistration
impl Clone for AttentionRegistration
Source§fn clone(&self) -> AttentionRegistration
fn clone(&self) -> AttentionRegistration
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for AttentionRegistration
impl RefUnwindSafe for AttentionRegistration
impl Send for AttentionRegistration
impl Sync for AttentionRegistration
impl Unpin for AttentionRegistration
impl UnsafeUnpin for AttentionRegistration
impl UnwindSafe for AttentionRegistration
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].