/**
 * 用工文本模板库
 * 提供合同、制度、通知等常用文本模板，HR 可基于模板快速生成文档
 */

export interface DocumentTemplate {
  id: string
  name: string
  category: 'CONTRACT' | 'RULES' | 'NOTICE' | 'AGREEMENT' | 'OTHER'
  description: string
  content: string
  variables: string[] // 模板变量列表，如 ['employeeName', 'startDate', 'salary']
}

export const documentTemplates: DocumentTemplate[] = [
  {
    id: 'tpl_fixed_term_contract',
    name: '固定期限劳动合同',
    category: 'CONTRACT',
    description: '标准固定期限劳动合同模板，适用于大多数正式员工',
    variables: ['companyName', 'employeeName', 'idCard', 'address', 'phone', 'startDate', 'endDate', 'position', 'workplace', 'probationMonths', 'baseSalary', 'performanceSalary', 'probationSalary', 'socialInsBase'],
    content: `劳动合同书

甲方（用人单位）：{{companyName}}
乙方（劳动者）：{{employeeName}}

根据《中华人民共和国劳动合同法》及相关法律法规，甲乙双方在平等自愿、协商一致的基础上，签订本劳动合同。

第一条 合同期限
本合同为固定期限劳动合同，自{{startDate}}起至{{endDate}}止，其中试用期{{probationMonths}}个月。

第二条 工作内容和工作地点
乙方担任{{position}}岗位，工作地点为{{workplace}}。

第三条 工作时间和休息休假
甲方执行标准工时制度，乙方每日工作时间不超过8小时，每周不超过40小时。

第四条 劳动报酬
乙方基本工资为人民币{{baseSalary}}元/月，绩效工资为人民币{{performanceSalary}}元/月（绩效工资根据考核结果发放）。试用期月工资为人民币{{probationSalary}}元。甲方于每月15日前支付上月工资。

第五条 社会保险和福利
甲方依法为乙方缴纳社会保险，缴费基数为{{socialInsBase}}元。

第六条 劳动保护、劳动条件和职业危害防护
甲方为乙方提供符合国家规定的劳动保护条件。

第七条 合同解除和终止
双方解除和终止劳动合同，应严格按照《劳动合同法》的规定执行。

第八条 违约责任
任何一方违反本合同约定，应承担相应的违约责任。

第九条 争议解决
因履行本合同发生的争议，双方应协商解决；协商不成的，可向劳动争议仲裁委员会申请仲裁。

第十条 其他
本合同一式两份，甲乙双方各执一份，自双方签字盖章之日起生效。

甲方（盖章）：____________          乙方（签字）：____________
日期：____年__月__日               日期：____年__月__日`,
  },
  {
    id: 'tpl_open_ended_contract',
    name: '无固定期限劳动合同',
    category: 'CONTRACT',
    description: '无固定期限劳动合同模板，适用于符合签订条件的情况',
    variables: ['companyName', 'employeeName', 'startDate', 'position', 'baseSalary', 'performanceSalary'],
    content: `无固定期限劳动合同书

甲方（用人单位）：{{companyName}}
乙方（劳动者）：{{employeeName}}

根据《中华人民共和国劳动合同法》及相关法律法规，甲乙双方在平等自愿、协商一致的基础上，签订无固定期限劳动合同。

第一条 合同期限
本合同为无固定期限劳动合同，自{{startDate}}起生效，至法定终止条件出现时终止。

第二条 工作内容
乙方担任{{position}}岗位。

第三条 劳动报酬
乙方基本工资为人民币{{baseSalary}}元/月，绩效工资为人民币{{performanceSalary}}元/月（绩效工资根据考核结果发放）。

（其余条款参照固定期限劳动合同模板）

甲方（盖章）：____________          乙方（签字）：____________
日期：____年__月__日               日期：____年__月__日`,
  },
  {
    id: 'tpl_termination_agreement',
    name: '解除劳动合同协议书',
    category: 'AGREEMENT',
    description: '协商一致解除劳动合同协议书模板（用人单位提出）',
    variables: ['companyName', 'employeeName', 'idCard', 'terminationDate', 'compensation', 'lastWorkDay', 'socialInsEndMonth', 'housingFundEndMonth'],
    content: `解除劳动合同协议书

甲方（用人单位）：{{companyName}}
乙方（劳动者）：{{employeeName}}，证件号码：{{idCard}}

甲乙双方经协商一致，就解除劳动合同事宜达成如下协议：

一、解除日期
双方同意于{{terminationDate}}解除劳动合同，乙方最后工作日为{{lastWorkDay}}。

二、经济补偿
甲方同意向乙方支付经济补偿金人民币{{compensation}}元，于乙方办理完工作交接手续后__个工作日内一次性支付。

三、工资结算
甲方结清乙方截至解除日的所有工资、加班费等劳动报酬。

四、社会保险和公积金
甲方为乙方缴纳社会保险至{{socialInsEndMonth}}月，住房公积金缴存至{{housingFundEndMonth}}月。

五、工作交接
乙方应在解除日前完成工作交接，归还甲方所有财物和资料。

六、保密义务
乙方解除劳动合同后，仍应遵守保密义务，不得泄露甲方商业秘密。

七、争议解决
本协议履行过程中如发生争议，双方应协商解决；协商不成的，可向劳动争议仲裁委员会申请仲裁。

八、其他
本协议一式两份，甲乙双方各执一份，自双方签字盖章之日起生效。

甲方（盖章）：____________          乙方（签字）：____________
日期：____年__月__日               日期：____年__月__日`,
  },
  {
    id: 'tpl_termination_agreement_employee',
    name: '解除劳动合同协议书（员工提出离职）',
    category: 'AGREEMENT',
    description: '员工主动提出离职的解除劳动合同协议书模板',
    variables: ['companyName', 'employeeName', 'idCard', 'terminationDate', 'lastWorkDay', 'socialInsEndMonth', 'housingFundEndMonth', 'resignationReason'],
    content: `解除劳动合同协议书

甲方（用人单位）：{{companyName}}
乙方（劳动者）：{{employeeName}}，证件号码：{{idCard}}

乙方因个人原因主动提出离职，经甲乙双方友好协商，就解除劳动合同事宜达成如下协议：

一、离职原因
乙方因{{resignationReason}}，自愿提出解除劳动合同。

二、解除日期
双方同意于{{terminationDate}}解除劳动合同，乙方最后工作日为{{lastWorkDay}}。

三、工资结算
甲方结清乙方截至解除日的所有工资、加班费等劳动报酬，于乙方办理完工作交接手续后__个工作日内一次性支付。

四、社会保险和公积金
甲方为乙方缴纳社会保险至{{socialInsEndMonth}}月，住房公积金缴存至{{housingFundEndMonth}}月。

五、工作交接
乙方应在最后工作日前完成工作交接，归还甲方所有财物和资料。

六、经济补偿
因乙方主动提出离职，甲方无需向乙方支付经济补偿金。乙方确认对此无异议。

七、保密义务
乙方解除劳动合同后，仍应遵守保密义务，不得泄露甲方商业秘密。

八、竞业限制
如双方另行签有竞业限制协议，乙方应继续履行竞业限制义务。

九、争议解决
本协议履行过程中如发生争议，双方应协商解决；协商不成的，可向劳动争议仲裁委员会申请仲裁。

十、其他
1. 本协议签订后，双方劳动关系即告终止，双方不再存在任何劳动争议。
2. 本协议一式两份，甲乙双方各执一份，自双方签字盖章之日起生效。

甲方（盖章）：____________          乙方（签字）：____________
日期：____年__月__日               日期：____年__月__日`,
  },
  {
    id: 'tpl_employee_handbook_notice',
    name: '员工手册公示通知',
    category: 'NOTICE',
    description: '员工手册公示通知模板，用于民主程序第四步公示',
    variables: ['companyName', 'publishDate', 'effectiveDate'],
    content: `关于发布《员工手册》的通知

致全体员工：

经职工代表大会讨论通过，并经与工会平等协商，{{companyName}}现正式发布《员工手册》（{{publishDate}}版），自{{effectiveDate}}起施行。

请全体员工认真阅读并遵守《员工手册》的各项规定。如有疑问，请联系人力资源部。

特此通知。

{{companyName}}
{{publishDate}}`,
  },
  {
    id: 'tpl_rules_discussion_notice',
    name: '规章制度讨论通知',
    category: 'NOTICE',
    description: '规章制度职工讨论通知，用于民主程序第二步',
    variables: ['companyName', 'meetingDate', 'meetingLocation', 'policyTitle'],
    content: `关于召开职工代表大会讨论{{policyTitle}}的通知

致全体职工代表：

根据《劳动合同法》第四条规定，用人单位制定规章制度应当经职工代表大会或全体职工讨论。现定于{{meetingDate}}在{{meetingLocation}}召开职工代表大会，讨论《{{policyTitle}}》草案。

请各位职工代表准时出席，充分发表意见和建议。

特此通知。

{{companyName}}
____年__月__日`,
  },
  {
    id: 'tpl_disciplinary_notice',
    name: '违纪处分通知书',
    category: 'NOTICE',
    description: '员工违纪处分通知书模板',
    variables: ['employeeName', 'department', 'violationDate', 'violationDescription', 'disciplineType', 'policyBasis', 'companyName'],
    content: `违纪处分通知书

{{employeeName}}（{{department}}）：

经查，你于{{violationDate}}存在以下违纪行为：
{{violationDescription}}

上述行为违反了公司《{{policyBasis}}》的相关规定。根据公司规章制度，决定给予你以下处分：
{{disciplineType}}

如对本处分决定有异议，你可以在收到本通知之日起__日内向人力资源部提出书面申诉。

特此通知。

{{companyName}}
____年__月__日

签收人：____________    日期：____年__月__日`,
  },
  {
    id: 'tpl_probation_notice',
    name: '试用期转正通知书',
    category: 'NOTICE',
    description: '试用期考核合格转正通知',
    variables: ['employeeName', 'position', 'probationEndDate', 'regularDate', 'baseSalary', 'performanceSalary', 'companyName'],
    content: `试用期转正通知书

{{employeeName}}：

经考核，你在试用期内表现合格，符合岗位要求。现通知你：

一、自{{regularDate}}起正式转正，担任{{position}}岗位。
二、转正后基本工资为人民币{{baseSalary}}元/月，绩效工资为人民币{{performanceSalary}}元/月。
三、试用期至{{probationEndDate}}结束。

请继续遵守公司各项规章制度，努力工作。

{{companyName}}
____年__月__日`,
  },
  {
    id: 'tpl_contract_expiry_notice',
    name: '合同到期不续签通知书',
    category: 'NOTICE',
    description: '合同到期公司决定不续签的通知',
    variables: ['employeeName', 'contractEndDate', 'companyName', 'compensation', 'lastWorkDay'],
    content: `劳动合同到期不续签通知书

{{employeeName}}：

你与公司签订的劳动合同将于{{contractEndDate}}到期。经公司研究决定，合同到期后不再与你续签劳动合同。

请你于{{lastWorkDay}}前完成工作交接手续。公司将在你完成交接后，依法支付经济补偿金人民币{{compensation}}元。

特此通知。

{{companyName}}
____年__月__日

签收人：____________    日期：____年__月__日`,
  },
  {
    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}}

（盖章）
____年__月__日`,
  },
]

/**
 * 获取所有模板
 */
export function getAllTemplates() {
  return documentTemplates.map(({ content, ...rest }) => rest)
}

/**
 * 获取模板详情（含内容）
 */
export function getTemplateById(id: string) {
  return documentTemplates.find(t => t.id === id) || null
}

/**
 * 按分类获取模板
 */
export function getTemplatesByCategory(category: string) {
  return documentTemplates.filter(t => t.category === category)
}

/**
 * 渲染模板（替换变量）
 */
export function renderTemplate(id: string, variables: Record<string, string>): string | null {
  const template = getTemplateById(id)
  if (!template) return null

  let content = template.content
  for (const [key, value] of Object.entries(variables)) {
    content = content.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), value)
  }
  return content
}
