diff --git a/backend/src/services/risk.service.ts b/backend/src/services/risk.service.ts index a4651e3..aa5b4f8 100644 --- a/backend/src/services/risk.service.ts +++ b/backend/src/services/risk.service.ts @@ -1657,9 +1657,26 @@ export async function getAnnualValueReport(orgId: string, year: number) { riskCount: number lossAvoided: number adjustedLoss: number - details: Map + details: Map }> = {} + // 辅助:根据风险标题推断规避方式 + function getResolutionMethod(title: string): string { + if (title.includes('未签合同') && title.includes('无固定期限')) return '补签书面合同' + if (title.includes('未签合同')) return '签订书面合同' + if (title.includes('到期') && title.includes('未续签')) return '续签合同' + if (title.includes('即将到期')) return '续签或终止合同' + if (title.includes('试用期') && title.includes('不合法')) return '调整试用期条款' + if (title.includes('入职手续未完成')) return '完成入职手续' + if (title.includes('孕期') || title.includes('哺乳期')) return '调整岗位/安排哺乳期待遇' + if (title.includes('工伤')) return '申报工伤/安排适当工作' + if (title.includes('医疗期')) return '保障医疗期待遇' + if (title.includes('社保')) return '补缴社保' + if (title.includes('公积金')) return '补缴公积金' + if (title.includes('工资') || title.includes('个税')) return '发放工资/申报个税' + return '人工处理' + } + // 辅助:根据风险标题推断法律依据 function getLegalBasis(title: string): string { if (title.includes('未签合同')) return '第82条 双倍工资≤11个月' @@ -1713,6 +1730,7 @@ export async function getAnnualValueReport(orgId: string, year: number) { title: r.title, estimatedLoss: r.estimatedLoss || 0, legalBasis: getLegalBasis(r.title || ''), + resolutionMethod: getResolutionMethod(r.title || ''), }) } } diff --git a/frontend/src/pages/tools/AnnualValueReport.tsx b/frontend/src/pages/tools/AnnualValueReport.tsx index 2f08190..b57c39f 100644 --- a/frontend/src/pages/tools/AnnualValueReport.tsx +++ b/frontend/src/pages/tools/AnnualValueReport.tsx @@ -231,7 +231,8 @@ export default function AnnualValueReport() { 员工 部门 风险数 - 预估损失 + 预估损失 + 规避方式 风险明细 @@ -242,6 +243,13 @@ export default function AnnualValueReport() { {emp.department} {emp.riskCount} ¥{emp.adjustedLoss.toLocaleString()} + +
+ {emp.details.map((d: any, i: number) => ( +
{d.resolutionMethod}
+ ))} +
+
{emp.details.map((d: any, i: number) => ( @@ -260,7 +268,7 @@ export default function AnnualValueReport() { - 合计 + 合计 ¥{(report.adjustedLossAvoided || 0).toLocaleString()}