Skip to content

FAC-145 feat: faculty composite overall rating (50/25/25) #380

Description

@y4nder

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions