feat: 增加北京解聘合规性环节(通知工会程序+文档样本)

依据《规范用人单位单方解除劳动合同工作指引(试行)》

后端:
- 合规检查增加"通知工会"和"工会回执"检查项(FAULT/NONFAULT/LAYOFF)
- 检查项标注北京地区要求:提前5个工作日书面通知工会
- 模板系统新增3个文档样本:
  · 拟解除劳动合同通知工会函(附件1样式)
  · 工会回执(附件2样式)
  · 工会劳动法律监督提示函(附件3样式)

前端:
- 过错解除/非过错解除/裁员三种方式的步骤说明增加工会通知程序
- 确认提交步骤展示工会通知状态(已通知/未通知/已收到回执)

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-15 15:51:45 +08:00
parent f8dca2f22c
commit e8c6d27979
3 changed files with 135 additions and 8 deletions
+94
View File
@@ -278,6 +278,100 @@ ____年__月__日
签收人:____________ 日期:____年__月__日`,
},
{
id: 'tpl_union_termination_notice',
name: '拟解除劳动合同通知工会函(北京)',
category: 'NOTICE',
description: '北京地区单方解除劳动合同前通知工会的函件样式(依据《规范用人单位单方解除劳动合同工作指引》)',
variables: ['companyName', 'employeeName', 'employeeGender', 'employeeAge', 'idCard', 'employeePosition', 'workYears', 'contractPeriod', 'employeePhone', 'terminationReason', 'legalBasis', 'contactPerson', 'contactPhone', 'companyAddress'],
content: `拟解除劳动合同通知工会函
{{companyName}}拟解除{{employeeName}}劳动合同的函
{{companyName}}工会(或上一级工会):
我单位拟单方解除与{{employeeName}}(劳动者姓名)的劳动合同,具体情况如下:
一、劳动者基本情况
姓名:{{employeeName}}
性别:{{employeeGender}}
年龄:{{employeeAge}}
身份证号:{{idCard}}
工作岗位:{{employeePosition}}
在本单位工作年限:{{workYears}}
劳动合同期限:{{contractPeriod}}
联系方式:{{employeePhone}}
二、解除劳动合同的事由
{{terminationReason}}
三、解除劳动合同的依据
{{legalBasis}}
联系人:{{contactPerson}}
电话:{{contactPhone}}
地址:{{companyAddress}}
附件:其他证据材料
{{companyName}}(盖章)
____年__月__日`,
},
{
id: 'tpl_union_receipt',
name: '工会回执(北京)',
category: 'OTHER',
description: '工会收到用人单位单方解除劳动合同通知后的书面回执样式',
variables: ['receiptNo', 'companyName', 'employeeName', 'unionContactPerson', 'unionContactPhone', 'unionAddress'],
content: `回执
编号:{{receiptNo}}
{{companyName}}
你单位送交的单方解除与{{employeeName}}劳动合同通知工会的相关材料已收到。
你单位单方解除劳动合同,应严格遵守《中华人民共和国劳动法》《中华人民共和国劳动合同法》《北京市实施〈中华人民共和国工会法〉办法》等法律法规规定,做到事实清楚、程序合法、依据充分,并依法履行出具解除劳动合同证明、支付经济补偿等法定义务,切实维护职工合法权益。因提供虚假或不完整材料,产生的相关法律后果由你单位自行承担。
联系人:{{unionContactPerson}}
电话:{{unionContactPhone}}
地址:{{unionAddress}}
(盖章)
____年__月__日`,
},
{
id: 'tpl_union_supervision_letter',
name: '工会劳动法律监督提示函(北京)',
category: 'NOTICE',
description: '工会认为用人单位违反法律法规时提出的意见建议函件样式',
variables: ['letterNo', 'companyName', 'employeeName', 'supervisionIssues', 'supervisionOpinions', 'unionContactPerson', 'unionContactPhone', 'unionAddress'],
content: `工会劳动法律监督提示函
{{letterNo}}
{{companyName}}
你单位送交的单方解除与{{employeeName}}劳动合同通知工会的相关文本材料已收到。经审查,发现你单位存在下列问题:
{{supervisionIssues}}
就以上问题,我会提出以下意见:
{{supervisionOpinions}}
请你单位收函后认真研究,将处理结果书面通知本会。
联系人:{{unionContactPerson}}
电话:{{unionContactPhone}}
地址:{{unionAddress}}
(盖章)
____年__月__日`,
},
]
/**
+23 -1
View File
@@ -33,7 +33,14 @@ export function getChecklistForReason(reason: string, employee?: any): Checklist
return [
{ key: 'has_rules', label: '是否有规章制度依据', autoChecked: null },
{ key: 'has_evidence', label: '是否有违纪证据', autoChecked: null },
{ key: 'notify_union', label: '是否事先通知工会', autoChecked: null },
{
key: 'notify_union',
label: '是否提前5个工作日书面通知工会',
autoChecked: null,
suggestion: '北京地区要求:单方解除劳动合同须提前5个工作日将理由书面通知本单位工会;未建立工会的通知上一级工会(用人单位实际经营地的乡镇/街道/园区/开发区总工会)。可在「文本模板库」中使用《拟解除劳动合同通知工会函》模板。',
suggestionType: 'required',
},
{ key: 'union_receipt', label: '是否收到工会书面回执', autoChecked: null },
{ key: 'written_notice', label: '是否出具书面解除通知', autoChecked: null },
]
case 'NONFAULT': {
@@ -86,12 +93,27 @@ export function getChecklistForReason(reason: string, employee?: any): Checklist
suggestionType: 'required',
})
// 通知工会 — 北京地区单方解除必经程序
items.push({
key: 'notify_union',
label: '是否提前5个工作日书面通知工会',
autoChecked: null,
suggestion: '北京地区要求:单方解除须提前5个工作日将理由书面通知本单位工会;未建立工会的通知上一级工会。可在「文本模板库」中使用《拟解除劳动合同通知工会函》模板。',
suggestionType: 'required',
})
items.push({
key: 'union_receipt',
label: '是否收到工会书面回执',
autoChecked: null,
})
return items
}
case 'LAYOFF':
return [
{ key: 'advance_notice_30', label: '是否提前30天向工会或全体职工说明', autoChecked: null },
{ key: 'listen_opinions', label: '是否听取工会或职工意见', autoChecked: null },
{ key: 'union_receipt', label: '是否收到工会书面回执', autoChecked: null },
{ key: 'report_labor_dept', label: '是否向劳动行政部门报告', autoChecked: null },
{
key: 'compensation_paid', label: '是否支付经济补偿金',
+18 -7
View File
@@ -42,9 +42,10 @@ const REASONS = [
steps: [
'第一步:收集并固化证据(违纪事实、制度依据、证人证言等)',
'第二步:确认规章制度经过民主程序制定并已向员工公示(签收记录)',
'第三步:将解除理由通知工会,工会提出意见后书面回复工会',
'第三步:提前5个工作日将解除理由书面通知工会(北京地区必经程序),工会提出意见后书面回复工会',
'第四步:向员工送达《解除劳动合同通知书》,注明解除依据和事实',
'第五步:办理工作交接、社保减员、档案转移',
'⚠ 北京地区:单方解除须提前5个工作日书面通知工会,未建立工会的通知上一级工会(经营地乡镇/街道/园区/开发区总工会)。可在「文本模板库」使用《拟解除劳动合同通知工会函》模板',
'⚠ 注意:证据不足或制度未公示可能导致违法解除,建议咨询律师',
],
},
@@ -58,9 +59,11 @@ const REASONS = [
'第一步(不胜任):进行绩效考核,确认不胜任事实',
'第二步(医疗期满):另行安排合适岗位,员工仍不能胜任',
'第二步(不胜任):进行培训或调岗,再次考核仍不胜任',
'第三步:提前30天书面通知员工,或额外支付1个月代通知金',
'第四步:支付经济补偿金(N',
'第五步:出具解除证明,办理交接、社保减员',
'第三步:提前5个工作日书面通知工会(北京地区必经程序),收到工会回执后再解除',
'第四步:提前30天书面通知员工,或额外支付1个月代通知金',
'第五步:支付经济补偿金(N',
'第六步:出具解除证明,办理交接、社保减员',
'⚠ 北京地区:单方解除须提前5个工作日书面通知工会,可在「文本模板库」使用《拟解除劳动合同通知工会函》模板',
],
},
{
@@ -71,11 +74,13 @@ const REASONS = [
steps: [
'第一步:确认符合法定裁员情形,准备相关证明材料',
'第二步:提前30天向工会或全体职工说明情况(书面会议记录)',
'第三步:听取工会或职工意见,形成意见处理方案',
'第三步:听取工会或职工意见,形成意见处理方案,收到工会书面回执',
'第四步:向当地劳动行政部门报告裁员方案',
'第五步:确定裁员名单(优先留用法定保护人员)',
'第六步:向员工送达解除通知,支付经济补偿金(N',
'第七步:办理交接、社保减员、档案转移',
'第六步:提前5个工作日书面通知工会拟解除名单(北京地区必经程序',
'第七步:向员工送达解除通知,支付经济补偿金(N)',
'第八步:办理交接、社保减员、档案转移',
'⚠ 北京地区:裁员属单方解除,须提前5个工作日书面通知工会,可在「文本模板库」使用《拟解除劳动合同通知工会函》模板',
],
},
{
@@ -1887,6 +1892,12 @@ ${items}
</>
)}
<div>{handoverItems.filter(i => i.done).length}/{handoverItems.length} </div>
{checklistItems?.some(item => item.key === 'notify_union') && (
<div className={checklist['notify_union'] ? 'text-safe' : 'text-danger'}>
{checklist['notify_union'] ? '已通知' : '⚠ 未通知工会(北京地区单方解除必经程序)'}
{checklist['notify_union'] && checklist['union_receipt'] ? ' · 已收到回执' : checklist['notify_union'] ? ' · 未收到回执' : ''}
</div>
)}
</div>
{/* 风险提示 */}