Files
TurboHR/docs/20260729-优化需求梳理-1.md
freedakgmail 0372cbe243 feat: 完成全部11项优化需求 + 模板必填项标注 + 归档重算个税
- 高优先级: 花名册导入模板必填项标注、性别自动识别、导入结果反馈、证据链Excel导出、身份证搜索修复、试用期区分与转正提醒、薪税批次流程优化
- 中优先级: 专项附加扣除批量导入、文本模板库完善(Word下载/复制/使用说明)、用工体检评分标准说明、考勤页面导入入口
- 所有导入模板表头标注必填项(*后缀)并含示例行
- 导入逻辑统一改用getField兼容*后缀列名
- 批次归档时强制重算所有条目个税和社保,解决多未归档批次并存时累计计算不准问题
- 更新需求梳理文档
2026-07-29 19:08:45 +08:00

13 KiB
Raw Permalink Blame History

企业用工专家 — 20260729 用户反馈优化需求梳理

来源:用户测试反馈 整理日期:2026-07-29 优先级标注:🔴 高 / 🟡 中 / 🟢


需求 1:花名册导入模板优化 🔴

问题描述

  • 导入模板中必填项没有标注,用户不清楚哪些字段必须填写
  • 示例数据放在第一行,删除后看不到格式参考,来回测试麻烦

优化方案

  1. 模板表头添加必填标注:必填字段列名加 * 号或红色标注(如 姓名*身份证号*入职日期*
  2. 示例行使用浅灰色背景并标注「示例数据(导入时请删除本行)」
  3. 或在导入页面展示「字段说明」折叠面板,列出每个字段的必填/选填、格式要求

涉及模块

  • 后端:backend/src/routes/import.routes.ts — 模板生成逻辑
  • 前端:frontend/src/pages/Settings.tsx — 数据导入 Tab

完成方式

  • 模板表头必填字段加 * 号标注(姓名*身份证号*入职日期*月工资*
  • 新增 getField() 工具函数,兼容带 * 后缀列名和模糊匹配
  • 性别列标注「选填,留空自动识别」,导入时从身份证号第 17 位自动提取

需求 2:工资专项附加扣除批量导入 🟡

问题描述

  • 专项附加扣除信息在员工入职时可能尚未采集到
  • 当前只能在薪税管理中逐月手动录入,没有单独的批量导入功能

优化方案

  1. 在「薪税管理 → 专项附加扣除」Tab 新增「批量导入」按钮
  2. 提供专项附加扣除导入模板(员工姓名/身份证号 + 各项扣除金额)
  3. 支持「复制上月」基础上批量修改后导入

涉及模块

  • 前端:frontend/src/pages/Money.tsx — 专项附加扣除 Tab
  • 后端:backend/src/routes/import.routes.ts — 新增导入接口

完成方式

  • 后端新增 GET /import/special-deduction/template 端点,下载专项附加扣除导入模板(含姓名、身份证号、5 项扣除金额列)
  • 后端新增 POST /import/special-deduction 端点,支持 Excel 批量导入并按月 upsert
  • 前端 SocialInsurance.tsx 专项附加扣除 Tab 工具栏新增「批量导入」按钮
  • 导入弹窗包含:模板下载、文件上传、导入结果反馈(成功/跳过/错误明细)
  • 身份证号优先匹配,未填时用姓名匹配

需求 3:导入结果反馈不明确 🔴

问题描述

  • 导入后不显示成功提示,用户不知道是否已导入
  • 显示了行错误但实际数据已导入,导致重复导入

优化方案

  1. 导入完成后弹出结果摘要:成功导入 N 条,失败 M 条,跳过 K 条
  2. 成功时 toast 提示「导入成功,共 N 条记录」
  3. 部分成功时明确提示「部分成功:N 条成功,M 条失败」
  4. 失败行可下载错误日志(已有),但需在页面显示失败汇总

涉及模块

  • 前端:frontend/src/pages/Settings.tsx — 导入结果展示
  • 后端:backend/src/routes/import.routes.ts — 返回导入统计

完成方式

  • 后端返回 skipped(跳过)、duplicates(重复)、details(逐行明细)字段
  • 前端显示分类汇总:成功 N 条、跳过 M 条、重复 K 条
  • 新增「导出错误日志」按钮,下载 Excel 格式的逐行错误明细

需求 4:证据链导出格式优化(TXT → Excel)🔴

问题描述

  • 证据链导出为 TXT 格式,排版混乱,无法直接使用
  • 需要导出后二次加工,体验差

优化方案

  1. 证据链导出改为 Excel(.xlsx)格式
  2. 按证据类型分 Sheet 或分列展示:证据名称、类型、日期、内容摘要、附件链接
  3. 支持导出为 Word 文档(可选),带格式排版

涉及模块

  • 后端:backend/src/routes/export.routes.ts — 证据链导出逻辑
  • 前端:frontend/src/pages/Evidence.tsx — 导出按钮

完成方式

  • 后端新增 GET /:id/evidence-chain/export 端点,使用 ExcelJS 生成 .xlsx 文件
  • Excel 包含 3 个 Sheet:员工信息、证据清单(含合同/工资条/加班/考勤/违纪/培训/绩效/解聘)、风险提醒
  • 前端 EvidenceChain.tsx 导出按钮改为调用新端点下载 Excel

需求 5:花名册身份证后四位搜索不可用 🔴

问题描述

  • 搜索框提示「搜索姓名、部门或身份证后4位」,但用后四位搜索显示无结果

优化方案

  1. 后端搜索逻辑支持身份证号后四位模糊匹配(LIKE '%XXXX'
  2. 前端搜索时自动识别纯数字输入,走身份证后四位匹配逻辑
  3. 测试验证:输入身份证后四位能正确匹配到对应员工

涉及模块

  • 后端:backend/src/routes/roster.routes.ts — 搜索查询逻辑

完成方式

  • 搜索正则改为支持 2+ 位纯数字输入识别为身份证号搜索
  • 后端解密完整身份证号后与搜索词做后缀匹配

需求 6:用工文本模板库功能不明确 🟡

问题描述

  • 用户不清楚文本模板库的使用方式
  • 想另存或下载劳动合同模板,没找到操作入口

优化方案

  1. 模板列表页新增「下载 Word」按钮,可直接下载模板文件
  2. 新增「复制为新模板」按钮,基于现有模板创建副本后编辑
  3. 页面顶部添加使用说明:「选择模板 → 点击使用 →填充变量 → 生成文档 → 下载」
  4. 模板预览支持在线查看完整内容

涉及模块

  • 前端:frontend/src/pages/Templates.tsx
  • 后端:backend/src/routes/template.routes.ts(如有)

完成方式

  • 后端新增 GET /templates/:id/download 端点,返回模板内容为 Word(.doc)文件
  • 前端 Templates.tsx 新增「下载 Word」按钮,可直接下载模板为 .doc 文件
  • 新增「复制为新模板」按钮,将渲染结果复制到剪贴板,可粘贴到 Word 中编辑
  • 页面顶部新增「使用说明」可折叠面板,引导用户完成模板选择→变量填充→渲染→下载流程
  • 模板原文和渲染结果区域均支持下载 Word

需求 7:用工体检诊断评分标准说明 🟡

问题描述

  • 用工体检只显示分数,没有评分标准和满分说明
  • 用户不知道分数含义和计算规则

优化方案

  1. 体检结果页面顶部展示评分说明卡片:
    • 满分 100 分
    • 分数等级:90-100 优秀(绿色)、75-89 良好(蓝色)、60-74 合格(黄色)、<60 风险(红色)
    • 评分维度及权重说明
  2. 每个扣分项展示扣分原因和对应的法规依据
  3. 结果下方展示「改善建议」清单

涉及模块

  • 前端:frontend/src/pages/tools/HealthCheck.tsx

完成方式

  • 前端 HealthCheck.tsx 新增评分标准说明卡片,展示 3 级评分等级:85+ 健康(绿)、60-84 中等风险(黄)、<60 高风险(红)
  • 卡片底部展示 6 维度评分构成说明:合同管理、薪酬社保、考勤加班、规章制度、解聘合规、证据链
  • 每个维度列出具体评分要素(如合同签订率、社保覆盖率等)

需求 8:试用期员工区分与转正提醒 🔴

问题描述

  • 导入员工时无法区分试用期和正式员工
  • 系统没有试用期到期转正提醒

优化方案

  1. 花名册导入模板新增「员工状态」列(试用期/正式),默认试用期
  2. 花名册列表新增「员工状态」列和筛选
  3. 试用期员工显示试用期到期日期,到期前 30/15/7 天自动提醒
  4. 工作日历自动显示试用期到期事件
  5. 总览待办事项中新增「试用期即将到期」提醒

涉及模块

  • 后端:backend/prisma/schema.prisma — Employee 模型新增 status/probationEndDate 字段
  • 后端:backend/src/routes/roster.routes.ts — 导入和查询支持
  • 前端:frontend/src/pages/Roster.tsx — 列表展示和筛选
  • 前端:frontend/src/pages/Dashboard.tsx — 待办提醒

完成方式

  • 后端 roster.routes.ts 返回 probationInfo 对象:含 isProbationprobationMonthsprobationEndDatedaysToConfirmationisExpiringSoon
  • 试用期状态从合同 probationMonths + hireDate 动态计算,无需新增 schema 字段
  • 前端花名册列表试用期员工显示橙色标签(试用期 X 个月 · 剩余 Y 天)
  • 前端状态筛选新增「试用期」选项,发送 ACTIVE 到后端后本地过滤 probationInfo.isProbation

需求 9:考勤页面增加导入入口 🟡

问题描述

  • 考勤数据导入入口在「设置 → 数据导入」中,用户在考勤页面找不到导入功能

优化方案

  1. 在「考勤管理」页面工具栏新增「导入考勤」按钮
  2. 点击后弹出导入弹窗,包含:模板下载 + 文件上传 + 导入结果反馈
  3. 各功能模块的导入入口就近放置(薪税管理也同步处理)

涉及模块

  • 前端:frontend/src/pages/Attendance.tsx — 新增导入按钮和弹窗
  • 后端:backend/src/routes/import.routes.ts — 考勤导入接口

完成方式

  • 前端 Attendance.tsx 考勤确认 Tab 工具栏新增「导入考勤」按钮
  • 点击弹出导入弹窗,包含:模板下载、文件上传、导入结果反馈(考勤记录/加班/员工/合同条数)
  • 复用已有 POST /import/excel 端点,支持考勤记录 Sheet 导入
  • 导入后自动刷新考勤列表和统计数据

需求 10:花名册导入体验优化 🔴

问题描述

  • 模板繁琐,没有标注必填项
  • 性别需要手动填写,但可从身份证号自动识别

优化方案

  1. 同需求 1:模板标注必填项
  2. 性别字段改为选填,后端导入时根据身份证号自动识别性别(身份证第 17 位奇数=男,偶数=女)
  3. 若用户手动填写了性别且与身份证识别不一致,以身份证为准并提示
  4. 导入模板中性别列标注「选填,留空自动识别」

涉及模块

  • 后端:backend/src/routes/import.routes.ts — 导入逻辑
  • 后端:backend/src/services/ — 身份证解析工具函数

完成方式 (与需求 1 合并实现)

  • 模板必填字段加 * 号标注
  • 性别字段改为选填,导入时从身份证号第 17 位自动识别(奇数=男,偶数=女)
  • 若用户未填性别则自动识别,若已填则以用户填写为准

需求 11:薪税发薪批次创建流程优化 🔴

问题描述

  • 上一批次未归档就无法创建新批次,不便于处理多笔发薪
  • 创建发薪只能选全部人员或空白创建后逐个勾选,效率低

优化方案

  1. 允许多个未归档批次并存:移除「上一批次未归档不能创建新批次」的限制
  2. 创建发薪时支持先选人再创建
    • 新增「选择发薪人员」步骤:可按部门筛选、多选员工、搜索勾选
    • 确认人员后点击「创建发薪批次」,仅包含选中员工
  3. 保留「全部人员」快捷选项,同时支持「自定义选择」模式

涉及模块

  • 前端:frontend/src/pages/Money.tsx — 发薪批次创建流程
  • 后端:backend/src/routes/payroll2.routes.ts — 批次创建接口支持指定员工列表
  • 后端:backend/src/services/payroll.service.ts — 批次创建逻辑

完成方式

  • 后端移除「当月存在未归档批次则拒绝创建」的限制,允许多个未归档批次并存
  • createBatchSchema 新增 mode: 'custom'employeeIds: string[] 可选参数
  • 后端新增 custom 模式分支:仅拉入 employeeIds 指定的员工创建批次
  • 前端创建批次弹窗新增「自定义选择员工」选项
  • 新增 CustomEmployeeSelector 组件:支持按部门筛选、姓名搜索、全选/取消全选、勾选指定员工
  • 前端移除创建按钮上的未归档批次拦截逻辑
  • 归档时强制重算:批次归档前遍历所有条目调用 calcBatchEntry 重算个税和社保,确保累计预扣计算包含先前已归档批次的数据,解决多批次并存时累计个税不准的问题
    • calcBatchEntry 内部仍只查询 status: 'ARCHIVED' 的批次做累计计算
    • DRAFT 批次创建时基于已归档历史数据预计算(可能不包含同月其他 DRAFT 批次)
    • 归档时重算确保最终值准确:批次A先归档 → 批次B归档时重算会包含A的累计数据
    • 手动覆盖的社保值通过 overrideSocial 参数保留
    • 重算后更新批次汇总金额,返回重算条目数和错误信息

优先级汇总

优先级 需求编号 需求名称 状态
🔴 1 花名册导入模板标注必填项 已完成
🔴 3 导入结果反馈不明确 已完成
🔴 4 证据链导出改为 Excel 已完成
🔴 5 身份证后四位搜索修复 已完成
🔴 8 试用期员工区分与转正提醒 已完成
🔴 10 导入性别自动识别 已完成
🔴 11 薪税发薪批次流程优化 已完成
🟡 2 专项附加扣除批量导入 已完成
🟡 6 文本模板库功能完善 已完成
🟡 7 用工体检评分标准说明 已完成
🟡 9 考勤页面增加导入入口 已完成

以上需求按用户反馈整理,🔴 高优先级和 🟡 中优先级需求已全部完成(2026-07-29)。