今日要事(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 && !myStepSubmittedCompleted / Locked / Excluded
部門審核confirmationStatus='Returned' OR 等第審核截止 ≤ 3 天部門全員完成且 Pending/SubmittedConfirmed / Locked

姓名圓框

取姓名最後一字 + 依姓名 hash 選 7 色調色盤(blue/green/amber/purple/pink/teal/indigo)。

HR 側邊欄

HR/Admin 側邊欄不顯示「今日要事」項目(只有考核主管會看到,HR 用 /hr/dashboard)。