# 企业用工专家 — 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` 对象：含 `isProbation`、`probationMonths`、`probationEndDate`、`daysToConfirmation`、`isExpiringSoon`
- 试用期状态从合同 `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）。*
