diff --git a/backend/src/routes/dashboard.routes.ts b/backend/src/routes/dashboard.routes.ts index f6d9cd6..8b601e2 100644 --- a/backend/src/routes/dashboard.routes.ts +++ b/backend/src/routes/dashboard.routes.ts @@ -489,14 +489,23 @@ router.get('/performance-stats', authMiddleware, async (req: AuthRequest, res: R } }) -// 风险中心 — 获取所有待处理风险项 +// 风险中心 — 获取所有待处理风险项(与工作台同口径,使用去重后的 todos) router.get('/risks', authMiddleware, async (req: AuthRequest, res: Response, next: NextFunction) => { try { - const risks = await prisma.riskItem.findMany({ - where: { orgId: req.user!.orgId, status: 'PENDING' }, - include: { employee: { select: { name: true, department: true } } }, - orderBy: [{ level: 'desc' }, { createdAt: 'desc' }], - }) + const data = await getDashboardData(req.user!.orgId) + // todos 已按员工+类别去重,与工作台待办数量一致 + const risks = (data.todos || []).map((t: any) => ({ + id: t.id, + type: t.type, + level: t.level.toUpperCase(), + status: 'PENDING', + title: t.title, + description: t.description || '', + actionUrl: t.actionUrl || '', + estimatedLoss: t.estimatedLoss || 0, + deadline: t.deadline || null, + employee: t.employeeName ? { name: t.employeeName, department: t.employeeDepartment || '' } : null, + })) res.json({ success: true, data: risks }) } catch (err) { next(err)