Repository navigation
#6586 - Batch reassessment outcome - #6742
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Concurrent requests can display stale results, and the failure-reason contracts exclude emitted null values.
4 open findings
What changed in this PR
Adds detailed, paginated batch reassessment results for ministry users, including filtering, statuses, and navigation to application assessments.
Changes:
- Adds the batch reassessment detail API, DTOs, filtering, pagination, and e2e coverage.
- Adds the results view, status chips, history actions, and navigation.
- Adds pending counts and application-level outcomes.
| File | Description |
|---|---|
sources/packages/web/src/views/aest/student/applicationDetails/AssessmentsSummary.vue |
Supports custom back navigation. |
sources/packages/web/src/views/aest/BatchReassessmentDetail.vue |
Adds the detailed results page. |
sources/packages/web/src/views/aest/BatchReassessment.vue |
Updates the input label. |
sources/packages/web/src/types/contracts/DataTableContract.ts |
Adds pending/action and detail table headers. |
sources/packages/web/src/types/contracts/BatchReassessment.ts |
Defines application result statuses. |
sources/packages/web/src/types/AppRoutes.ts |
Defines the detail route path. |
sources/packages/web/src/services/http/dto/BatchReassessment.dto.ts |
Adds pending counts and result DTO. |
sources/packages/web/src/services/http/BatchReassessmentApi.ts |
Adds the paginated detail request. |
sources/packages/web/src/services/BatchReassessmentService.ts |
Exposes detail retrieval to views. |
sources/packages/web/src/router/AESTRoutes.ts |
Registers detail and back-navigation routes. |
sources/packages/web/src/constants/routes/RouteConstants.ts |
Adds the detail route identifier. |
sources/packages/web/src/components/generic/StatusChipBatchReassessmentApplicationResult.vue |
Renders result status chips. |
sources/packages/web/src/components/aest/BatchReassessmentHistory.vue |
Adds pending counts and detail navigation. |
sources/packages/backend/apps/api/src/utilities/datatable-config.ts |
Defines detail pagination options. |
sources/packages/backend/apps/api/src/services/batch-reassessment/batch-reassessment.service.ts |
Queries and classifies application outcomes. |
sources/packages/backend/apps/api/src/services/batch-reassessment/batch-reassessment.service.models.ts |
Defines detail service models. |
sources/packages/backend/apps/api/src/route-controllers/models/pagination.dto.ts |
Validates result filtering and sorting. |
sources/packages/backend/apps/api/src/route-controllers/batch-reassessment/models/batch-reassessment.dto.ts |
Defines API output DTOs. |
sources/packages/backend/apps/api/src/route-controllers/batch-reassessment/batch-reassessment.aest.controller.ts |
Adds the detail endpoint. |
sources/packages/backend/apps/api/src/route-controllers/batch-reassessment/_tests_/e2e/batch-reassessment.aest.controller.getBatchReassessments.e2e-spec.ts |
Covers pending summary counts. |
sources/packages/backend/apps/api/src/route-controllers/batch-reassessment/_tests_/e2e/batch-reassessment.aest.controller.getBatchReassessmentApplications.e2e-spec.ts |
Covers detail retrieval, filtering, validation, and authorization. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| query | ||
| .orderBy( | ||
| "batchApplication.applicationNumber", | ||
| paginationOptions.sortOrder ?? FieldSortOrder.ASC, | ||
| ) |
There was a problem hiding this comment.
Search logic is kept simple as the only supported sortField (which is also the default) is applicationNumber.
| * applications were successfully reassessed, how many failed, and how many | ||
| * are still pending. |
|
Great work. Please take a look at the comments. |
| searchCriteria: searchCriteria.value, | ||
| }; | ||
| if (selectedFilter.value !== ResultFilter.All) { | ||
| criteria.result = selectedFilter.value; |
| }); | ||
| if (paginationOptions.searchCriteria) { | ||
| query.andWhere("batchApplication.applicationNumber ILIKE :search", { | ||
| search: `%${paginationOptions.searchCriteria.trim()}%`, |
There was a problem hiding this comment.
Just a thought but if the searchCriteria is a whitespace " " wouldn't the trim make the search ILIKE '%%' ?
There was a problem hiding this comment.
Good catch. I'll update the service.
| const BATCH_REASSESSMENT_NUMBER_SEQUENCE_NAME = "BATCH_REASSESSMENT_NUMBER"; | ||
| const BATCH_REASSESSMENT_CHUNK_SIZE = 1000; | ||
| /** | ||
| * Assessment statuses indicating the application was successfully reassessed, including cancellations in progress.. |
| :toggled="!paginatedApplications.count && !loading" | ||
| message="No applications found." | ||
| > | ||
| <v-data-table-server |
There was a problem hiding this comment.
Please check there if loadApplications is being call twice on mount. In theory the data table @update:options should trigger on mount (as well as the component onMount)
There was a problem hiding this comment.
This is a known issue with lazily loaded data tables as captured in ZenHub #5457. I have put in a small fix that may be the solution moving forward.
|
| const application = batchApplication.studentAssessment?.application; | ||
| // The versions join is filtered to the current application only. | ||
| const [currentApplication] = | ||
| application?.parentApplication.versions ?? []; |
There was a problem hiding this comment.
Versions must not be null or empty and hence fallback is not required.
There was a problem hiding this comment.
On closer analysis, the fallback isn't for versions but for application since not all reassessments have an application. And the destructuring will fail without it.
dheepak-aot
left a comment
There was a problem hiding this comment.
Thanks for making the changes. Looks good 👍Left a minor comment.




Summary
Web
BatchReassessment.vuescreen.BatchReassessmentOutcome.vuescreen to view application level detailsAPI
Screenshots
Ministry -> Batch Reassessment
Ministry -> Batch Reassessment Outcome
Navigation to application after edit
E2E tests
BatchReassessmentAESTController(e2e)-getBatchReassessmentApplications
BatchReassessmentAESTController(e2e)-getBatchReassessments