BSC total score goals
Configuration document id: bsc-total-score-goals-{cycle_id} (per fiscal cycle; legacy id bsc-total-score-goals migrated to -2025).
API field: bsc_total_score_goals on GET / PATCH /v1/scorecard/configurations?cycle_id=….
See Fiscal cycles & locks for cycle selection and edit rules.
Structure (fixed)
- 3 employee levels: 1, 2, 3 (
employment_data.employee_level) - 3 tenure rows per level:
min_years1, 2, 3 (whole years employed: 1 yr+, 2 yrs+, 3 yrs+) - 3 bands per row: Standard, Expectation, Goal (each
min–max, 0–100)
Resolving the correct row
- Look up
employee_level(1–3). - Compute whole years employed as of the end of the BSC fiscal cycle that contains the reporting month (not as of that month alone).
- From tenure tiers, use the row with the largest
min_yearswhereyears_employed >= min_years.
So if an agent will reach a higher tenure tier within the cycle, every month in that cycle uses that higher tier’s Goal / Expectation / Standard bands.
Example: hire Dec 2024, BSC 2026 (Jul 2026–Jun 2027) → 2 whole years by cycle end (Jun 2027). Jul–Nov 2026 still use the 2 yr+ row (not 1 yr+), even though the 2-year anniversary is in Dec 2026.
Example: 2.5 years at cycle end → treat as 2 whole years → use the 2 yr+ row (not 3 yr+).
Helper: years_employed_for_remarks() in api/app/domains/bsc/employee_compute.py.
Classifying a total BSC score (dashboard)
After the weighted BSC total is calculated (0–100), compare it to that row’s minimum thresholds (contiguous lower-bound rules — same as the web UI and bonus qualification):
- If score ≥ Goal
min→ Goal - Else if score ≥ Expectation
min→ Expectation - Else if score ≥ Standard
min→ Standard - Else → below standard
Scores are not rounded to integers before classification (e.g. 94.69 with Goal min 95 stays Expectation, not Goal).
Helper: classify_total_score() in api/app/domains/bsc/total_score_goals.py.
Code
- Schema:
api/app/schemas/scorecard_config.py(BscTotalScoreGoals, …) - Helpers:
api/app/domains/bsc/total_score_goals.py,years_employed_for_remarksinemployee_compute.py - UI tab: BSC Total Score Goals
