diff --git a/backend/src/services/risk.service.ts b/backend/src/services/risk.service.ts index d715bc6..19e9a5e 100644 --- a/backend/src/services/risk.service.ts +++ b/backend/src/services/risk.service.ts @@ -606,6 +606,25 @@ export async function runRiskDetection(orgId: string) { await prisma.riskItem.createMany({ data: createData }) } + // 自动消除:PENDING 风险在最新检测结果中不再出现,说明问题已自然解决 + // 例如:员工补签了合同,则旧的"未签合同"风险应自动标记为 RESOLVED + const newRiskKeys = new Set(nonMonthlyRisks.map((r) => `${r.employeeId}:${r.type}`)) + const toResolve: string[] = [] + for (const r of existingRisks) { + if (r.status === 'PENDING' && r.employeeId) { + const key = `${r.employeeId}:${r.type}` + if (!newRiskKeys.has(key)) { + toResolve.push(r.id) + } + } + } + if (toResolve.length > 0) { + await prisma.riskItem.updateMany({ + where: { id: { in: toResolve } }, + data: { status: 'RESOLVED', resolvedAt: new Date() }, + }) + } + return toCreate.length }