selfrelease
|
c8d8e5c292
|
fix: 用工体检诊断数据修正
1. 合同管理:移除合同附件扣分(查所有历史合同导致624虚高,附件非合规问题)
2. 规章制度:democracyProgress是JSONB不能用lt查询,改用status!=PUBLISHED
3. 社保/公积金记录异常:按员工去重,避免一个员工多条记录被重复计数
4. getComplianceScore中同样的democracyProgress查询问题修复
|
2026-08-01 14:52:26 +08:00 |
|
selfrelease
|
6fc8fe6a42
|
fix: 合同管理诊断624份无附件数据错误
合同附件不是法律合规问题,且查询计入所有历史合同(含续签/变更)导致数量虚高。
移除附件扣分和findings,合同管理评分仅基于未签合同和到期合同。
|
2026-08-01 14:50:26 +08:00 |
|
selfrelease
|
aa9bd95d6c
|
fix: 用工体检诊断分数不合理
1. 合同管理:缺少附件扣分上限30分(每份2分),避免42份无附件直接扣到0分
2. 保密竞业:employeesWithNDA 改为按员工数(distinct employee)计算而非合同数,避免一个员工多份合同被重复计数
|
2026-08-01 14:46:34 +08:00 |
|
selfrelease
|
31a25a7320
|
fix: 花名册合同风险统计与风险中心不一致
花名册快捷筛选标签基于当前页数据统计,改为后端返回全局RiskItem统计
- 后端roster API返回globalRiskStats(expiring/expired/unsigned)
- 前端优先使用全局统计,fallback到当前页统计
|
2026-08-01 14:41:45 +08:00 |
|
selfrelease
|
cb9209dbdd
|
fix: 风险中心与工作台数量不一致
风险中心改用 getDashboardData 的 todos 数据源(已按员工+类别去重),确保与工作台待办数量完全一致
|
2026-08-01 14:23:04 +08:00 |
|
selfrelease
|
6da7f2ca22
|
fix: 风险重复问题
1. runRiskDetection开头清理重复PENDING记录(同employeeId:type只保留最新)
2. onboardingRisks过滤掉已被contractRisks覆盖的员工,避免同一员工出现'未签合同'+'入职手续未完成'两条重复待办
|
2026-08-01 14:18:06 +08:00 |
|
selfrelease
|
4aa13d11c5
|
fix: 风险中心页面无数据
- 后端缺少 /compliance/risks 路由,新增 /dashboard/risks 端点返回PENDING风险项
- 前端API调用从 /compliance/risks 改为 /dashboard/risks
- RISK_TYPES 配置key从虚构子类型改为实际Prisma RiskType枚举值
- 风险列表字段映射修正: r.message→r.title, r.employeeName→r.employee.name
|
2026-08-01 14:14:47 +08:00 |
|
selfrelease
|
63c5a3b2e2
|
fix: 自动消除已解决的PENDING风险
问题:员工补签合同后,旧的未签合同/合同到期风险仍显示在待办中
原因:runRiskDetection只去重和更新,不会自动消除不再触发的风险
方案:检测后比较新风险key集合,PENDING但不再出现的自动标记RESOLVED
|
2026-08-01 13:55:17 +08:00 |
|
selfrelease
|
f1a02f0439
|
feat: TurboHR 14项优化与功能增强
- #1 Dashboard风险提醒增加立刻办理按钮
- #2 Calendar月份选择器改为input month
- #3 Termination增加7种解聘原因法律依据和操作步骤
- #5 合同审查支持PDF TXT格式
- #6 AI合同审查prompt优化为具体修改建议
- #7 知识库添加更新机制说明
- #9 SpecialStatus员工选择改用all-lite接口
- #10 Termination增加详细法律条款引用
- #11 Money发薪批次增加社保公积金合计列
- #12 EmployeeAttachment扩展文件类型
- #13 花名册增加女职工干部工人选项加退休提醒
- #14 新增公司备用文件上传模块
|
2026-08-01 13:47:49 +08:00 |
|
selfrelease
|
d9e2c610cf
|
fix: 待办时长格式统一 — 不足30天用天,超过30天用月+天
|
2026-08-01 08:24:06 +08:00 |
|
selfrelease
|
88e027bcda
|
fix: 待办跳转修复 — 1)actionUrl从/contracts改为/roster(无此路由) 2)Roster页面读取employee参数自动搜索并打开员工详情 3)更新数据库281条已有riskItem的actionUrl
|
2026-08-01 08:15:52 +08:00 |
|
selfrelease
|
d0c0be0984
|
fix: TaskCenter待办列表改用getDashboardData去重todos,与概览91一致(原211未去重)
|
2026-08-01 08:11:14 +08:00 |
|
selfrelease
|
d64f9c41a6
|
fix: 修复首页数据不一致 — 1)风险分布用去重数据 2)无工资数据时不估算社保 3)TaskCenter显示全部待办不再截取10条 4)修复dedupedTodos引用顺序
|
2026-08-01 07:53:30 +08:00 |
|
selfrelease
|
aef45c066e
|
fix: 修复首页问候语数字(211)与实际待办数(91)不一致 — 用去重后的 todos.length 替代未去重的 pendingRisks count
|
2026-08-01 07:23:25 +08:00 |
|
selfrelease
|
a88c96299c
|
Sprint 4-5: 员工自助+考勤+合规+AI+搜索
|
2026-08-01 06:45:59 +08:00 |
|
selfrelease
|
9946197d20
|
Sprint 3: 员工目录优化 + Profile Shell + 离职工作流重构 + 合同类型扩充 + 月度社保重构 + 商险管理Tab
S3-1: Roster.tsx 添加 InlineAlert 合同风险提示 + 快捷筛选标签
S3-2: 新建 EmployeeProfileShell.tsx 统一员工详情布局,重构 EmployeeProfile.tsx
S3-3: Termination.tsx 集成 Stepper 步骤条 + InlineAlert 风险提示
S3-4: schema.prisma ContractType 枚举扩充 DISPATCH/OUTSOURCING/PARTTIME + 后端接口 + 前端选择器
S3-5: SocialInsurance.tsx 月度办理 Tab 使用 InlineAlert 替换原始提示
S3-6: SocialInsurance.tsx 新增商险管理 Tab(方案CRUD + 参保人员列表)
|
2026-07-31 18:07:49 +08:00 |
|
selfrelease
|
55b6867c9c
|
feat: Sprint 2 — Stepper/InlineAlert组件 + 首页TaskCenter任务中心 + /workspace/next-actions API + Money.tsx BatchDetail集成工作流步骤条和质量门禁
|
2026-07-31 17:52:02 +08:00 |
|
selfrelease
|
821a62e3f8
|
feat: Sprint 1 — 设计Token系统 + 新导航5分组 + AppShell/PageHeader/FilterBar/DataTable组件 + 花名册导出扩充19字段 + 社保/公积金不缴纳选项 + 个税申报表导出 + 入离职/绩效统计看板
|
2026-07-31 17:40:49 +08:00 |
|
selfrelease
|
c15e11ec22
|
fix: 人力成本分析按员工去重,统一与Dashboard口径;环比/同比无数据时显示暂无数据
|
2026-07-31 14:24:37 +08:00 |
|
selfrelease
|
9df147ce59
|
fix: 年度价值报告待处理风险排除employeeId为null的未知员工
|
2026-07-31 11:44:37 +08:00 |
|
selfrelease
|
3f580bdb3d
|
fix: todoCount和highRiskCount使用去重后的数据保持一致
|
2026-07-31 11:37:49 +08:00 |
|
selfrelease
|
c184670775
|
fix: 修复风险扫描去重key不匹配导致大量重复数据,Dashboard风险提醒按员工聚合
|
2026-07-31 11:26:03 +08:00 |
|
selfrelease
|
d4cc7e5e62
|
feat: 风险标题天数改为月数显示
|
2026-07-31 10:59:33 +08:00 |
|
selfrelease
|
6c008387ad
|
fix: 员工规避损失明细排除无关联员工的月度任务记录
|
2026-07-31 10:44:05 +08:00 |
|
selfrelease
|
abbba82f25
|
feat: 员工规避损失明细添加规避方式列
|
2026-07-31 10:41:22 +08:00 |
|
selfrelease
|
7d7f39fd30
|
fix: 待处理风险按风险类别去重,避免同一风险重复展示
|
2026-07-31 10:18:42 +08:00 |
|
selfrelease
|
8014c9a139
|
feat: 移除ROI,新增待处理风险列表
- 移除ROI横幅和说明,改为年度总价值概览
- 后端新增 pendingRisks 查询,返回PENDING状态风险
- 前端新增待处理风险表格,按员工去重展示
- summary 改为包含待处理风险数量
|
2026-07-31 10:04:04 +08:00 |
|
selfrelease
|
de73d20d68
|
fix: 年度价值报告只统计人工解决的风险,排除系统自动关闭
- 员工离职时系统自动将PENDING风险标记为RESOLVED(resolvedBy=null)
- 这些风险并未被真正解决,不应计入规避损失
- 年度报告所有RESOLVED查询加 resolvedBy: { not: null } 条件
- 只有用户在待办中点击完成的才算真正规避
|
2026-07-31 09:49:40 +08:00 |
|
selfrelease
|
c7f270e8df
|
fix: 移除规避率30%打折,已解决风险直接用预估损失作为规避价值
- 后端移除 RISK_AVOIDANCE_RATE,adjustedLossAvoided = lossAvoided
- 前端移除规避率列和30%说明,表格直接展示预估损失=规避损失
- 价值计算说明更新:系统已发现并解决,全部潜在损失即为规避价值
|
2026-07-31 09:29:51 +08:00 |
|
selfrelease
|
f5a03f82bc
|
fix: 身份证号必填+去重+报告按姓名兜底
- 后端 createEmployeeSchema 加 idCardNumber 必填18位校验
- 后端 updateEmployeeSchema 加 idCardNumber 可选编辑
- updateEmployee 支持编辑身份证号,自动生成 hash/生日/性别
- Excel 导入时身份证号必填,为空跳过
- 年度价值报告去重 key 改为 idCardHash > name > employeeId 兜底
|
2026-07-31 09:24:44 +08:00 |
|
selfrelease
|
57587dd5ed
|
fix: 年度价值报告按身份证号+风险类型双重去重
- 按 idCardHash 去重同一人的多条 Employee 记录(无身份证号回退到 employeeId)
- 按风险类别去重同一风险的重复创建解决,只取 estimatedLoss 最大值
- 风险扫描去重改为检查所有状态(含RESOLVED/IGNORED),按 employeeId:type 归并
- 修复规避损失用去重后的值替代原始聚合值
|
2026-07-31 09:16:23 +08:00 |
|
selfrelease
|
a77a37a32e
|
feat: 年度价值报告增加员工维度规避损失明细
- 后端按员工汇总已解决风险明细,含风险标题、法律依据、预估损失
- 前端新增员工规避损失明细表格,展示每员工的原始损失、规避率(30%)、打折后损失
- 表格含合计行,与总价值计算逻辑一致
- 修复RISK_AVOIDANCE_RATE重复声明
|
2026-07-30 19:30:23 +08:00 |
|
selfrelease
|
aced7929e1
|
fix: 年度价值报告风险量化按劳动法设定法定上限
- 单条风险estimatedLoss封顶:双倍工资≤11个月(第82条)、经济补偿N≤12个月月薪≤社平3倍(第47条)、违法解除2N≤24个月(第87条)
- 年度规避损失按30%规避率打折(非每项风险都演变为实际仲裁)
- ROI上限9999%
- 前端计算说明同步更新
|
2026-07-30 19:17:22 +08:00 |
|
selfrelease
|
55286819ae
|
fix: HR系统优化批次1 - P0/P1问题修复
P0-3: 修复合同状态判断逻辑,有合同记录但signDate为null时不再误判未签
P0-5: 修复参保城市默认北京问题,导入和预览均改为null
P0-11: 添加全局ErrorBoundary防止白屏,三处布局均包裹
P1-2: 合同附件改为可选,允许先保存再补充上传
P1-7.2: 排班弹窗增加员工搜索(姓名/部门)
P1-8.2: 加班费导入支持Excel(xlsx/xls)格式,兼容中英文列名
P1-9: 社保/公积金基数月度办理支持逐人修改,后端返回recordId
|
2026-07-30 18:34:36 +08:00 |
|
selfrelease
|
826c8fda65
|
feat: 员工特殊状态台账(三期/工伤/医疗期)完整实现
|
2026-07-30 15:04:34 +08:00 |
|
freedakgmail
|
5a5ce7186b
|
feat: 全部列表页统一分页 + WorkProcess集成现有服务
- WorkProcess/Termination/Evidence/Contracts/Policies/Templates 添加 Pagination 组件
- 后端 getDrafts/getPolicies/enterprise-template 路由添加分页支持(可选参数,向后兼容)
- work-process.service CONFIRM case 修正:移除不存在的 probationEndDate 字段
- 新增 migration_add_three_tables.sql 增量迁移文件
|
2026-07-30 10:39:21 +08:00 |
|
freedakgmail
|
cea7eb07c4
|
refactor: WorkProcess 业务逻辑复用原有 service
- HIRE 调用 createEmployee(含社保/公积金/薪资/部门记录)
- RENEW/CUSTOM_CONTRACT 调用 addContract(含重复检查、试用期验证、风险检测)
- TERMINATE/RESCIND 调用 createTerminationDraft + executeTermination(含风险评级、合规清单、社保截止)
- CONFIRM 增加 probationEndDate 更新和 runRiskDetection
- FLEXIBLE 调用 createEmployee + addContract
- 前端 TERMINATE/RESCIND 表单增加 reason 和 compensation 字段
- 原有 Roster 入口保持不变,两条路径共用同一套 service
|
2026-07-30 10:27:47 +08:00 |
|
freedakgmail
|
42e0c650a4
|
feat: 实现20260730优化方案全部功能
- AI文件审查:.docx上传提取文本,支持多种文档类型
- 用工办理工作流:WorkProcess页面+后端API,支持入职/续签/终止等流程
- 企业自建文本库:Templates页面Tab切换,企业模板CRUD+渲染+下载Word
- 考勤发布:Attendance发布/取消发布按钮,员工端MyAttendance页面
- 工资条发布:Money发布/定时发送按钮+弹窗,portal端publishStatus过滤
- 合同到期弹窗:Dashboard合同到期预警可点击打开弹窗,支持续签/终止操作
- Prisma schema新增WorkProcess/EnterpriseTemplate/AttendancePublish模型
- 前后端编译验证全部通过
|
2026-07-30 10:21:22 +08:00 |
|
freedakgmail
|
0372cbe243
|
feat: 完成全部11项优化需求 + 模板必填项标注 + 归档重算个税
- 高优先级: 花名册导入模板必填项标注、性别自动识别、导入结果反馈、证据链Excel导出、身份证搜索修复、试用期区分与转正提醒、薪税批次流程优化
- 中优先级: 专项附加扣除批量导入、文本模板库完善(Word下载/复制/使用说明)、用工体检评分标准说明、考勤页面导入入口
- 所有导入模板表头标注必填项(*后缀)并含示例行
- 导入逻辑统一改用getField兼容*后缀列名
- 批次归档时强制重算所有条目个税和社保,解决多未归档批次并存时累计计算不准问题
- 更新需求梳理文档
|
2026-07-29 19:08:45 +08:00 |
|
selfrelease
|
7c24ebe3d9
|
fix: 清理重复合同数据 + batchRenew截断旧合同endDate + addContract防重复检查
|
2026-07-29 12:36:39 +08:00 |
|
selfrelease
|
e4a60a985e
|
feat: Dashboard 合同卡片显示有效合同数 + 总合同数
|
2026-07-29 12:31:09 +08:00 |
|
selfrelease
|
9dbd5b4c87
|
feat: 编辑企业弹窗增加管理员信息编辑(姓名、手机号、重置密码)
|
2026-07-29 12:25:10 +08:00 |
|
selfrelease
|
b7e617cd0d
|
fix: 企业登录拒绝 SUPER_ADMIN + authMiddleware 校验 orgId 非空,修复 500 错误
|
2026-07-29 12:01:14 +08:00 |
|
selfrelease
|
b2248b9afc
|
feat: 平台管理员创建企业客户功能 + deploy.sh 跳过 tsc
|
2026-07-29 11:54:23 +08:00 |
|
selfrelease
|
987a4678f7
|
feat: 平台管理员端 — SUPER_ADMIN 角色 + 企业租户管理 + 用户管理 + 数据总览
|
2026-07-29 11:49:48 +08:00 |
|
freedakgmail
|
fb36b10402
|
feat: 工作日历/考勤管理重构/AI人力报告/工作台员工分布/筛选优化/导入导出增强
- 新增工作日历页面(月历视图、事件管理、自定义事件)
- 考勤管理重构为6 Tab模块(班次/排班/每日出勤/月度报表/休假记录)
- AI顾问新增人力报告Tab,支持流式生成+Word导出
- 工作台总览新增员工分布统计(性别/年龄/学历/司龄饼图)+部门成本拆分
- 花名册/合同/解聘补偿新增部门和状态筛选
- 薪税管理新增工资表导入模板下载、银行代发CSV导出
- 社保公积金支持多公积金账户类型显示
- 数据导出新增花名册/解聘记录导出,中文文件名编码修复
- 数据导入新增模板下载(员工/增减员/工资表)+错误日志导出
- 移除工作台日历卡片(已迁移至独立工作日历页面)
- 新增20260728/20260729更新测试指导文档
|
2026-07-29 08:35:29 +08:00 |
|
selfrelease
|
5aa7af9a46
|
fix: 审计日志补充关键操作详情,前端改为可读格式显示
|
2026-07-28 15:28:03 +08:00 |
|
freedakgmail
|
5e22a82163
|
feat: 社保AI建议、合同附件多文件上传预览、删除合同、扩展上传格式
|
2026-07-27 23:45:22 +08:00 |
|
selfrelease
|
ab677eb5d9
|
fix: extraInsurances TS类型断言 + trust proxy设置,部署到on.hr8ai.top
|
2026-07-27 19:34:04 +08:00 |
|
selfrelease
|
255af519d2
|
feat: Phase 1-3 优化全部完成
Phase 1 紧急修复(8项):
- 社保城市选择改为可输入
- 社保上下限拆分(三险/医保独立基数)
- 公积金试算结果展示修复
- 花名册合同保存修复(日期ISO格式)
- 薪酬批次创建失败修复(城市过滤+错误处理)
- 证据链查看修复
- 个税计算修复(blank_employees读取基本工资)
- 加班费倍率读取配置
Phase 2 功能完善(3项):
- 批量导入per-row异常捕获+导入按钮
- 单人发薪UI入口优化
- 解除协议模板补充(员工提出离职版)
Phase 3 后期规划(4项):
- 工资表导入功能(POST /import/payroll + 前端入口)
- 大病险/长护险附加险种(extraInsurances JSON + 计算适配)
- 专项附加扣除按月录入(SpecialDeductionRecord模型 + 前端Tab)
- 预置河北省社保政策(seed数据)
|
2026-07-27 18:55:08 +08:00 |
|