Commit Graph

303 Commits

Author SHA1 Message Date
freedakgmail 754dfd3116 fix: 员工端姓名显示处加上身份证号
后端:
- portal.routes.ts: 密码登录/验证码登录/自动登录返回 idCardNumber
- portal.routes.ts: home/overview 返回 employeeIdCardNumber
- portal.routes.ts: 合同确认接口返回 employeeIdCardNumber

前端:
- EmployeeHome.tsx: 首页欢迎卡片显示身份证号
- PortalLayout.tsx: 顶栏姓名后显示身份证号
- Payslip.tsx: 下载文件名加上身份证号
- ContractConfirm.tsx: 合同确认页显示身份证号
2026-08-18 07:52:52 +08:00
freedakgmail 5c016914dd fix: 非列表页面姓名显示处也加上身份证号
后端:
- employee.routes.ts: checkPhone 返回 idCardNumber
- risk.service.ts: 风险项查询加上 idCardNumber 并解密
- dashboard.routes.ts: 风险中心返回 employeeIdCardNumber

前端:
- Termination.tsx: 离职管理所有姓名显示处加上身份证号(员工概况、通知书、PDF导出、下拉选项)
- Roster.tsx: 弹窗标题加上身份证号,signChoice 传递 idCardNumber
- SignMethodChoice.tsx: 签署方式弹窗显示身份证号
- Contracts.tsx: 手机查重提示加上身份证号
- RiskCenter.tsx: 风险卡片员工姓名后显示身份证号
2026-08-18 07:46:43 +08:00
freedakgmail a58cc3f6f9 fix: 绩效/培训/违纪/工资条/加班/休假/专项扣除/薪酬批次列表姓名下显示完整身份证号
后端:
- roster.routes.ts: 绩效/培训/违纪列表查询加上 idCardNumber 并解密
- payroll.routes.ts: 加班/工资条查询加上 idCardNumber 并解密
- payroll2.routes.ts: 薪酬批次详情加上 idCardNumber 并解密
- leave.routes.ts: 休假审批列表加上 idCardNumber 并解密
- social.routes.ts: 专项附加扣除查询加上 idCardNumber 并解密

前端:
- PerformanceRecords.tsx: 姓名下显示身份证号
- TrainingRecords.tsx: 姓名下显示身份证号
- DisciplinaryRecords.tsx: 姓名下显示身份证号
- PayslipTab.tsx: 姓名下显示身份证号
- OvertimeTab.tsx: 姓名下显示身份证号
- LeaveApproval.tsx: 姓名下显示身份证号
- SpecialDeductionTab.tsx: 姓名下显示身份证号
- BatchTab.tsx: 姓名下显示身份证号
2026-08-18 07:42:24 +08:00
freedakgmail ef03b2e5f8 fix: 全部员工显示改为姓名+完整身份证号,不再脱敏
- 花名册列表显示完整身份证号
- 社保公积金月度办理列表姓名下显示身份证号
- 员工详情页显示完整身份证号
- 商业保险列表显示完整身份证号
- 后端去掉 idCardMasked 脱敏逻辑
2026-08-18 07:33:54 +08:00
freedakgmail 2ab9e87e6f ui: 合计与起止年月列分开,公积金配置显示基数范围 2026-08-18 07:28:38 +08:00
freedakgmail 95b2929768 ui: 公积金配置版本显示基数范围 2026-08-18 07:27:47 +08:00
freedakgmail b8e2ebe5ee ui: 月度办理社保公积金区域改为可折叠卡片,添加统计摘要 2026-08-18 07:25:13 +08:00
freedakgmail 66ae5ff21f fix: 劳务/实习协议员工从根源不创建社保公积金记录
- 创建员工时劳务/实习协议跳过社保公积金记录创建
- 重新入职时同样判断合同类型
- 编辑员工时若最新合同为劳务/实习,强制基数为0并关闭在保记录
- 月度办理列表过滤劳务/实习协议员工
2026-08-18 07:20:58 +08:00
freedakgmail c24cc68cd8 fix: 社保公积金月度办理排除劳务/实习协议员工 2026-08-18 07:15:05 +08:00
freedakgmail 17fafc5a03 docs: 添加用户需求调查问卷 2026-08-17 23:04:46 +08:00
freedakgmail 754ff9c12e docs: 添加系统功能介绍文档 2026-08-17 22:26:54 +08:00
freedakgmail 3ed22668f1 ui: 公积金参数也改为分组卡片式布局 2026-08-17 22:04:41 +08:00
freedakgmail 5e4b0b3fa9 ui: 社保参数改为分组卡片式布局,更清晰专业 2026-08-17 22:01:03 +08:00
freedakgmail f9ed465c09 ui: 最低工资保存按钮横置紧凑显示 2026-08-17 21:52:04 +08:00
freedakgmail 0f11dbb8c4 ui: 合并最低工资标准显示和编辑,去掉重复的只读行 2026-08-17 21:49:51 +08:00
freedakgmail 9e54a34dd6 feat: 社保/公积金缴纳截止日改为按账户配置
- SocialAccount 模型增加 paymentDay 字段
- detectMonthlyTasks 社保/公积金改为按账户 paymentDay 生成提醒
- 账户表单增加缴纳截止日输入
- 设置页面移除社保/公积金缴纳日,保留发薪日和个税日
2026-08-17 21:42:17 +08:00
freedakgmail 743c7616da fix: 移除工作台风险分布饼图区域,简化页面布局 2026-08-17 21:32:51 +08:00
freedakgmail cdb8bdbd38 fix: 移除三期/医疗期/工伤员工主动推送解聘受限风险
这些是被动合规检查,在 termination.service.ts 解聘流程中已实现
不应作为主动风险推送到工作台
2026-08-17 21:28:50 +08:00
freedakgmail b2fbfc18c1 fix: 三期风险截止日使用合同实际到期日,不再硬编码today+1天 2026-08-17 21:21:17 +08:00
freedakgmail 2b8a5d6e30 fix: 月度任务截止日使用配置的实际日期,不再用 today+N天 硬编码
detectMonthlyTasks 生成风险时设置 deadline 为当月配置的截止日
runRiskDetection 创建记录时优先使用风险自带的 deadline
2026-08-17 21:16:22 +08:00
freedakgmail 802604c9e5 fix: 合同类型显示中文,补充劳务协议/实习/兼职/外包映射 2026-08-17 21:09:14 +08:00
freedakgmail f2cb5e66b2 fix: 退休检测改为按最新合同类型判断,排除劳务协议员工
detectRetirementRisks、updateEmployeesRetirementDays、日历退休日期查询
均改为 include 最新合同并在代码中判断 contractType,而非用 some 查询
(some 会匹配到历史 FIXED 合同导致劳务人员仍被检测)
2026-08-17 21:04:00 +08:00
freedakgmail 0ea069cd57 fix: 退休检测排除劳务协议等非劳动合同类型
detectRetirementRisks 和日历退休日期查询均增加 contracts 过滤,
只检测 FIXED/UNFIXED 正式劳动合同员工,与 updateEmployeesRetirementDays 一致
2026-08-17 21:00:08 +08:00
freedakgmail 04620e19e8 fix: 添加 lossReason 类型定义 2026-08-17 20:58:53 +08:00
freedakgmail 03e9e83483 feat: 待办事项显示损失金额理由
后端 estimateRiskCost 返回 lossReason 字段,说明法律依据和计算方式
前端在损失金额下方显示理由,如'逾期缴纳社保/公积金将产生滞纳金,每日万分之五'
2026-08-17 20:57:45 +08:00
freedakgmail a1a0b22e95 fix: 总分说明移到评分图下方显示 2026-08-17 20:51:19 +08:00
freedakgmail be0a44c251 fix: 日历风险截止事件按 employeeId:type 去重,避免重复提醒 2026-08-17 20:44:31 +08:00
freedakgmail 2407b9cc7b fix: 侧边栏公司名居中排列 2026-08-17 20:33:51 +08:00
freedakgmail a1424a42d6 feat: 待签合同移到首页分组 2026-08-17 20:31:39 +08:00
freedakgmail 152b0b5024 fix: 后端对非劳动合同类型 socialInsBase/housingFundBase 返回 null
不再在数据源头返回社保基数和公积金基数,而非前端隐藏
2026-08-17 20:27:19 +08:00
freedakgmail f242a592bb fix: 花名册社保基数列对非劳动合同类型显示— 2026-08-17 20:26:32 +08:00
freedakgmail 442063fb14 fix: 后端统一非劳动合同类型不缴社保公积金
- payroll.service.ts: isNoSocialContract 补充 PARTTIME/OUTSOURCING/UNSIGNED
- payroll.routes.ts tax-preview: 增加 contract 类型判断,非劳动合同 socialBase/housingBase 强制 0
- roster.routes.ts: 之前已修复
2026-08-17 20:25:11 +08:00
freedakgmail 0c2b9ec5e8 fix: 劳务协议等非劳动合同类型不计算社保公积金
合同类型为 LABOR/INTERNSHIP/PARTTIME/OUTSOURCING/UNSIGNED 时
socialInsCalc 和 housingFundCalc 返回 null
2026-08-17 20:21:30 +08:00
freedakgmail 2154247b23 fix: 花名册副标题不折行 2026-08-17 20:18:09 +08:00
freedakgmail ec89b6b1b7 fix: 花名册入职日期和手机号字号统一为text-xs 2026-08-17 20:16:02 +08:00
freedakgmail 5e03b8b60f fix: 花名册操作按钮缩小(图标 h-3.5 + padding p-1) 2026-08-17 20:13:06 +08:00
freedakgmail 226c4f1444 fix: 花名册状态列在职/试用期分两行显示 2026-08-17 20:10:53 +08:00
freedakgmail 95567c9cc4 fix: 隐藏侧边栏菜单滚动条
- tailwind.config 添加 scrollbar-hide 工具类插件
- SidebarNav nav 元素添加 scrollbar-hide class
2026-08-17 20:02:48 +08:00
freedakgmail eaa7ec5518 feat: 管理端侧边栏底部显示安职通产品名 2026-08-17 19:35:19 +08:00
freedakgmail 79ddd2d358 fix: 删除基本信息中重复的社保公积金明细(硬编码通用比例)
保留薪税信息中按参保城市实际政策计算的社保费用明细
删除社保与公积金明细区块(硬编码8%/16%等通用比例,与薪税信息重复)
2026-08-17 19:31:02 +08:00
freedakgmail 007109e425 feat: 附件管理拆为独立tab + 员工端附件上传
管理端:
- 花名册详情新增「附件资料」独立tab(人事信息分组下)
- 从 BasicInfo 移除附件管理代码到独立 AttachmentsTab 组件
- shared.ts 添加 attachments tab 类型和计数映射

员工端:
- 后端新增 GET/POST/DELETE /portal/attachments 接口
- 前端 api-services 添加 portalDelete + 附件 API 方法
- MyProfile 新增附件资料卡片,支持上传/查看/删除附件
- 附件类型:身份证/银行卡/学历证书/职业资格证书/合同/照片/其他
2026-08-17 19:27:45 +08:00
freedakgmail 7b2f722984 fix: 员工端Header标题显示企业名称而非安职通Logo
- 后端3处登录接口(密码/验证码/auto-login)返回 orgName
- 前端 PortalLayout Header 改为显示 employee.orgName
- 移除 Logo 组件引用
2026-08-17 19:20:38 +08:00
freedakgmail 76a49985f1 fix: 专项附加扣除改为5项明细分类(子女教育、赡养老人、住房、继续教育、婴幼儿照护)
- 后端 GET /profile 返回最新月份的专项附加扣除明细记录
- 后端 PUT /profile 保存明细到 SpecialDeductionRecord 表(当前月份 upsert)
- 前端5项明细输入框 + 合计实时计算 + 备注字段
- 与管理端社保>专项附加扣除 Tab 数据结构一致
2026-08-17 19:16:26 +08:00
freedakgmail 88b0fcdc7d feat: 个人资料补充工号、女性岗位类型、专项附加扣除字段
- 后端 GET /profile 返回 employeeNo/femaleWorkerType/specialDeduction
- 后端 PUT /profile 支持更新 specialDeduction(员工自行填报)
- 前端只读区补充:工号、女性岗位类型(仅女性显示)
- 前端可编辑区补充:专项附加扣除(元/月)
2026-08-17 19:09:28 +08:00
freedakgmail 4eb882b1e2 fix: 创建员工时从身份证解析性别和出生日期
- contract.service.ts createEmployee: gender 为空时从身份证第17位解析,birthDate 从第7-14位提取
- portal.routes.ts GET /profile: gender/birthDate 为空时从身份证 fallback 解析
- gender 统一使用中文 男/女(与数据库和其他服务一致)
- 前端 MyProfile.tsx 性别显示适配中文
2026-08-17 19:04:22 +08:00
freedakgmail a6189d209d fix: 员工端首页快捷入口添加个人资料和我的记录
手机端底部TabBar只有5个固定入口,个人资料通过首页快捷入口访问
2026-08-17 19:00:04 +08:00
freedakgmail c4a929fc8e feat: 员工端新增个人资料页面,数据同步到花名册
- 后端新增 GET/PUT /portal/profile 接口,员工可查看和编辑个人资料
- 员工可编辑:紧急联系人、住址、银行卡、学历、参保城市
- 只读字段:姓名、性别、手机号、证件号码、部门、岗位、入职日期
- 数据直接写入 Employee 表(花名册),HR 管理端可见
- 更新操作记录证据链(PROFILE_UPDATE)
- 前端新增 MyProfile.tsx 页面,PortalNav 添加导航入口
2026-08-17 18:56:42 +08:00
freedakgmail cdbfeb4f99 fix: AI风险预测员工下拉框显示完整身份证号区分同名员工
- 后端 /employees/list 接口返回解密后的完整身份证号
- 前端 AI风险预测通用模式和结构化模式员工下拉框显示 姓名(身份证号)
2026-08-17 18:47:37 +08:00
freedakgmail f2a8f9a97c fix: AI身份证不脱敏+优化员工端登录页UI
- AI读取身份证改为解密明文,不再脱敏,确保生日等信息正确
- 员工端登录页优化:渐变背景、图标输入框、圆角Tab、loading动画、回车登录
2026-08-17 18:40:27 +08:00
freedakgmail c6e2dbf5b7 fix: portal/login死循环 — 登录页和自动登录页移出PortalLayoutWrapper 2026-08-17 18:35:31 +08:00