feat: 最低工资保护 + 社保/最低工资递延补扣机制

新增功能:
1. SocialYearStandard / SocialInsuranceConfig 增加 minWage 字段
2. BatchEntry 增加递延扣款字段(deferredSocialEmp/HousingEmp/MinWage)
3. calcBatchEntry 增加最低工资保护逻辑:
   - 实发 < 最低工资时,优先递延社保 → 递延公积金 → 递延最低工资补齐
   - 递延金额记录到 BatchEntry,次月创建批次时自动补扣
4. prePayrollCheck 增加最低工资检查(第 11/12 项)
5. 前端社保配置增加最低工资输入框
6. 前端 BatchTab 质量门禁增加最低工资/递延扣款提示

处理场景:
- 入职当月工资不足扣社保个人部分 → 递延到次月补扣
- 实发低于最低工资 → 补齐到最低工资,差额递延次月扣
- 次月创建批次时自动读取上月递延金额并补扣

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
selfrelease
2026-08-16 14:15:39 +08:00
parent fe427ef13f
commit ea2dfe3b4b
6 changed files with 221 additions and 14 deletions
+13
View File
@@ -522,6 +522,9 @@ model SocialYearStandard {
housingOrg Float @default(12)
housingEmp Float @default(12)
// 最低工资标准(按参保城市,每年调整)
minWage Float @default(0) // 当地月最低工资标准(0=不检查)
effectiveFrom String // 生效月份 YYYY-MM
effectiveTo String? // 失效月份 YYYY-MMnull=当前有效)
isCurrent Boolean @default(true)
@@ -552,6 +555,7 @@ model SocialInsuranceConfig {
medicalBaseMin Float @default(0) // 医疗/生育保险基数下限(0 时 fallback 到 baseMin
medicalBaseMax Float @default(0) // 医疗/生育保险基数上限(0 时 fallback 到 baseMax
extraInsurances Json? // 附加险种配置 JSON: [{ name, orgRate, empRate, baseType: 'pension'|'medical'|'fixed', fixedAmount }]
minWage Float @default(0) // 当地月最低工资标准(0=不检查)
effectiveFrom String // 生效月份 YYYY-MM
effectiveTo String? // 失效月份 YYYY-MMnull=当前有效)
isCurrent Boolean @default(true) // 是否当前生效版本
@@ -900,6 +904,15 @@ model BatchEntry {
tax Float @default(0)
totalPay Float @default(0) // 应发合计
netPay Float @default(0) // 实发工资
// 最低工资保护 + 递延扣款(入职当月工资不足扣社保时,递延到次月补扣)
minWage Float @default(0) // 当月适用的最低工资标准
minWageApplied Float @default(0) // 当月实际补齐到最低工资的金额(0=未补齐)
deferredSocialEmp Float @default(0) // 递延到次月补扣的社保个人部分
deferredHousingEmp Float @default(0) // 递延到次月补扣的公积金个人部分
deferredMinWage Float @default(0) // 递延到次月补扣的最低工资补齐差额
prevDeferredSocialEmp Float @default(0) // 从上月继承的递延社保(本批次已补扣)
prevDeferredHousingEmp Float @default(0) // 从上月继承的递延公积金(本批次已补扣)
prevDeferredMinWage Float @default(0) // 从上月继承的递延最低工资(本批次已补扣)
// 风险提示
riskWarnings Json?
createdAt DateTime @default(now())