Files
TurboHR/backend/scripts/seed-policies.ts
T
selfrelease d79e3baa34 feat: 系统优化Phase2 - 面包屑导航/侧边栏间距/制度公示阅读签收/模板变量中文化/通知类型补全
- 面包屑导航组件,集成至TopNav header
- 侧边栏菜单分组间距增大,分组间分隔线
- 制度公示员工阅读签收:PolicyReadRecord模型、portal路由、管理端阅读统计
- 修复Policies.tsx民主程序推进bug(字段名/API路径/参数)
- 用工文本模板变量名英文转中文显示
- 通知类型TYPE_LABELS补全(RISK_ALERT/SOCIAL_INS/OVERTIME_ALERT/PAYSLIP_READY)
- 通知示例数据补充
- h2标题统一为text-sm font-medium
- 新增run.md
2026-07-26 20:32:38 +08:00

228 lines
11 KiB
TypeScript

/**
* 补充规章制度示例数据
* 运行: 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)