feat: 20260815 系统优化 - 全部31项问题修复(P0×6+P1×14+P2×9+P3×2)
P0紧急修复(6项): - 草稿保存完整恢复所有字段(含socialAvgWage) - 补偿金批次从compensationBreakdown读取 - 违法解除风险确认UI - 合同结束日期前后校验(前后端双保险) P1高优先级(14项): - 离职日期联动社保/公积金截止月(15号规则) - 合规检查+工作交接改为软阻断(生成待办) - 补偿月数(N/N+1/2N/自定义)+计算基数(近12月/合同/自定义) - 解聘并入花名册操作栏(类型选择跳转向导) - 合同续签开始日期自动推导(原合同结束日+1天) - 年龄合规筛查(童工阻断/未成年工/退休警告) - 编辑入职日期后状态联动(待入职↔在职) - 转正移植到花名册操作栏+薪资回写 - 男职工无法选择三期 P2体验优化(9项): - "劳动合同"调整为"用工关系" - 费用结算新增剩余年假折算(300%日工资) - 身份证号全域改为"证件号码"(前后端18个文件) - 手机号查重 - 开具证明+合同续签移植到花名册操作栏 - 批量转正+批量开具证明 - 去掉用工办理模块 P3规划(2项): - 组织架构+审批流(Department/Position/ApprovalFlow/ApprovalInstance) - 客服工作台(Ticket/ChatSession+SUPPORT角色) 新增模型: Department/Position/ApprovalFlow/ApprovalInstance/Ticket/TicketMessage/ChatSession/ChatMessage 新增字段: Employee.departmentId/supervisorId 新增角色: SUPPORT Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1148,7 +1148,7 @@ function InitImport() {
|
||||
<div className="text-amber-600">跳过 {result.skipped} 条(数据不完整或格式错误)</div>
|
||||
)}
|
||||
{result.duplicates > 0 && (
|
||||
<div className="text-amber-600">重复 {result.duplicates} 条(身份证号已存在)</div>
|
||||
<div className="text-amber-600">重复 {result.duplicates} 条(证件号码已存在)</div>
|
||||
)}
|
||||
{result.errors?.length > 0 && (
|
||||
<div className="mt-2 pt-2 border-t border-green-200">
|
||||
@@ -1214,12 +1214,12 @@ function InitImport() {
|
||||
<Card>
|
||||
<div className="text-xs text-gray-500 space-y-1">
|
||||
<div className="font-medium text-gray-700 mb-1">Sheet 页说明</div>
|
||||
<div>- <b>员工信息</b>:姓名、部门、性别、手机号、身份证号、入职日期、月工资、社保基数、公积金基数等</div>
|
||||
<div>- <b>劳动合同</b>:身份证号(优先匹配)、姓名(备选)、合同类型、签订日期、起止日期、试用期等</div>
|
||||
<div>- <b>加班记录</b>:身份证号(优先匹配)、姓名(备选)、日期、加班时长、加班类型</div>
|
||||
<div>- <b>违纪记录</b>:身份证号(优先匹配)、姓名(备选)、日期、违纪类型、描述、处罚</div>
|
||||
<div>- <b>考勤记录</b>:身份证号(优先匹配)、姓名(备选)、日期、考勤状态、上下班时间</div>
|
||||
<div className="mt-2 text-gray-500">各 Sheet 优先用「身份证号」精确匹配员工,未填身份证号时用「姓名」兑底(重名可能匹配错误)</div>
|
||||
<div>- <b>员工信息</b>:姓名、部门、性别、手机号、证件号码、入职日期、月工资、社保基数、公积金基数等</div>
|
||||
<div>- <b>劳动合同</b>:证件号码(优先匹配)、姓名(备选)、合同类型、签订日期、起止日期、试用期等</div>
|
||||
<div>- <b>加班记录</b>:证件号码(优先匹配)、姓名(备选)、日期、加班时长、加班类型</div>
|
||||
<div>- <b>违纪记录</b>:证件号码(优先匹配)、姓名(备选)、日期、违纪类型、描述、处罚</div>
|
||||
<div>- <b>考勤记录</b>:证件号码(优先匹配)、姓名(备选)、日期、考勤状态、上下班时间</div>
|
||||
<div className="mt-2 text-gray-500">各 Sheet 优先用「证件号码」精确匹配员工,未填证件号码时用「姓名」兑底(重名可能匹配错误)</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
@@ -1377,12 +1377,12 @@ function MonthlyImport() {
|
||||
<Card>
|
||||
<div className="text-xs text-gray-500 space-y-1">
|
||||
<div className="font-medium text-gray-700 mb-1">Sheet 页说明</div>
|
||||
<div>- <b>考勤记录</b>:身份证号(优先匹配)、姓名(备选)、日期、考勤状态、上下班时间(同日重复导入会覆盖)</div>
|
||||
<div>- <b>加班记录</b>:身份证号(优先匹配)、姓名(备选)、日期、加班时长、加班类型(同月重复导入会累加)</div>
|
||||
<div>- <b>薪资调整</b>:身份证号(优先匹配)、姓名(备选)、调整后月薪、生效日期、调薪原因(自动关闭旧薪资记录)</div>
|
||||
<div>- <b>社保变动</b>:身份证号(优先匹配)、姓名(备选)、变动类型(增员/调基/减员)、缴费基数</div>
|
||||
<div>- <b>公积金变动</b>:身份证号(优先匹配)、姓名(备选)、变动类型(增员/调基/减员)、缴费基数</div>
|
||||
<div className="mt-2 text-gray-500">所有 Sheet 优先用「身份证号」精确匹配员工,未填时用「姓名」兑底(重名可能匹配错误)</div>
|
||||
<div>- <b>考勤记录</b>:证件号码(优先匹配)、姓名(备选)、日期、考勤状态、上下班时间(同日重复导入会覆盖)</div>
|
||||
<div>- <b>加班记录</b>:证件号码(优先匹配)、姓名(备选)、日期、加班时长、加班类型(同月重复导入会累加)</div>
|
||||
<div>- <b>薪资调整</b>:证件号码(优先匹配)、姓名(备选)、调整后月薪、生效日期、调薪原因(自动关闭旧薪资记录)</div>
|
||||
<div>- <b>社保变动</b>:证件号码(优先匹配)、姓名(备选)、变动类型(增员/调基/减员)、缴费基数</div>
|
||||
<div>- <b>公积金变动</b>:证件号码(优先匹配)、姓名(备选)、变动类型(增员/调基/减员)、缴费基数</div>
|
||||
<div className="mt-2 text-gray-500">所有 Sheet 优先用「证件号码」精确匹配员工,未填时用「姓名」兑底(重名可能匹配错误)</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user