feat: 仪表盘角色自适应重构 — 4角色视图 + 后端个人工作量API
Some checks failed
CI / security-audit (push) Has been cancelled
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled

后端:
- 新增 GET /health/admin/statistics/personal-stats 接口
- PersonalStatsResp: 13个个人维度统计字段
- 按医生/护士/管理员/运营角色聚合工作量数据

前端:
- useDashboardRole hook: 按优先级 doctor>nurse>admin>operator 匹配角色
- DoctorDashboard: 今日工作台(日程/审核/消息/统计卡)
- NurseDashboard: 随访监控台(异常提醒/队列/上报率)
- AdminDashboard: 管理中心(5KPI + 健康数据Tab)
- OperatorDashboard: 运营中心(积分/文章/活动)
- StatisticsDashboard.tsx 重写为角色路由组件
- 删除旧区块:快捷入口/积分排行Top10/最近活动
This commit is contained in:
iven
2026-04-28 07:54:08 +08:00
parent 35d4f6c843
commit 2f42ebff1d
11 changed files with 788 additions and 254 deletions

View File

@@ -0,0 +1,19 @@
import { useAuthStore } from '../stores/auth';
type DashboardRole = 'doctor' | 'nurse' | 'admin' | 'operator';
const ROLE_PRIORITY: DashboardRole[] = ['doctor', 'nurse', 'admin', 'operator'];
export function useDashboardRole(): DashboardRole {
const user = useAuthStore(s => s.user);
if (!user?.roles?.length) return 'admin';
const codes = user.roles.map(r => r.code);
for (const role of ROLE_PRIORITY) {
if (codes.some(c => c === role || c.startsWith(role))) return role;
}
return 'admin';
}
export type { DashboardRole };