🪣Müsli bucket, slice 0: Rework the finalization process#1104
Open
fosterfarrell9 wants to merge 41 commits into
Open
🪣Müsli bucket, slice 0: Rework the finalization process#1104fosterfarrell9 wants to merge 41 commits into
fosterfarrell9 wants to merge 41 commits into
Conversation
… logic Co-authored-by: Copilot <copilot@github.com>
… for rejection reasons Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…ove localization, and enhance UI for unassigned and rejected candidates Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…ion reasons, and update UI components Co-authored-by: Copilot <copilot@github.com>
…tion logic, enhance UI, and improve localization Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…ent and update related components and specs Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
This comment was marked as outdated.
This comment was marked as outdated.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## next #1104 +/- ##
==========================================
+ Coverage 63.97% 64.43% +0.46%
==========================================
Files 415 424 +9
Lines 13492 14247 +755
==========================================
+ Hits 8631 9180 +549
- Misses 4861 5067 +206 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
… response assertions
Co-authored-by: Copilot <copilot@github.com>
1 task
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.
This PR closes a larger architectural gap that was left in #1052 and whose extent became only clear to me when I implemented student performance policies in #1084. The problem is that the old workflow mixed separate things like eligibility checking and allocation/finalization. In practice this meant that students who clearly failed a policy and shouldn't even be considered for free seats were actually allowed to get one, with the "violator dashboard" being the one step that prevented them from getting a seat - and where the teacher had to choose between just giving them a seat or completely hard-deleting their registration (with no trace left for either side what happened). The PR introduces a dedicated screening step before allocation/finalization that classifies outcomes as
pass,auto_reject, orblocker. The last one is necessary for situations where data are missing for policy evaluation like missing certificates for student performances. In the new solution, only blockers are being brought to the teachers attention in the finalization process, registrations withauto_rejectare automatically rejected, but they are stored, together with their rejection reason. In post-finalization, teachers can clearly distinguish rejected students from merely unassigned ones, inspect the reason, and still manually override by adding them if needed.In the process of implementing this PR, I got more and more annoyed at the very colorful design of buttons, alerts etc in the allocation and finalization process, so that I finally decided to make the design are little more muted (see the screenshots below). I think this now fits a lot better with the general design in the groups tab.
Since this is slice 0 of the old muesli-bowl and in there the rake tasks providing stuff to play around in the GUI with became a little chaotic, I restructured the whole demo task business. The demo workflow now uses four clearly named tasks:
demo:flagsenables the feature flags needed for the current slice.demo:campaignsprepares the reusable campaign examples.demo:rostersprepares roster-related demo data (without the need to manually finalize campaigns)demo:setupruns the full setup for the current slice.This gives the demo setup a clearer structure and makes it easier to run exactly the part you need, while keeping the overall workflow consistent as more Muesli features are added in later slices.
Note for the reviewer: In order to get a good feeling of how it works, just run the
demo:setuptask and finalize all campaigns that this provides (two for Linear Algebra 2 and three for the Campaign Test Seminar).Implementation notes
Registration::ScreeningServiceand integrated it into allocation/finalization (block on blockers, auto-reject deterministic violators).Registration::UserRegistration(reason fields + timestamps) and track allocation decisions with the new columnallocation_decided_atonRegistration::Campaign.Below are a few screenshots