Summary
Adds a faculty-level Overall Rating that aggregates the three questionnaire tracks with a 50 / 25 / 25 weighting:
- 50% Faculty Feedback
- 25% Out-of-Classroom
- 25% In-Classroom
Handles six coverage states (FULL / PARTIAL / PARTIAL_NO_FEEDBACK / FEEDBACK_ONLY / INSUFFICIENT / NO_DATA) including the Dean-respecting null-on-missing-FEEDBACK behaviour.
Scope
Backend
- New endpoint:
GET /api/v1/analytics/faculty/:facultyId/overview?semesterId&courseId?
- Reuses per-type rating code path from the faculty report for parity
- Chain-of-rounding invariant:
composite.rating === round2(Σ non-null contribution[i])
Frontend
CompositeRatingSummaryStrip (labelled "Overall rating") + breakdown popover above tabs
- Moved per-type rating strip into Scores and Feedback tabs, directly under the questionnaire-type sub-tabs (resolves a redundancy with the composite at top)
- Renamed user-facing "Composite rating" label → "Overall rating"
Tech spec
See _bmad-output/implementation-artifacts/tech-spec-faculty-composite-overall-rating.md.
Summary
Adds a faculty-level Overall Rating that aggregates the three questionnaire tracks with a 50 / 25 / 25 weighting:
Handles six coverage states (FULL / PARTIAL / PARTIAL_NO_FEEDBACK / FEEDBACK_ONLY / INSUFFICIENT / NO_DATA) including the Dean-respecting null-on-missing-FEEDBACK behaviour.
Scope
Backend
GET /api/v1/analytics/faculty/:facultyId/overview?semesterId&courseId?composite.rating === round2(Σ non-null contribution[i])Frontend
CompositeRatingSummaryStrip(labelled "Overall rating") + breakdown popover above tabsTech spec
See
_bmad-output/implementation-artifacts/tech-spec-faculty-composite-overall-rating.md.