Summary
The analytics ReportFacultyDto only exposes id and name. The faculty analytics / faculty report UI renders the faculty's name as the page title but has no visual identifier, and the frontend has no way to show the faculty's profile picture on that screen today.
The user entity already carries user_profile_picture (synced from Moodle and already exposed on FacultyShortResponseDto used by enrollments), so the data is available — it just isn't surfaced on the analytics report DTO.
Scope
- Add optional
profilePicture to ReportFacultyDto.
- Update
AnalyticsService.BuildFacultyReportData to select u.user_profile_picture alongside name and include it on the returned faculty DTO.
- Treat empty strings as null (
user_profile_picture || null).
Acceptance Criteria
GET /analytics/faculty/:id/report response includes faculty.profilePicture (nullable string).
- All existing unit tests still pass (
npm run verify).
- No DB migration required — the column already exists.
Out of Scope
- Upload / edit flows for profile pictures.
- Changes to the app (tracked separately under the web ticket).
Summary
The analytics
ReportFacultyDtoonly exposesidandname. The faculty analytics / faculty report UI renders the faculty's name as the page title but has no visual identifier, and the frontend has no way to show the faculty's profile picture on that screen today.The
userentity already carriesuser_profile_picture(synced from Moodle and already exposed onFacultyShortResponseDtoused by enrollments), so the data is available — it just isn't surfaced on the analytics report DTO.Scope
profilePicturetoReportFacultyDto.AnalyticsService.BuildFacultyReportDatato selectu.user_profile_picturealongside name and include it on the returned faculty DTO.user_profile_picture || null).Acceptance Criteria
GET /analytics/faculty/:id/reportresponse includesfaculty.profilePicture(nullable string).npm run verify).Out of Scope