News & highlights
Route: /dashboard/news
API: /v1/dashboard/news/*
News is the recognition and culture dashboard — separate from BSC score pages. First-time visitors land here by default; returning users keep their last dashboard section.
Story switcher (in-page tabs, not separate sidebar items):
| Story | URL | Purpose |
|---|---|---|
| BSC Passers | ?story=bsc-passers | Cycle salary-increase eligibility roll |
| Bonus Qualifiers | ?story=bonus-qualifiers | Bonus-qualified employees for finalized months in the current cycle |
| Birthdays | ?story=birthdays | Current-month celebrants and greeting threads |
Last selected story is stored in localStorage. Legacy ?story=passers still opens BSC Passers. Bonus Qualifiers also accepts month=2026-08 (latest finalized month is the default). The Bonus Qualifiers tab is hidden until at least one month in the current cycle is finalized.
Visibility of the News area and each story can be toggled by level 5 — see Platform & admin § Page visibility.
BSC Passers
Recognizes employees whose Goal band for a completed July–June cycle qualifies them for salary-increase eligibility.
Data source
For BSC 2025, Ascendly scorecard use started after the cycle ended, so monthly recomputation is incomplete. Eligibility comes from an authoritative HR spreadsheet, imported into tbl_bsc_cycle_passers. It must not be recomputed from partial monthly BSC rows.
Import (engineering):
bash
cd api
.venv/Scripts/python scripts/import_bsc_cycle_passers.py \
--cycle-id 2025 --replace path/to/passers.xlsx--replace removes cycle employees no longer in the workbook. The script validates headers, Goal ratings, salary-increase remarks, unique employee IDs, and score ranges.
What the UI shows
GET /v1/dashboard/news?cycle_id=…returns the curated roll.- Spreadsheet decides who is eligible and stores cycle score / remarks.
- At read time, Ascendly enriches each passer from live employees + org (name, department, cluster, site, manager, photo). Spreadsheet labels are fallback only when the employee cannot be resolved.
Bonus Qualifiers
Recognizes employees who were bonus qualified for a finalized month in the current July–June cycle. This is the company-wide News roll, not the manager Bonus qualification matrix.
Who appears
bonus_qualifiedis true on the user-month row after that month is finalized.- Draft or reopened months are omitted until they are finalized again.
- People who later left still appear for the month they qualified. Department and site come from live employee records.
NULLqualification (not yet synced) does not count as qualified.
What the UI shows
GET /v1/dashboard/news/bonus-qualifiers— optionalyearandmonth. Omit both for the latest finalized month.- Name, photo, department, and site only. No scores, ranks, amounts, or failed gates.
- Department mosaic: open one department at a time in a roster modal (A–Z names inside each department; Unassigned last). Search filters the grid. If you qualified that month, a You card is highlighted; if you did not, the page stays silent.
Gate definitions: User-month calculation § Bonus qualification.
Birthdays
- Celebrants for the current calendar month from live
birth_date. - Today uses Asia/Manila and is highlighted.
- Display fields are enriched from live employee and org records.
- On the celebrant's birthday, a slim Happy birthday bar appears under the web app header all day (Asia/Manila). It links to that year's greeting thread. Dismiss hides it for this browser session only — a refresh or new tab that day shows it again. Hidden when the Birthdays story is unpublished. Desktop does not show this bar.
Greeting threads
- Each celebrant has a thread keyed by employee ID + birthday year.
- Any signed-in employee except the celebrant may post up to 5 messages per thread.
- Reactions: ❤️ 🎉 🙌 👍 😂 — one toggle per emoji per user.
- Authors can edit or delete their own greetings only (
editedAtwhen edited). - Posting a greeting creates an in-app notification linking to that year’s thread (type is not in the admin notification catalog — see Notifications).
- Today cards expose Greet; other rows use context menu / keyboard menu for Greet / View greetings.
- Hovering a reaction shows who reacted (names resolved at request time; your own name as “You”).
Related
- Dashboard overview — BSC score pages
- Bonus qualification — manager gate matrix (not this News story)
- What's in Ascendly — product map
- Platform & admin § Page visibility
