Feature/ppi data adapter - #513
Conversation
* refactor: format codebase and implement lint checks * ci: fail lint workflow on warnings * chore: remove rule ignore * refactor: remove empty lifecycle methods * chore: revert empty method * refactor: switch to modern lifecycle methods * refactor: switch to records * refactor: consistent type assertions * refactor: consistent type definitions * refactor: remove empty block statements * chore: re-enable no useless escape rule * chore: reenable no misleading character class rule * chore: no wrapper object types * chore: fix no constant binary expression * refactor: remove this alias * refactor: no unused expressions * refactor: prefer const * chore: no var rule * refactor: no unused vars * refactor: no inline templates * refactor: no inline styles * refactor: enforce modern angular control flow * refactor: no empty functions * chore: update pull request template * refactor: consistent generic constructors * refactor: no empty object types * chore: remove todo * refactor: remove use of any * refactor: enforce alt text * chore: enforce no empty content * chore: add todo * chore: add recommended rules * refactor: sort tailwind classes
* chore: init communication system editor * feat: add core communications logic * refactor: improve ui layout * refactor: preview email * refactor: ability to edit conditions and actions * refactor: clean up ui layout * feat: enable set execution * refactor: improve layout * refactor: improve ui layout * feat: add confirmation modals to execute rule and set * feat: add scheduling ui * chore: remove duplicate header * fix: ensure students are loaded * refactor: move buttons * fix: disable horizontal scrolling * refactor: improve ui * chore: revert full width change * chore: improve current week ui * chore: format * feat: add spec con days condition * feat: add task comment action * chore: fix layout * chore: remove unnecessary shortcuts * refactor: use server side current week number * refactor: modularise components * chore: fix styling
- students must wait until all tasks have finished processing before clicking on create portfolio
…ms#1263) * chore: upgrade gantt chart * feat: add ability to screenshot gantt chart * chore: fix date formatting * refactor: enable accurate screenshotting of gantt chart * chore: improve screenshot name * chore: extend start date of chart if todays date lands outside
feat: task list filters and sorting
feat: rediscuss status
…tes to PPI widget
feat: add peer progress indicator (ppi) data contract, mock service, …
… into feature/PPI-F03-ppi-widget-states
…ppi-widget-states feat: add safe loading, hidden, unavailable and error states to task-sheet PPI widget (PPI-F03)
…ress-calculations feat: add PPI progress calculation helper and tests
…ression PPI-T02 - Add reusable fixtures and fixture‑only regression tests
… into feature/ppi-burndown-comparison fix(ppi): mock data to real data
…down-comparison feat: add peer comparison to progress burndown
|
Both of these are aimed at a base that cannot review them, and it is worth fixing before either gets any older.
This is the exact shape that closed all fifteen of our upstream PRs in T1, and it closed one of ours in the org this trimester too ( Retargeting at What that leaves:
Two smaller things while these are open. The CI is not missing, it is waiting on someone. Both head branches have workflow runs sitting at #513's body names Happy to help get the branch request in, it is the same conversation for notifications. |
Description
Adds the unit-level PPI data adapter layer, typed interfaces, a state resolver, and a service method — extending Gurwinder's existing task-level
PeerProgressIndicatorcontract rather than replacing it. Gives the UI a stable boundary between backend data and display logic for unit-level peer progress, so a future unit-level visual component (PPI-F02) can consume typed data without wiring its own API/mock handling.Fixes PPI-F01
Missing API field, documented per acceptance criterion 5: no real unit-level aggregate endpoint exists yet —
getUnitSummary()is mock-only, same situation as the existing task-level service. Smallest reasonable backend follow-up: a GET endpoint returning the six-state-shaped cohort aggregate scoped byunitId+targetGrade(notaskDefinitionId), plus the caller's ownstudentPercentagecomputed server-side from that student's actual task completions — this specific field can't be meaningfully mocked, since it depends on real per-student data the frontend must never compute itself.Type of change
How Has This Been Tested?
21/21 passing, run twice. A pre-existing, unrelated file (
peer-progress-indicator-state.spec.ts) hit the already-documented Vitest forks-pool timeout once during a full-suite run; confirmed unrelated by pairing it with a different file and getting a clean pass.npm run typecheck: clean.npx eslinton all touched files,--max-warnings 0: clean.Testing Checklist:
[ X] Tested in latest Chrome
[ X] Tested in latest Firefox
(Not applicable — this PR is adapter/interface work only, no UI or visual component touched, per acceptance criterion 6.)
Checklist: