Conversation
There was a problem hiding this comment.
Pull request overview
Adds EvalHarvest-backed instructor evaluation visibility/editing to the Effort course detail experience, alongside new course-effort endpoints and UI refactors to support per-course effort management.
Changes:
- Introduces EvalHarvest EF DbContext + service layer to read CERE evaluation data and manage ad-hoc evaluation entries.
- Adds new Effort Courses API endpoints for course effort records, possible instructors, and evaluations (create/update/delete).
- Updates Vue Effort UI to support course detail effort/evaluation tabs, grouped course lists, and shared CSS extraction.
Reviewed changes
Copilot reviewed 46 out of 46 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| web/appsettings.Test.json | Adds EvalHarvest connection string key for test config. |
| web/appsettings.Production.json | Adds EvalHarvest connection string key for prod config. |
| web/appsettings.Development.json | Adds EvalHarvest connection string key for dev config. |
| web/Program.cs | Registers EvalHarvest DbContext and service in DI. |
| web/Areas/Effort/Services/IEvalHarvestService.cs | Defines EvalHarvest service contract for evaluations + ad-hoc CRUD. |
| web/Areas/Effort/Services/ICourseService.cs | Adds course-effort and possible-instructors service methods. |
| web/Areas/Effort/Services/EvalHarvestService.cs | Implements EvalHarvest evaluation lookup + ad-hoc create/update/delete. |
| web/Areas/Effort/Services/CourseService.cs | Injects classification service into DTO mapping; implements new course-effort methods. |
| web/Areas/Effort/Models/Entities/EhQuestion.cs | Adds EvalHarvest question entity mapping. |
| web/Areas/Effort/Models/Entities/EhQuant.cs | Adds EvalHarvest quant entity mapping. |
| web/Areas/Effort/Models/Entities/EhPerson.cs | Adds EvalHarvest person entity mapping. |
| web/Areas/Effort/Models/Entities/EhCourse.cs | Adds EvalHarvest course entity mapping. |
| web/Areas/Effort/Models/DTOs/Responses/PossibleCourseInstructorsDto.cs | Adds API response DTO for grouped instructor options. |
| web/Areas/Effort/Models/DTOs/Responses/CourseEvaluationStatusDto.cs | Adds API response DTO for course evaluation matrix. |
| web/Areas/Effort/Models/DTOs/Responses/CourseEffortRecordDto.cs | Adds API DTOs for course-effort record listing + wrapper response. |
| web/Areas/Effort/Models/DTOs/Responses/AdHocEvalResultDto.cs | Adds result DTO for ad-hoc evaluation operations. |
| web/Areas/Effort/Models/DTOs/Requests/UpdateAdHocEvalRequest.cs | Adds request DTOs for ad-hoc evaluation create/update. |
| web/Areas/Effort/Data/EvalHarvestDbContext.cs | Adds DbContext + mappings for EvalHarvest tables. |
| web/Areas/Effort/Controllers/CoursesController.cs | Adds endpoints for course effort, possible instructors, and evaluations CRUD. |
| web/Areas/Effort/Constants/EffortPermissions.cs | Adds Eval permission constant used by Effort UI/API. |
| test/Effort/CoursesControllerTests.cs | Adds controller tests covering the new endpoints. |
| test/Effort/CourseServiceTests.cs | Updates tests to satisfy new CourseService constructor dependency. |
| VueApp/src/store/UserStore.ts | Tightens permission typing and login check strictness. |
| VueApp/src/Effort/types/index.ts | Re-exports new Effort course-effort and evaluation types. |
| VueApp/src/Effort/types/evaluation-types.ts | Adds frontend types for evaluation matrix + ad-hoc requests/results. |
| VueApp/src/Effort/types/course-effort-types.ts | Adds frontend types for course-effort endpoints. |
| VueApp/src/Effort/services/course-service.ts | Adds frontend API calls for course effort and evaluations. |
| VueApp/src/Effort/router/routes.ts | Extends CourseDetail route to support optional effort/evaluation tab param. |
| VueApp/src/Effort/router/index.ts | Loads Eval permissions in navigation guard to enable evaluation UI. |
| VueApp/src/Effort/pages/InstructorList.vue | Extracts shared dept table CSS into shared stylesheet. |
| VueApp/src/Effort/pages/CourseList.vue | Groups courses by dept, adds resident course section, and reuses shared CSS. |
| VueApp/src/Effort/pages/CourseDetail.vue | Adds effort/evaluation tab UI, loads effort records + evaluation data, adds dialogs. |
| VueApp/src/Effort/effort-record-table.css | Extracts shared effort table styling into a global stylesheet. |
| VueApp/src/Effort/effort-forms.css | Adjusts form spacing rules for hints/counters. |
| VueApp/src/Effort/effort-dialogs.css | Adds shared dialog sizing utility classes. |
| VueApp/src/Effort/dept-table.css | Adds shared grouped-by-dept table styles. |
| VueApp/src/Effort/composables/use-effort-permissions.ts | Adds eval + create-effort permission helpers. |
| VueApp/src/Effort/components/EvaluationStatusMatrix.vue | Adds evaluation status matrix table component. |
| VueApp/src/Effort/components/EvalStatusCell.vue | Adds per-cell evaluation display/actions component. |
| VueApp/src/Effort/components/EffortRecordsTable.vue | Reuses shared effort-record table styles and tweaks icon sizing. |
| VueApp/src/Effort/components/EffortRecordsDisplay.vue | Reuses shared effort-record table styles and tweaks icon sizing. |
| VueApp/src/Effort/components/EditEvaluationDialog.vue | Adds dialog for ad-hoc evaluation entry/edit with computed stats. |
| VueApp/src/Effort/components/CourseEffortTable.vue | Adds per-course grouped effort table component. |
| VueApp/src/Effort/components/AddCourseEffortDialog.vue | Adds dialog to create effort records from course detail page. |
| .vscode/settings.json | Adds a VS Code chat setting. |
| .oxlintrc.json | Adds UserStore to legacy filename-case override list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 46 out of 46 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 47 out of 47 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 47 out of 47 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
web/Areas/Effort/Models/DTOs/Requests/UpdateAdHocEvalRequest.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 47 out of 47 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 47 out of 47 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 47 out of 47 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 47 out of 47 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
fc72cbd to
3605da6
Compare
- Add/edit/delete effort records from course detail page with per-record permission checks - Instructor search grouped by course instructors vs all available, with type-ahead filtering - Redesign course list with department table, search, and pagination - Guard against stale effort data on course navigation and align add-effort UI gate with backend CreateEffort/ VerifyEffort permissions
- Show evaluation status matrix in a tabbed view alongside effort records, with CERE harvest data and ad-hoc entry support - Add EvalHarvest database integration (EhCourse, EhPerson, EhQuant entities) with read-only CERE + CRUD for ad-hoc evaluations - New permissions: ViewEvalResults, EditAdHocEval - Fix course list dialogs stacking when switching between Import from Banner and Manual Entry
- Replace manual mean/SD/N inputs with server-side derivation in ApplyRatingCounts; remove those fields from API requests - Redesign eval dialog to horizontal grid matching legacy layout with consolidated validation instead of per-field error chips - Always show tabs on course detail; sync active tab to URL - Eval tab label now shows instructor coverage ratio (e.g. 2/3)
…ce column - Show CERE redirect banner (Faculty Eval Viewer link) instead of tabs when harvest data exists; show tabs only for ad-hoc eval courses - Remove "Source" column and Ad-Hoc/CERE labels from evaluation matrix - Add ARIA roles, labels, and live regions across effort/eval dialogs - Expand CoursesController test coverage with shared helpers and new tests for GetCourseEffort, GetPossibleInstructors, and edge cases
- Reject ad-hoc evals for instructors without effort on the course - Skip redundant eval permission fetch if already loaded - Use HashSet/Dictionary for instructor lookup performance - Allow guest instructors in course instructor list
…rvice tests - Prevent duplicate API calls when rapid navigation triggers concurrent beforeEach guards - Add unit tests for ApplyRatingCounts (mean, SD, percentages), IsCereBlocked, and HasAnyResponses
…dex lookups - Add FacilitatorEvalId==0 filter to evalData query to exclude facilitator evaluations from instructor course eval status - Pre-index ehCourses and evalData into dictionary/lookup to eliminate O(n²) linear searches in nested loop
- Reset eval permissions latch on failed fetch so navigation retries - Cap ad-hoc eval rating counts at 500 to prevent data-entry errors - Add unit tests for GetCourseEffortAsync and GetPossibleInstructorsForCourseAsync
be7fdbe to
fcf8e4c
Compare
No description provided.