selfrelease
c3ca2c9f50
fix: 公积金基数上下限独立于社保
...
问题:SocialYearStandard 只有一套 baseMin/baseMax,社保和公积金
共用,但公积金下限通常是最低工资标准(如北京2420),远低于社保
下限(如北京6326)。
修复:
- SocialYearStandard 新增 housingBaseMin/housingBaseMax 字段
- clampHousingFundBase 优先用公积金专用上下限,为0时回退到社保
- calcHousingFund 同样优先用公积金专用上下限
- 前端公积金年度标准表单加公积金基数上下限输入
- 前端公积金当前标准展示用公积金专用上下限
同时修复 blank_employees/blank_all 模式跳过试用期工资覆盖
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 15:23:08 +08:00
selfrelease
54d138cc73
ux: 新建账户按钮移到社保/公积金Tab内部,按类型显示
...
按钮从页面顶部移到Tab内容区顶部,文案改为"新建社保账户"/"新建公积金账户",
明确表示新建的是当前Tab对应类型的账户。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 15:10:38 +08:00
selfrelease
de4f8c90fb
feat: 最低工资保护按当月累计判断 + 预入职员工 + 发薪年月
...
1. 最低工资保护:第二批次递延时判断当月累计实发(已归档批次
netPay 之和 + 本批次 netPay)是否低于 minWage,仅累计低于
时才触发递延补齐,补齐目标 = minWage - 已归档累计实发
2. 预入职员工:EmployeeStatus 新增 PRE_ONBOARD 状态
- 新增员工表单加"入职状态"选择器(正式入职/预入职)
- 薪资批次创建排除 PRE_ONBOARD 员工
- 花名册支持按预入职状态过滤
- 新增 POST /:id/activate API 转正式
3. 发薪年月:PayrollBatch 新增 payMonth 字段
- 所属月(计薪月)决定社保标准、个税累计
- 发薪年月=实际发放月份(如十一提前发薪:所属月=10月,发薪月=9月)
- 创建批次表单加所属月和发薪年月输入
- 批次列表显示所属月/发薪月
4. blank_employees 模式不再自动带出基本工资
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 15:06:58 +08:00
selfrelease
8391c123fc
refactor: 社保公积金Tab重构为账户卡片列表+展开年度标准管理
...
1. 社保/公积金Tab从"选账户→展示配置"改为"账户卡片列表+展开管理"
2. 每个账户卡片可展开显示:当前标准/最低工资编辑/新建年度标准/版本历史/调基/试算
3. 账户新建/编辑/删除/设默认从设置页面迁移到社保公积金菜单
4. 设置页面去掉"社保公积金账户"Tab
5. "新建版本"改名为"新建年度标准"
6. 新增AccountCard组件独立管理每个账户的展开状态和数据查询
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 15:05:06 +08:00
selfrelease
a5911d1874
fix: blank_employees 模式不再自动带出基本工资
...
本月空白模式应所有金额默认 0,去掉从 emp.monthlySalary 自动填充
基本工资的逻辑,保持与"空白"语义一致。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 14:57:10 +08:00
selfrelease
63a0a6934b
fix: 优化最低工资保护tooltip文案,明确免扣社保/公积金与额外补齐的区分
...
minWageApplied 包含免扣社保+免扣公积金+额外补齐三部分,
原tooltip统称"补齐"容易误解为额外补了这么多现金。
改为分项显示:免扣社保 ¥X + 免扣公积金 ¥Y + 额外补齐 ¥Z
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 14:35:25 +08:00
selfrelease
904c9c6369
feat: 薪资表格增加最低工资保护和递延扣款的可视化提示
...
1. 实发列:最低工资保护触发时显示橙色 + ★标记 + tooltip
2. 新增「递延扣款」列:显示递延金额(橙色)或补扣金额(蓝色)
3. 风险列:最低工资保护触发时显示橙色警告图标 + tooltip
4. 工作流步骤从4步改为3步(编辑薪资→归档锁定→发布工资条)
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 14:30:08 +08:00
selfrelease
ea2dfe3b4b
feat: 最低工资保护 + 社保/最低工资递延补扣机制
...
新增功能:
1. SocialYearStandard / SocialInsuranceConfig 增加 minWage 字段
2. BatchEntry 增加递延扣款字段(deferredSocialEmp/HousingEmp/MinWage)
3. calcBatchEntry 增加最低工资保护逻辑:
- 实发 < 最低工资时,优先递延社保 → 递延公积金 → 递延最低工资补齐
- 递延金额记录到 BatchEntry,次月创建批次时自动补扣
4. prePayrollCheck 增加最低工资检查(第 11/12 项)
5. 前端社保配置增加最低工资输入框
6. 前端 BatchTab 质量门禁增加最低工资/递延扣款提示
处理场景:
- 入职当月工资不足扣社保个人部分 → 递延到次月补扣
- 实发低于最低工资 → 补齐到最低工资,差额递延次月扣
- 次月创建批次时自动读取上月递延金额并补扣
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 14:15:39 +08:00
selfrelease
fe427ef13f
refactor: 新增员工去掉参保城市选择器,城市从社保账户继承
...
- 前端:参保城市改为只读显示,从选中的社保账户自动继承
- 前端:去掉参保城市下拉选择器和 cities 查询
- 后端:clampSocialInsBase/clampHousingFundBase 改为优先按 accountId
查年度标准裁剪基数,回退旧配置表
- 后端:createEmployee 传入 socialAccountId/housingAccountId 给 clamp 函数
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 14:08:11 +08:00
selfrelease
014c94e482
feat: 账户关联根部门 + 员工新增自动带出账户
...
1. 账户管理:新建/编辑时可勾选关联 level=0 根部门(公司/分公司/子公司)
2. 后端新增 API:
- PUT /social/accounts/:id/departments 批量关联根部门
- GET /social/accounts/:id/departments 查询已关联部门
- GET /social/department-account/:departmentId 按部门带出适用账户+标准
3. 部门更新 API 支持 socialAccountId/housingAccountId 字段
4. 员工新增表单:选定部门后自动带出社保公积金账户,可手动调整
5. 参保记录创建时写入 accountId
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 13:59:06 +08:00
selfrelease
63b6c9dcc7
feat: 社保公积金账户化重构
...
新增 SocialAccount(账户)+ SocialYearStandard(年度标准)两层实体,
替代原 SocialInsuranceConfig/HousingFundConfig 按城市管理的方式。
- DB: 新增 SocialAccount、SocialYearStandard 表,Department 加账户关联
- 迁移: 旧 Config 表数据迁移到 Account + YearStandard
- 后端: 新增账户 CRUD + 年度标准 API,薪资计算适配 accountId
- 前端: 设置页新增账户管理 Tab,组织架构提示 level=0 可关联账户
- 前端: SocialInsurance.tsx 城市选择器改为账户选择器
- 兼容: 旧 Config 表保留,薪资计算回退旧表
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 13:50:15 +08:00
selfrelease
851557729f
fix: 月度待办跳转精准化+优化清单状态同步
...
- 社保/公积金待办 actionUrl 从 /money 改为 /social?tab=monthly(跳到社保公积金月度办理 Tab)
- 工资/个税待办 actionUrl 从 /money 改为 /money?tab=batch(跳到薪税管理发薪批次 Tab)
- SocialInsurance.tsx 支持 ?tab= 参数初始化 Tab
- Money.tsx 支持 ?tab= 参数初始化 Tab
- 已更新存量 PENDING 记录的 actionUrl
- 优化清单全部 10 项标注 ✅ 已完成
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 12:55:05 +08:00
selfrelease
5a9d440339
fix: 线下签署登记标题英文转中文+完成时间时区+签署记录角标
...
1. documentTitle 中 contractType 枚举值转中文
(LABOR→劳务协议、FIXED→固定期限劳动合同等)
2. 签署日期解析改为本地时区构造(new Date(y,m-1,d,12)),
避免 new Date('2026-08-16') 被解析为 UTC 00:00 导致
本地 +8 显示为 08:00:00
3. 签署记录 Tab 增加数字角标显示总记录数
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 12:26:13 +08:00
selfrelease
72a6eab3bd
fix: risk.service.ts priorityOrder 重复声明导致后端启动失败
...
用户手动修改 risk.service.ts 时在第 966 行重复声明了
priorityOrder(第 955 行已声明),导致 esbuild 报错
"The symbol priorityOrder has already been declared",
后端 502 Bad Gateway。删除重复声明。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 12:22:00 +08:00
selfrelease
ef6d4591be
fix: 登记线下签署日期时同步创建 EsignRecord
...
登记签署日期后,签署记录 Tab 中也能看到这条记录。
创建一条 status=COMPLETED 的线下手签 EsignRecord,
避免已签合同在签署记录中无痕可查。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 12:17:39 +08:00
selfrelease
040c5a3ab9
feat: 待签合同支持登记线下签署日期
...
- 线下手签合同:展开后可点击「登记签署日期」选择日期并保存
保存后合同从待签列表移除(signDate 已填写)
- 电子签合同:签署日期由电签系统自动回写,不可手动修改
- 后端新增 POST /esign/sign-date 接口
电子签合同拒绝手动修改签署日期
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 12:13:07 +08:00
selfrelease
8c7fb99219
ux: 待签合同列表新增「待签内容」列,展示场景标签+签署方式
...
每行员工直接显示待签文件的类型(劳动合同/离职协议/规章制度等)
和签署方式(电子签/线下手签),无需展开即可看出是什么待签。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 12:06:15 +08:00
selfrelease
71f0619d18
feat: 电子签署改为「待签合同」,按员工聚合+催办功能
...
1. 菜单「电子签署」改名为「待签合同」
2. 页面重构为两个 Tab:
- 待签合同:按员工聚合展示所有未签文件(EsignRecord
PENDING/SIGNING + LaborContract signDate 为空),展开可
查看该员工名下所有待签文件详情
- 签署记录:原有全部签署记录列表(保留筛选功能)
3. 催办功能:点击催办生成一次性自动登录链接(24h有效),
指向员工端签署页,弹窗展示二维码+可复制链接,HR 发给
员工扫码直接进入签署
4. 后端新增接口:
- GET /esign/pending 待签合同按员工聚合列表
- POST /esign/remind 催办生成自动登录链接
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 11:57:43 +08:00
selfrelease
d7fdec49fa
feat: 员工端密码登录完整支持
...
1. createEmployee 创建员工时自动设置默认密码(手机号后6位)
2. 管理员重置密码接口 POST /employees/:id/reset-password
(重置为手机号后6位)
3. 员工自己修改密码接口 POST /portal/change-password
(需验证旧密码,新密码至少6位)
4. 花名册详情添加"重置密码"按钮,显示默认密码提示
5. 员工端导航栏添加"修改密码"入口,弹窗修改密码
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 11:28:56 +08:00
selfrelease
26d0b7070d
fix: 员工端 portalAxios 缺少 response interceptor 导致登录失败
...
问题:portalAxios 没有 response interceptor,axios 返回完整的
response 对象,unwrap 取 res.data 得到的是 { success, data: {...} }
而非 { token, employee },导致前端 data.token 为 undefined,
自动登录/密码登录/验证码登录全部失败。
修复:给 portalAxios 添加与管理端 api 实例一致的 response
interceptor:(response) => response.data,使 unwrap 能正确
解包到 { token, employee }。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 11:11:43 +08:00
selfrelease
6b3e1f9d46
fix: 手机号查重硬校验 + portal 登录跨组织安全
...
问题:
1. 后端 createEmployee 只有身份证查重,没有手机号查重,
同组织内可重复录入相同手机号,导致员工端登录混乱
2. portal 登录用 findFirst 按 phone 查,未考虑跨组织重复,
多组织同手机号时会登录到错误员工
3. Contracts.tsx 的 AddEmployeeModal 完全没有手机号查重
修复:
1. contract.service.ts createEmployee 添加手机号查重硬校验
(同组织内 phone 唯一,抛 DUPLICATE_PHONE 错误)
2. portal.routes.ts 密码登录改为 findMany 遍历校验密码,
验证码登录改为 findMany 取第一个匹配
3. Contracts.tsx AddEmployeeModal 添加手机号查重和警告提示
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 10:57:06 +08:00
selfrelease
dd0e84a219
ux: 部门字段统一改为下拉选择(组织架构部门树)
...
将以下页面的部门输入框从 Input 改为 Select 下拉选择,
数据源为组织架构部门树(带层级缩进):
1. roster/modals.tsx - RehireModal 重新入职弹窗
2. roster/modals.tsx - AddEmployeeModal 添加员工弹窗
3. roster/BasicInfo.tsx - 编辑员工基本信息
4. Contracts.tsx - 合同管理新增员工弹窗
下拉选项从 /departments 接口获取,按树形结构展示,
提交时传部门名称字符串(保持后端兼容)。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 09:23:24 +08:00
selfrelease
9a826c16b0
fix: 组织架构根部门自动创建为公司名
...
1. 注册时自动创建根部门(公司名,level=0),作为组织架构顶层节点
2. 部门列表查询时兼容历史组织:若无任何部门,自动补建根部门
3. 创建部门时若未指定父部门,默认挂到根部门下
4. 前端 OrgChart:
- 根部门显示"公司"标签,不可编辑/删除
- 新增部门时默认父部门为根部门
- 上级部门下拉移除"无(根部门)"选项,改为列出所有可选部门
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-16 09:16:31 +08:00
selfrelease
1f545fb489
fix: 补充社保截止月自动推导+草稿schema字段+面包屑文案
...
测试验证发现3个问题并修复:
1. TASK-007 社保联动:Organization.socialInsCutoffDay 字段缺失,
createDraft 未自动推导社保/公积金截止月。
- 新增 Organization.socialInsCutoffDay 字段(默认15日)
- createDraft 中根据离职日期与截止日比较,自动推导截止月
- cutoffDay 日前离职 → 截止月=离职月-1,日后 → 截止月=离职月
2. TASK-002 补偿金合计:createTerminationDraftSchema 缺少
compensationBreakdown 和 checklistOverrides 字段,导致 zod parse
时被过滤。已补充字段声明。
3. TASK-028 去掉用工办理:Breadcrumb 中 /work-process 标签仍为
"用工办理",已改为"批量流程"。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 17:26:14 +08:00
selfrelease
8fcc7ae143
feat: 转正弹窗显示原薪资 + 薪资变化时联动签署
...
- ConfirmModal 显示原薪资(¥xxx),转正薪资默认填入原薪资
- 转正薪资与原薪资不同时,提示"将发起薪酬调整确认书签署"
- confirmMutation onSuccess:薪资变化时弹出签署方式选择弹窗
- scene=POLICY,文件标题为"转正薪酬调整确认书"
- 备注记录薪资变化:¥原薪资 → ¥新薪资
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:51:41 +08:00
selfrelease
3da61d5a09
feat: 花名册操作联动电子签署 + 修复重复创建
...
## 修复
- POST /contracts 不再自动创建签署记录(由前端根据signMethod决定),避免与ContractInfo重复创建
## 新增 SignMethodChoice 通用组件
- 花名册操作成功后弹窗选择签署方式:电子签/线下手签/稍后处理
- 电子签:自动创建ESignRecord(PENDING),员工在员工端签署
- 线下手签:跳转签署页面,预填员工/场景/标题,上传扫描件登记
- 稍后处理:跳过,可后续在签署页面手动发起
## 花名册4项操作联动签署方式选择
- 重新入职:操作成功后弹窗(scene=CONTRACT,劳动合同)
- 合同续签:操作成功后弹窗(scene=CONTRACT,续签劳动合同)
- 薪酬变更:操作成功后弹窗(scene=POLICY,薪酬调整确认书)
- 调岗调动:操作成功后弹窗(scene=POLICY,调岗确认书)
## ESign页面支持URL参数
- 读取 ?action=paper-sign 自动打开线下手签登记Modal
- 预填employeeId/scene/documentTitle
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:45:53 +08:00
selfrelease
434c63c6d3
feat: 线下手签完整流程 + 证据链体系
...
## 数据库
- ESignRecord 增加 signMethod 字段(ELECTRONIC/PAPER)
- 增加线下手签专用字段:signedAt、signedLocation、witnessName、witnessPhone、scanFileUrls
## 后端
- esign.routes.ts 新增线下手签接口:
- POST /esign/paper-upload:上传签署扫描件(multer多文件,10MB限制)
- POST /esign/paper-sign:线下手签登记(创建COMPLETED记录+证据链+回写合同)
- esign.service.ts:autoCreateEsignRecord 设置 signMethod=ELECTRONIC
- 静态文件服务复用 /uploads 统一映射
## 前端管理端
- ESign.tsx 新增"线下手签登记"按钮和 Modal:
- 选择员工、文件类型、签署日期、地点、见证人
- 上传签署扫描件(多文件)
- 登记后自动创建证据链
- 列表增加"签署方式"列(电子签/线下手签标签)
- 详情页增加签署方式标签 + 线下手签信息卡片 + 扫描件列表
## 前端员工端
- MyEsign.tsx 列表增加线下手签标签
- 详情页增加线下手签信息卡片(签署日期/地点/见证人/扫描件)
- 签署操作区域:线下手签记录显示"线下手签已登记",不显示验证码签署
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:36:46 +08:00
selfrelease
12f1cde7c5
feat: 花名册操作自动创建电子签署流程
...
## 新增 esign.service.ts
- autoCreateEsignRecord 公共方法,供其他业务模块调用
- 自动渲染模板文件内容 + 创建证据链
## 自动触发签署
- 增加员工(创建合同时):自动创建劳动合同电子签署记录(scene=CONTRACT)
- 主动离职(createDraft type=RESIGNATION):自动创建离职协议签署(scene=RESIGNATION)
- 公司解聘(executeTermination type=TERMINATION):执行完成后自动创建离职协议签署
## 前端提示
- 添加员工成功后提示"劳动合同电子签署已自动发起",可跳转签署页面
- 主动离职成功后提示"离职协议电子签署已自动发起"
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:27:15 +08:00
selfrelease
b6fc93cc61
feat: 电子签署完整流程 + 证据链体系
...
## 后端
- esign.routes.ts 重写:
- 发起签署时校验组织电子签开关(POLICY/PAYSLIP/ONBOARDING)
- 自动从模板渲染文件内容(CONTRACT→劳动合同模板,RESIGNATION→离职协议模板)
- 创建签署记录时自动创建证据链(发起签署事件)
- 新增签署详情接口、证据链查看接口
- 取消签署追加证据链事件
- 签署状态查询自动处理过期记录
- portal.routes.ts 员工端 esign 重写:
- 新增验证码发送接口(/esign/:id/send-code)
- 签署操作增加验证码校验(5次错误限制)
- 签署完成追加证据链(IP/UA/时间戳/验证码/签署人)
- 签署完成回写合同 signMethod + attachmentName(签署证据)
- 列表和详情接口自动处理过期记录
## 前端
- ESign.tsx 管理端重写:
- 发起签署增加场景选择(5种场景)
- 场景选择后自动填充默认文件标题
- 新增签署详情页(文件内容预览 + 证据链时间线)
- 签署流程说明
- MyEsign.tsx 员工端重写:
- 签署操作增加验证码确认流程
- 60秒倒计时限制
- 文件内容预览
- 签署完成状态展示
- api-services.ts:
- esignApi 增加 detail/evidence 接口
- portalApi 增加 esignSendCode 接口
- signEsign 增加 verifyCode 参数
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:19:37 +08:00
selfrelease
d216e4a57a
fix: AI助手页面输入框超出屏幕(适配PageGuide高度)
...
ChatTab 高度从 calc(100vh - 220px) 调整为 calc(100vh - 250px),
补偿新增 PageGuide 操作说明占用的高度,避免输入框被挤出屏幕。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:04:46 +08:00
selfrelease
7e720d9bfc
feat: 北京解聘合规增强 — 政策法规库+地区过滤+工会回执证据链
...
1. 政策法规库(RAG知识库):
- 新增6条北京地区单方解除劳动合同工作指引种子数据
- 涵盖通知工会程序、函件内容要求、回执要求、监督提示函、仲裁审查等
- 企业用户通过AI问答可检索到北京地区工会通知规定
2. 地区差异化合规检查:
- getChecklistForReason 增加 orgCity 参数
- 工会通知检查项仅北京地区显示(FAULT/NONFAULT/LAYOFF)
- 前端解聘方式说明中北京工会提示仅北京地区动态显示
- 非北京地区不显示工会通知检查项,避免误导
3. 工会回执上传+证据链留存:
- 后端新增3个接口:上传回执文件、保存回执信息、获取回执信息
- 回执信息保存到草稿 checklistOverrides
- 自动追加到证据链(appendEvidence),作为劳动仲裁举证材料
- 前端合规检查步骤增加工会回执上传区域
- 确认提交步骤展示回执文件链接
- 新增 uploads 静态文件服务
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 16:01:02 +08:00
selfrelease
e8c6d27979
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>
2026-08-15 15:51:45 +08:00
selfrelease
f8dca2f22c
fix: 修复TASK-024/025/026/027验收标准 + 更新优化计划文档
...
- TASK-024: 证明Modal增加类型选择(收入/在职/离职证明)
- TASK-025: 续签按钮增加合同到期状态过滤(仅expiring/expired显示)
- TASK-026: 批量转正增加弹窗填写转正日期和薪资
- TASK-027: 批量开具证明增加类型选择弹窗
- 更新20260815-优化计划.md,标注复查结果
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:43:23 +08:00
selfrelease
75e08b90c0
ux: 统一PageGuide位置到页面最顶部 + 侧边栏不显示品牌名
...
- SalaryDashboard/ESign: PageGuide 从标题下方移到标题上方
- Termination: PageGuide 从列表视图块内移到页面顶部
- SocialInsurance/Dashboard/Attendance: 页面顶部新增总览 PageGuide
- 侧边栏左上角不再回退显示品牌名,仅显示企业名称
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:34:51 +08:00
selfrelease
456cd91a83
brand: 软件名称从"企业用工专家/TurboHR"统一改为"安职通"
...
- 登录/注册/忘记密码页标题
- 侧边栏和员工端布局默认名称
- 新手引导欢迎语
- 帮助中心问答
- 验收测试页面标题
- 后端 RAG 知识库
- 部署脚本日志输出
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:29:13 +08:00
selfrelease
f523f84c18
ux: 全部页面添加操作说明 PageGuide
...
为以下17个缺少操作说明的页面添加 PageGuide 组件:
- OrgChart: 组织架构管理
- SupportDashboard: 客服工作台
- Money: 薪酬管理
- AIAssistant: AI 智能助手
- Settings: 系统设置
- Calendar: 人事日历
- Templates: 模板管理
- AuditLog: 审计日志
- Notifications: 通知中心
- MedicalPeriodCalculator: 医疗期计算器
- HealthCheck: 用工健康检查
- AnnualValueReport: 年度价值报表
- CompanyFiles: 公司文件管理
- LeaveApproval: 请假审批
- TrainingRecords: 培训记录
- PerformanceRecords: 绩效记录
- DisciplinaryRecords: 违纪记录
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:26:02 +08:00
selfrelease
5c3f3503ea
feat: 花名册增加职务筛选 + 去掉解聘页新建按钮
...
- 后端:roster list 接口增加 position 筛选参数
- 后端:新增 /roster/positions 接口返回在职员工职务去重列表
- 前端:花名册筛选栏增加"全部职务"下拉框
- 前端:导出也支持 position 参数
- 前端:去掉解聘补偿页面的"新建解聘"按钮,解聘统一从花名册发起
- 前端:空状态提示改为"请在花名册中选择员工发起解聘"
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:22:06 +08:00
selfrelease
81e1cd0f72
ux: 花名册列表两行记录样式美化
...
- 姓名列:姓名加粗深色 + 证件号码淡灰小字,紧凑行间距
- 社保缴费列:个人/企业改为右对齐标签式,字号区分主次
- 操作列:两行按钮间增加分隔线,按钮间距收紧
- 全行 padding 从 py-3 调整为 py-2.5,行高更紧凑
- 行间分隔线变淡(gray-100 → gray-50),hover 效果加 group
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:14:13 +08:00
selfrelease
34b82bdbe7
feat: 建立部门和职务关联关系,调动时按部门过滤可选职务
...
- 17个部门专属职务绑定到对应部门(如工人→项目运营中心、会计→财务部)
- 8个通用职务保持不绑定(部门经理/主管/组长等,所有部门可用)
- 前端调动弹窗优化职务过滤:通用职务 + 该部门专属 + 父部门专属(子部门继承)
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:06:23 +08:00
selfrelease
e3d46d9142
feat: 调部门改为调动,使用组织架构部门和职务下拉选择
...
- 后端:EmployeeDepartmentRecord 增加 oldPosition/newPosition 字段
- 后端:department-change 接口支持 departmentId 关联 + position 职务变动
- 后端:同步更新 Employee.departmentId 和 Employee.position
- 前端:DeptChangeModal 改为从组织架构下拉选择目标部门(树形)和职务
- 前端:选择部门后自动过滤该部门下的职务
- 前端:按钮文案从"调部门"改为"调动"
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 15:00:38 +08:00
selfrelease
e8470e7bb4
fix: 组织架构页面无数据 - 响应拦截器已剥离一层data,无需再取r.data.data
...
api.ts 响应拦截器 (response) => response.data 已剥离 axios response,
OrgChart 中 api.get().then(r => r.data.data) 多取了一层导致返回 undefined。
改为 .then(r => r.data) 即可正确获取部门/岗位数组。
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 14:52:24 +08:00
selfrelease
55f89d384b
ux: 花名册操作图标按钮分两行显示
...
第一行:调薪、转正、调部门
第二行:开具证明、续签合同、离职
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 14:47:48 +08:00
selfrelease
4486adc957
ux: 花名册操作优化 - 去掉发薪、开具证明/续签合同直接操作、删除用工办理页面
...
- 去掉花名册操作栏的"发薪"按钮
- 开具证明改为弹窗直接创建+提交,不再跳转用工办理页面
- 续签合同改为弹窗直接创建+提交,自动推导新合同开始日期
- 批量开具证明改为直接API调用,不再跳转用工办理页面
- 删除用工办理页面(WorkProcess.tsx)和路由
- 去掉工具栏"用工办理"按钮
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 14:41:37 +08:00
selfrelease
e1b5ae9aab
feat: 20260815 系统优化 - 全部31项问题修复(P0×6+P1×14+P2×9+P3×2)
...
P0紧急修复(6项):
- 草稿保存完整恢复所有字段(含socialAvgWage)
- 补偿金批次从compensationBreakdown读取
- 违法解除风险确认UI
- 合同结束日期前后校验(前后端双保险)
P1高优先级(14项):
- 离职日期联动社保/公积金截止月(15号规则)
- 合规检查+工作交接改为软阻断(生成待办)
- 补偿月数(N/N+1/2N/自定义)+计算基数(近12月/合同/自定义)
- 解聘并入花名册操作栏(类型选择跳转向导)
- 合同续签开始日期自动推导(原合同结束日+1天)
- 年龄合规筛查(童工阻断/未成年工/退休警告)
- 编辑入职日期后状态联动(待入职↔在职)
- 转正移植到花名册操作栏+薪资回写
- 男职工无法选择三期
P2体验优化(9项):
- "劳动合同"调整为"用工关系"
- 费用结算新增剩余年假折算(300%日工资)
- 身份证号全域改为"证件号码"(前后端18个文件)
- 手机号查重
- 开具证明+合同续签移植到花名册操作栏
- 批量转正+批量开具证明
- 去掉用工办理模块
P3规划(2项):
- 组织架构+审批流(Department/Position/ApprovalFlow/ApprovalInstance)
- 客服工作台(Ticket/ChatSession+SUPPORT角色)
新增模型: Department/Position/ApprovalFlow/ApprovalInstance/Ticket/TicketMessage/ChatSession/ChatMessage
新增字段: Employee.departmentId/supervisorId
新增角色: SUPPORT
Generated with [Devin](https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-15 12:37:27 +08:00
freedakgmail
8cfdd566af
docs: 更新使用帮助近期更新,添加8月11日16项优化说明
2026-08-11 22:02:20 +08:00
freedakgmail
86e5526a83
fix: 优化文档16项问题修复
...
- 问题1/3: 绩效考核/培训记录员工姓名可点击跳转员工详情页
- 问题2: 离职证明模板支持自定义+员工端下载
- 问题4(P0): 修复工资填写后数据归零问题
- 问题5: 社保添加员工参保信息列表
- 问题6(P0): 商业保险支持为员工参保
- 问题7(P0): 员工福利支持为员工添加福利
- 问题8: 规章制度支持导入Word文档
- 问题9: 文本模板下载Word增加HTML格式
- 问题10: 模板下载变量替换修复(排除token参数)
- 问题11(P0): 电子签署发起时员工下拉框有选项
- 问题12: 新增绩效记录添加考评人选项
- 问题13: 违纪记录添加处罚执行细节
- 问题14: 特殊员工列表添加查看详情按钮和姓名链接
- 问题15: 员工福利汇总正确显示参保人员
- 问题16(P0): 证据链验证修复(递归排序key+自动修复历史哈希)
2026-08-11 22:02:19 +08:00
selfrelease
b682178549
fix: 用工办理必填项校验(前后端)+ 20260811优化验证文档
2026-08-11 17:15:51 +08:00
freedakgmail
de7f1830a7
docs: 更新使用帮助近期更新为28项优化说明
2026-08-09 12:04:30 +08:00
freedakgmail
a2e9ba55c2
feat: 20260809 系统优化 - 全部28项问题修复(P0×6+P1×16+P2×6)
...
P0: 福利批量参保/离职证明下载防乱码/考勤模板合并Sheet/补卡修改/附件在线查看删除
P1: 分页pageSize修复/离职导出筛选/撤回删除草稿/加班费自动计算/考勤加班汇总/证据链异常详情/制度催办/模板导入Word/社保封顶保底/校验字段提示/职务字段/社保费用明细/弹窗防误关/身份证查重/证明员工下拉/培训批量
P2: 离职流程去重/社保基数覆盖输入/薪税入口改名/添加员工引导/绩效模板清理
2026-08-09 11:59:02 +08:00
freedakgmail
c355a7d208
feat: 20260805 系统优化 - 身份证复制fallback/薪税日期筛选/社保版本修复/证据链导出/违纪证明/医疗期政策/绩效类型评级/合同作废/帮助更新
2026-08-05 20:26:16 +08:00