今日要事(TodayPage · /review/today)
考核主管 / 虛擬部門主管登入後的任務導向首頁(取代 /review/dashboard 作為預設登入導向)。
預設登入導向
- HR / Admin →
/hr/dashboard - 其他角色(Reviewer1 / Reviewer2 / Approver / 虛擬部門主管)→
/review/today - 首次登入 →
/change-password
頁面結構
- 頁首:左右兩欄 grid
lg:grid-cols-[1fr_440px]- 左欄:日期問候貼頂(
flex flex-col)+ 內層flex-1 justify-end把 hero tagline/subtitle 往下貼齊右欄最新消息卡片底部 - 右欄:最新消息卡(超過 3 則自動跑馬燈,hover 暫停,CSS
@keyframes marqueeY)
- 左欄:日期問候貼頂(
- 主標題 Option A 切換:
- 有急件 →
今天先處理 N 件急的。(H1 大字)+ 小 tagline - 無急件 → tagline 升級為 hero(36px 大字)+ 副標含
✨ 今天沒有急件小徽章
- 有急件 →
- 單位進度面板(UnitProgressPanel,考核主管區塊,在分組上方):按「單位 × 關卡」顯示所有自己負責的工作進度
- 含 R1/R2(整包送規則)+ 審核主管各關(獨立送,藍色標籤)
- R1/R2 三態:🟢 全員到齊+有草稿
可批次送出| 🟡 全員到齊+部分沒草稿還差 N 人草稿| ⏳ 有人未到該關卡等 N 人到達 - Approver 兩態:🔵 已到達
N 人待審| ⏳ 未到達等 N 人到達 - 已送完狀態:total == submitted 時 emerald ✓ 已送完(排在待送後)
- 可折疊(Package icon
text-indigo-500,樣式對齊 GroupSection),defaultOpen透過 useRef + useEffect 於資料首次載入後同步(避免useState初始值問題)
- 我的考核區塊(若角色為 Reviewer*):🔥 需要先看 / ✨ 今日可做 / ✅ 已完成三分組
- 部門審核區塊(若 DesignatedReviewer):同樣三分組邏輯(急件 = HR 退回或截止 ≤3 天)
- Tagline 輪播:每 8 秒切換,從
/api/taglines/public?category=today取
預設展開規則
| 區塊 | defaultOpen | 條件 |
|---|---|---|
| 需要先看 | true | 固定展開 |
| 單位進度 | rNeedLook.length === 0 | 沒急件時自動展開,有急件時收合讓焦點在急件 |
| 今日可做 | false | 預設收合(考核主管 + 部門審核皆適用) |
| 已完成 / 其他 | false | 預設收合 |
分組判斷
| Tab | 急件(需要先看) | 可做(今日可做) | 其他 |
|---|---|---|---|
| 我的考核 | wasReturnedToMe OR (isMyTurn && !submitted && (overdue || dueToday)) | isMyTurn && !myStepSubmitted | Completed / Locked / Excluded |
| 部門審核 | confirmationStatus='Returned' OR 等第審核截止 ≤ 3 天 | 部門全員完成且 Pending/Submitted | Confirmed / Locked |
姓名圓框
取姓名最後一字 + 依姓名 hash 選 7 色調色盤(blue/green/amber/purple/pink/teal/indigo)。
HR 側邊欄
HR/Admin 側邊欄不顯示「今日要事」項目(只有考核主管會看到,HR 用 /hr/dashboard)。