risk_predictor.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from __future__ import annotations
  2. from typing import Any
  3. def assess_risk(elements: dict[str, Any]) -> dict[str, Any]:
  4. """
  5. 输出:
  6. - level: 高/中/低
  7. - factors: list[str]
  8. """
  9. factors: list[str] = []
  10. cause = elements.get("case_cause")
  11. termination_reason = elements.get("termination_reason")
  12. month_salary = elements.get("month_salary") or 0
  13. claims = elements.get("claims") or {}
  14. amount_total = claims.get("amount_total") or 0
  15. overtime_desc = elements.get("overtime_desc") or ""
  16. # 规则示例:违法解除但原因为空 -> 风险升高
  17. if cause == "违法解除劳动合同" and not termination_reason:
  18. factors.append("案由为违法解除劳动合同但解除原因字段为空,争议事实支撑不足")
  19. # 请求金额超过月工资12倍 -> 支持可能性降低
  20. if month_salary and amount_total and amount_total > 12 * month_salary:
  21. factors.append("请求金额超过月工资标准的12倍,诉求支持可能性降低")
  22. # 加班事实存在但缺少具体记录 -> 证据不足
  23. if "加班" in str(overtime_desc) and len(str(overtime_desc).strip()) < 15:
  24. factors.append("加班事实存在但缺乏具体加班时间/记录,可能被认定证据不足")
  25. # 法条引用缺乏
  26. law_refs = elements.get("law_refs") or []
  27. if cause and len(law_refs) == 0:
  28. factors.append("未识别到法律条款引用,法律支撑可能不足(可人工补充)")
  29. # 风险
  30. # >= 3:
  31. level = "高"
  32. elif len(factors) >= 1:
  33. level = "中"
  34. else:
  35. level = "低"
  36. return {"level": level, "factors": factors}