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 |
| Birthdays | ?story=birthdays | Current-month celebrants and greeting threads |
Last selected story is stored in localStorage. Legacy ?story=passers still opens BSC Passers.
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.
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.
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
- What's in Ascendly — product map
- Platform & admin § Page visibility
