/**
 * 补充规章制度示例数据
 * 运行: npx tsx scripts/seed-policies.ts
 */

import prisma from '../src/lib/prisma'

async function main() {
  const orgId = 'cmry97x7l0000trrp5f9jgng5'
  const userId = 'system-seed'

  const policies = [
    {
      id: 'pol_seed_1',
      title: '考勤与加班管理制度',
      content: `第一章 总则
第一条 为规范公司考勤管理，维护正常工作秩序，根据《劳动法》《劳动合同法》及相关法规，制定本制度。
第二条 本制度适用于公司全体员工。

第二章 工作时间
第三条 公司实行标准工时制，每日工作时间不超过8小时，每周不超过40小时。
第四条 工作时间为周一至周五 9:00-18:00，午休时间 12:00-13:00。

第三章 加班管理
第五条 加班需经部门负责人书面审批，未经审批的自行延长工作时间不视为加班。
第六条 工作日加班按不低于工资的150%支付加班费；休息日加班按不低于工资的200%支付加班费；法定节假日加班按不低于工资的300%支付加班费。
第七条 每月加班时间不得超过36小时，怀孕女职工及哺乳期女职工不得安排加班。

第四章 考勤记录
第八条 公司采用指纹打卡方式记录考勤，员工应按时上下班打卡。
第九条 迟到、早退每次扣罚50元；当月累计迟到早退超过5次，按旷工一天处理。

第五章 请假制度
第十条 员工请假需提前填写请假单，经主管审批后交人事部备案。
第十一条 病假需提供医院证明，按国家规定支付病假工资。

第六章 附则
第十二条 本制度经职工代表大会讨论通过后公示执行。
第十三条 本制度自公示之日起施行。`,
      type: 'RULES',
      status: 'PUBLISHED',
      currentStep: 4,
      steps: [
        { step: 1, name: '起草制度', description: 'HR 起草规章制度文本', status: 'COMPLETED', date: '2026-06-01', note: '完成初稿' },
        { step: 2, name: '职工讨论', description: '提交职工代表大会或全体职工讨论', status: 'COMPLETED', date: '2026-06-10', note: '职工代表大会讨论通过' },
        { step: 3, name: '平等协商', description: '与工会或职工代表平等协商确定', status: 'COMPLETED', date: '2026-06-15', note: '与工会代表协商一致' },
        { step: 4, name: '公示', description: '向全体员工公示', status: 'COMPLETED', date: '2026-06-20', note: '全员邮件公示并签收' },
      ],
      publishedAt: new Date('2026-06-20'),
      createdAt: new Date('2026-06-01'),
    },
    {
      id: 'pol_seed_2',
      title: '员工奖惩管理制度',
      content: `第一章 总则
第一条 为维护公司正常经营管理秩序，激励员工遵纪守法，制定本制度。
第二条 本制度适用于公司全体员工。

第二章 奖励
第三条 奖励分为：通报表扬、嘉奖、记功、记大功四种。
第四条 有下列情形之一的，给予奖励：
（一）在工作中有重大创新，为公司创造显著经济效益的；
（二）为公司挽回重大经济损失的；
（三）见义勇为，保护公司财产和员工安全的；
（四）连续年度考核优秀的。

第三章 惩戒
第五条 违纪行为分为：轻微违纪、一般违纪、严重违纪。
第六条 严重违纪包括但不限于：
（一）旷工连续3天以上或年内累计5天以上的；
（二）严重违反工作纪律，影响生产经营的；
（三）泄露公司商业秘密的；
（四）在工作场所打架斗殴的；
（五）利用职务便利索取、收受贿赂的。
第七条 严重违纪可以解除劳动合同，且无需支付经济补偿。

第四章 程序
第八条 对员工的奖惩应当事实清楚、证据确凿，并告知员工本人。
第九条 员工对惩戒决定有异议的，可以自收到通知之日起5个工作日内向人事部申诉。

第五章 附则
第十条 本制度经民主程序制定并公示后执行。`,
      type: 'RULES',
      status: 'PUBLISHED',
      currentStep: 4,
      steps: [
        { step: 1, name: '起草制度', description: 'HR 起草规章制度文本', status: 'COMPLETED', date: '2026-06-05', note: '完成初稿' },
        { step: 2, name: '职工讨论', description: '提交职工代表大会或全体职工讨论', status: 'COMPLETED', date: '2026-06-12', note: '职工讨论收集意见' },
        { step: 3, name: '平等协商', description: '与工会或职工代表平等协商确定', status: 'COMPLETED', date: '2026-06-18', note: '协商修改后定稿' },
        { step: 4, name: '公示', description: '向全体员工公示', status: 'COMPLETED', date: '2026-06-22', note: '公告栏及邮件公示' },
      ],
      publishedAt: new Date('2026-06-22'),
      createdAt: new Date('2026-06-05'),
    },
    {
      id: 'pol_seed_3',
      title: '薪酬与绩效考核制度',
      content: `第一章 总则
第一条 为建立公平、公正、公开的薪酬体系，激励员工提升绩效，制定本制度。
第二条 薪酬结构包括：基本工资、岗位工资、绩效奖金、津贴补贴。

第二章 薪酬构成
第三条 基本工资不低于当地最低工资标准。
第四条 岗位工资根据岗位等级确定，具体标准见附件。
第五条 绩效奖金根据月度/季度/年度考核结果发放，考核等级分为A（优秀）、B（良好）、C（合格）、D（不合格）四档。

第三章 绩效考核
第六条 考核周期分为月度考核、季度考核和年度考核。
第七条 月度考核于次月5日前完成，季度考核于次季首月10日前完成，年度考核于次年1月15日前完成。
第八条 考核结果作为晋升、调薪、奖金发放的依据。
第九条 连续两次年度考核为D的，公司可以调整其岗位或依法解除劳动合同。

第四章 薪酬调整
第十条 公司每年根据经营状况和市场水平进行薪酬回顾，适时调整薪酬标准。
第十一条 员工岗位变动时，薪酬自变动次月起相应调整。

第五章 附则
第十二条 本制度经民主程序制定并公示后执行。`,
      type: 'RULES',
      status: 'CONSULTING',
      currentStep: 3,
      steps: [
        { step: 1, name: '起草制度', description: 'HR 起草规章制度文本', status: 'COMPLETED', date: '2026-07-01', note: '完成初稿' },
        { step: 2, name: '职工讨论', description: '提交职工代表大会或全体职工讨论', status: 'COMPLETED', date: '2026-07-08', note: '收集到15条修改建议' },
        { step: 3, name: '平等协商', description: '与工会或职工代表平等协商确定', status: 'IN_PROGRESS', date: '2026-07-15', note: '正在与工会代表协商中' },
        { step: 4, name: '公示', description: '向全体员工公示', status: 'PENDING', date: null, note: null },
      ],
      publishedAt: null,
      createdAt: new Date('2026-07-01'),
    },
    {
      id: 'pol_seed_4',
      title: '员工出差与费用报销制度',
      content: `第一章 总则
第一条 为规范出差管理和费用报销流程，制定本制度。

第二章 出差审批
第二条 员工出差需提前填写出差申请单，经部门负责人审批。
第三条 出差天数3天以上的需分管副总审批，7天以上的需总经理审批。

第三章 费用标准
第四条 交通费标准：
（一）飞机：总监及以上职级可乘坐商务舱，其他职级乘坐经济舱；
（二）火车：总监及以上职级可乘坐一等座，其他职级乘坐二等座；
（三）市内交通：实报实销，每日不超过100元。
第五条 住宿费标准（元/天）：
（一）一线城市：总监级800元，经理级500元，员工级350元；
（二）其他城市：总监级600元，经理级400元，员工级300元。
第六条 餐费补贴：出差期间每人每天补贴80元，不再另行报销餐费。

第四章 报销流程
第七条 出差结束后5个工作日内提交报销单据，逾期不予报销。
第八条 报销单据需附发票原件，经部门负责人和财务部审核后支付。

第五章 附则
第九条 本制度经民主程序制定并公示后执行。`,
      type: 'RULES',
      status: 'DISCUSSING',
      currentStep: 2,
      steps: [
        { step: 1, name: '起草制度', description: 'HR 起草规章制度文本', status: 'COMPLETED', date: '2026-07-10', note: '完成初稿' },
        { step: 2, name: '职工讨论', description: '提交职工代表大会或全体职工讨论', status: 'IN_PROGRESS', date: '2026-07-18', note: '正在征求各部门意见' },
        { step: 3, name: '平等协商', description: '与工会或职工代表平等协商确定', status: 'PENDING', date: null, note: null },
        { step: 4, name: '公示', description: '向全体员工公示', status: 'PENDING', date: null, note: null },
      ],
      publishedAt: null,
      createdAt: new Date('2026-07-10'),
    },
    {
      id: 'pol_seed_5',
      title: '保密与竞业限制制度',
      content: `第一章 总则
第一条 为保护公司商业秘密和知识产权，制定本制度。
第二条 商业秘密包括：客户名单、技术方案、财务数据、经营策略、薪酬信息等。

第二章 保密义务
第三条 员工在职期间及离职后均负有保密义务，不得泄露、使用或允许他人使用公司商业秘密。
第四条 员工应妥善保管涉密文件，离开工作岗位时应将涉密材料锁好或交还相关部门。
第五条 违反保密义务的，公司可以解除劳动合同并要求赔偿损失。

第三章 竞业限制
第六条 对负有保密义务的高级管理人员、高级技术人员和其他知悉商业秘密的员工，可以约定竞业限制条款。
第七条 竞业限制期限不超过两年，竞业限制期间公司按月支付竞业限制补偿金，标准为离职前12个月平均工资的30%。
第八条 违反竞业限制的，应向公司支付竞业限制违约金，并继续履行竞业限制义务。

第四章 附则
第九条 本制度经民主程序制定并公示后执行。`,
      type: 'RULES',
      status: 'DRAFT',
      currentStep: 1,
      steps: [
        { step: 1, name: '起草制度', description: 'HR 起草规章制度文本', status: 'IN_PROGRESS', date: '2026-07-20', note: '初稿起草中' },
        { step: 2, name: '职工讨论', description: '提交职工代表大会或全体职工讨论', status: 'PENDING', date: null, note: null },
        { step: 3, name: '平等协商', description: '与工会或职工代表平等协商确定', status: 'PENDING', date: null, note: null },
        { step: 4, name: '公示', description: '向全体员工公示', status: 'PENDING', date: null, note: null },
      ],
      publishedAt: null,
      createdAt: new Date('2026-07-20'),
    },
  ]

  for (const p of policies) {
    await prisma.policyDocument.upsert({
      where: { id: p.id },
      create: {
        id: p.id,
        orgId,
        title: p.title,
        content: p.content,
        type: p.type,
        status: p.status,
        democracyProgress: { currentStep: p.currentStep, steps: p.steps } as any,
        publishedAt: p.publishedAt,
        createdBy: userId,
        createdAt: p.createdAt,
      },
      update: {},
    })
    console.log(`Inserted: ${p.title} (${p.status})`)
  }

  const total = await prisma.policyDocument.count()
  console.log(`\n总计 ${total} 条规章制度`)
  await prisma.$disconnect()
}

main().catch(console.error)
