diff --git a/20260815-用户测试指南.md b/20260815-用户测试指南.md new file mode 100644 index 0000000..6718064 --- /dev/null +++ b/20260815-用户测试指南.md @@ -0,0 +1,1029 @@ +# 20260815 优化批次 · 用户测试指南 + +> 面向测试人员的功能验证手册。覆盖 5 个批次共 43 项任务的完整测试用例。 +> 测试环境:https://on.hr8ai.top/ +> 测试账号:管理员 `13800000010 / 12345678` +> 文档版本:2026-08-16 + +--- + +## 目录 + +- [测试前准备](#测试前准备) +- [第一批 P0 紧急(6 项)](#第一批-p0-紧急6-项) +- [第二批 P1 高(14 项)](#第二批-p1-高14-项) +- [第三批 P2 中(9 项)](#第三批-p2-中9-项) +- [第四批 P3 规划(2 项)](#第四批-p3-规划2-项) +- [第五批 电子签署(12 项)](#第五批-电子签署12-项) +- [测试结果记录模板](#测试结果记录模板) + +--- + +## 测试前准备 + +### 账号与权限 + +| 角色 | 账号 | 用途 | +|------|------|------| +| 管理员 | `13800000010 / 12345678` | 全部管理端功能测试 | +| 员工 | 通过管理员生成自动登录令牌 | 员工端签署功能测试 | + +### 测试数据准备 + +1. **测试员工**:刘大壮(男,技术部,在职,月薪 ¥8500,有劳动合同) +2. **女员工**:李娜(女,技术部,在职)— 用于三期测试 +3. **试用期员工**:需在花名册中确认有 `probationInfo.isProbation === true` 的员工 +4. **合同即将到期员工**:合同结束日期距今 ≤ 30 天的员工 + +### 通用测试步骤 + +1. 登录管理端:访问 https://on.hr8ai.top/ ,使用管理员账号登录 +2. 每个测试用例完成后,记录实际结果(通过/失败/有偏差) +3. 发现问题时截图保存,记录复现步骤 + +--- + +## 第一批 P0 紧急(6 项) + +### TASK-001 · 草稿保存完整性 + +**前置条件**:花名册中有在职员工 + +**测试步骤**: + +1. 进入「离职管理」→ 点击「新建解聘」(或从花名册操作栏点击「离职」→ 选择非主动离职类型) +2. 选择员工,填写至 step 3(补偿金) +3. 在补偿金区域手动调整任一分项金额 +4. 切换到 step 4(工作交接),在交接清单的「备注」列填写文字(如"测试备注001") +5. 点击「保存草稿」 +6. 退出向导,回到离职管理列表,点击该草稿重新进入 +7. 检查 step 3 的补偿金调整记录和 step 4 的交接备注是否完整保留 + +**预期结果**: +- ✅ 补偿金手动调整记录完整回读 +- ✅ 工作交接清单的备注文字完整回读 +- ✅ 合规检查的覆盖原因(如有填写)完整回读 + +--- + +### TASK-002 · 手动调整补偿金分项后合计同步 + +**前置条件**:已进入解聘向导 step 3 + +**测试步骤**: + +1. 查看系统预估补偿金(如 ¥50000) +2. 手动调整 severance(经济补偿金)从 ¥50000 改为 ¥45000 +3. 观察「合计应付」是否实时更新为 ¥45000 +4. 点击「保存草稿」→ 重新进入 → 检查合计是否仍为 ¥45000 +5. 进入确认步骤,检查是否显示"系统预估 ¥X + 手动调整 ¥Y = 实际补偿 ¥Z" + +**预期结果**: +- ✅ 调整分项后「合计应付」实时刷新 +- ✅ 保存后回读合计值正确 +- ✅ 确认页显示系统预估 + 手动调整 = 实际补偿 + +--- + +### TASK-003 · 解聘驳回后修改内容更新 + +**前置条件**:已创建解聘草稿 + +**测试步骤**: + +1. 创建解聘草稿(协商解除,补偿金 ¥50000) +2. 提交审批 +3. 由管理员在审批列表中驳回该草稿 +4. 回到草稿列表,点击该驳回草稿重新编辑 +5. 修改解聘类型为「过错解除」,补偿金改为 ¥0 +6. 保存 → 重新进入检查 + +**预期结果**: +- ✅ 驳回后可重新编辑(不是新建) +- ✅ 修改的解聘类型和补偿金正确覆盖 +- ✅ 旧版本留有快照可查看 + +--- + +### TASK-004 · 违法解除降低补偿金风险提醒 + +**前置条件**:已进入解聘向导 step 3 + +**测试步骤**: + +1. 选择解聘类型为「违法解除」 +2. 查看法定 2N 金额(如 ¥100000) +3. 手动将实际补偿金改为 ¥80000(低于 2N) +4. 观察是否弹出合规风险提醒 +5. 不勾选「已知风险并继续」→ 尝试下一步 → 应被阻断 +6. 勾选「已知风险并继续」→ 可进入下一步 +7. 进入 Dashboard 或风险中心,检查是否生成风险项 + +**预期结果**: +- ✅ 实际补偿金 < 2N 时强制弹出风险提醒 +- ✅ 必须勾选「已知风险并继续」才能下一步 +- ✅ Dashboard/风险中心出现对应风险项 + +--- + +### TASK-005 · 合同结束日期早于开始日期校验 + +**前置条件**:无 + +**测试步骤**: + +1. **前端校验**: + - 进入「批量流程」(原用工办理)→ 选择「签订合同」 + - 选择员工,填写合同开始日期 `2026-06-01`,结束日期 `2026-05-31` + - 点击提交 → 应被阻断并提示"合同结束日期不能早于合同开始日期" + +2. **续签校验**: + - 选择「合同续签」→ 选择员工 + - 填写新合同开始日期 `2026-06-01`,结束日期 `2026-05-31` + - 提交 → 应被阻断 + +3. **正常日期**: + - 开始日期 `2026-06-01`,结束日期 `2026-12-31` → 应通过 + +**预期结果**: +- ✅ 倒置日期被前端阻断并提示 +- ✅ 正常日期可提交 + +--- + +### TASK-006 · 补偿金批次数据源 + +**前置条件**:有已审批通过的离职记录且含补偿金 + +**测试步骤**: + +1. 进入「薪税管理」→ 批次管理 +2. 创建新批次,类型选择「补偿金」(SEVERANCE) +3. 选择月份 → 查看预览页 +4. 检查预览中每位员工的补偿金明细(补偿金/代通知金/赔偿金/合计) +5. 确认创建批次 +6. 检查批次数据是否与离职草稿的补偿金一致 + +**预期结果**: +- ✅ 预览页展示补偿金明细 +- ✅ 数据来源为离职草稿的 `compensationBreakdown.grandTotal`(非工资数据) +- ✅ 仅包含已审批通过且有补偿金的离职员工 + +--- + +## 第二批 P1 高(14 项) + +### TASK-007 · 离职日期联动社保/公积金截止月 + +**前置条件**:系统设置中 `socialInsCutoffDay` 默认为 15 + +**测试步骤**: + +1. 创建离职草稿,离职日期填写 `2026-08-10`(10 日 < 15 日) +2. 检查社保截止月是否自动填为 `2026-07` +3. 检查公积金截止月是否自动填为 `2026-07` +4. 修改离职日期为 `2026-08-20`(20 日 > 15 日) +5. 检查社保截止月是否自动变为 `2026-08` +6. 手动修改社保截止月 → 应提示"与自动推导不一致" + +**预期结果**: +- ✅ 15 日前离职 → 截止月 = 离职月 - 1 +- ✅ 15 日后离职 → 截止月 = 离职月 +- ✅ 手动覆盖时有提示 + +--- + +### TASK-008 · 合规检查软阻断 + 待办 + +**前置条件**:已进入解聘向导 step 2(合规检查) + +**测试步骤**: + +1. 在合规检查步骤,不勾选「已支付经济补偿金」 +2. 点击下一步 → 应可进入(不硬阻断) +3. 完成解聘草稿保存 +4. 进入 Dashboard → 检查是否出现待办"XX 解聘未支付经济补偿金" +5. 检查法定禁止情形(如孕期女职工)是否仍硬阻断 + +**预期结果**: +- ✅ 未勾选 required 项可下一步(软阻断) +- ✅ Dashboard 出现对应待办 +- ✅ 法定禁止情形仍硬阻断 + +--- + +### TASK-009 · 补偿月数支持 N / N+1 / 2N / 其他 + +**前置条件**:已进入解聘向导 step 3 + +**测试步骤**: + +1. 查看系统默认推荐月数 N(如 N=3) +2. 将补偿月数下拉改为「N+1」→ 月数变为 4 → 补偿金实时重算 +3. 改为「2N」→ 月数变为 6 → 补偿金重算 +4. 改为「其他」→ 输入 5 + 填写说明 → 补偿金重算 +5. 保存草稿 → 重新进入 → 检查月数模式是否保留 + +**预期结果**: +- ✅ 下拉支持 N / N+1 / 2N / 其他 +- ✅ 切换后补偿金实时重算 +- ✅ 「其他」需填写说明 +- ✅ 保存后月数模式可回读 + +--- + +### TASK-010 · 计算基数支持多种来源 + +**前置条件**:已进入解聘向导 step 3 + +**测试步骤**: + +1. 默认计算基数为「近 12 月平均工资」(如 ¥10000) +2. 切换为「合同工资」(如 ¥8000)→ 补偿金实时重算 +3. 切换为「其他」→ 手动输入 ¥12000 + 说明 → 重算 +4. 检查近 12 月平均工资是否显示三倍社平封顶后的值 +5. 保存草稿 → 重新进入 → 检查基数来源是否保留 + +**预期结果**: +- ✅ 下拉支持 3 种来源 +- ✅ 切换后补偿金实时重算 +- ✅ 基数来源可回读 + +--- + +### TASK-011 · 工作交接软阻断 + 待办 + +**前置条件**:已进入解聘向导 step 4(工作交接) + +**测试步骤**: + +1. 不勾选「工作交接完成」「设备归还」「权限收回」三项 +2. 点击下一步 → 应可进入(不硬阻断) +3. 检查确认页是否提示"3 项未完成" +4. 保存草稿 → 进入 Dashboard → 检查是否出现待办 + +**预期结果**: +- ✅ 未完成交接可下一步(软阻断) +- ✅ 确认页强提示未完成项 +- ✅ Dashboard 出现待办 + +--- + +### TASK-012 · 花名册操作栏离职入口 + +**前置条件**:花名册中有在职员工 + +**测试步骤**: + +1. 进入「花名册」 +2. 点击某员工操作栏的「离职」按钮 +3. 检查是否弹出解聘类型选择(协商/过错/非过错/裁员/到期/违法/主动离职) +4. 选择「协商解除」→ 应跳转解聘向导,员工和类型已预填 +5. 选择「主动离职」→ 应走快速离职流程 +6. 进入「离职管理」列表页 → 检查是否已移除「新建解聘」按钮 + +**预期结果**: +- ✅ 操作栏「离职」按钮弹出类型选择 +- ✅ 非主动离职跳转向导并预填 +- ✅ 主动离职走快速流程 +- ✅ 列表页无「新建解聘」按钮 + +--- + +### TASK-013 · 合同续签开始日期自动推导 + +**前置条件**:员工有已签合同且结束日期明确 + +**测试步骤**: + +1. 进入「批量流程」→ 选择「合同续签」 +2. 选择员工(如刘大壮,合同结束日期 2025-02-27) +3. 检查新合同开始日期是否自动填为 `2025-02-28`(结束日期 + 1 天) +4. 手动修改开始日期 → 应提示"建议开始日期为 YYYY-MM-DD" + +**预期结果**: +- ✅ 新合同开始日期默认 = 上一份合同结束日期 + 1 天 +- ✅ 偏离时有提示 +- ✅ 无历史合同时默认为今天 + +--- + +### TASK-014 · 添加员工年龄合规筛查 + +**前置条件**:无 + +**测试步骤**: + +1. 进入「花名册」→ 点击「添加员工」 +2. 输入身份证号 `110105201501011234`(出生 2015-01-01,11 岁) +3. 检查是否阻断提示"禁止使用童工(未满 16 周岁)" +4. 输入身份证号 `110105196501011234`(出生 1965-01-01,61 岁男) +5. 检查是否提示"已达法定退休年龄" → 确认后可继续录入 + +**预期结果**: +- ✅ 童工(< 16 岁)阻断保存 +- ✅ 退休年龄提示但允许确认后录入 + +--- + +### TASK-015 · 编辑入职日期后状态联动 + +**前置条件**:花名册中有在职员工 + +**测试步骤**: + +1. 进入花名册 → 点击某在职员工查看详情 +2. 编辑入职日期改为下月 1 日(未来日期) +3. 检查是否弹出确认窗"入职日期变更将导致状态从 在职 变为 待入职,是否继续?" +4. 确认 → 状态应变为「待入职」 +5. 再次编辑入职日期改为今天 +6. 检查是否弹窗确认 → 确认后状态变为「在职」 + +**预期结果**: +- ✅ 入职日期 > 今天 → 状态变「待入职」+ 二次确认 +- ✅ 入职日期 ≤ 今天 → 状态变「在职」+ 二次确认 + +--- + +### TASK-016 · 花名册操作栏转正按钮 + +**前置条件**:花名册中有试用期员工 + +**测试步骤**: + +1. 进入花名册 +2. 找到试用期员工(状态标注试用期) +3. 检查操作栏是否显示「转正」按钮(CheckCircle 图标) +4. 非试用期员工不应显示转正按钮 +5. 点击「转正」→ 弹出转正 Modal +6. 填写转正日期 + 转正薪资 → 确认 +7. 检查员工状态是否变为正式 + +**预期结果**: +- ✅ 仅试用期员工显示转正按钮 +- ✅ 转正 Modal 含日期和薪资 +- ✅ 转正后状态变为正式 + +--- + +### TASK-017 · 转正薪资回写 + 合同一致性校验 + +**前置条件**:试用期员工有合同记录 + +**测试步骤**: + +1. 试用期薪资 ¥8000 的员工,转正填写 ¥10000 +2. 确认转正 +3. 回到花名册 → 检查员工薪资是否更新为 ¥10000 +4. 查看薪资变更记录是否显示"试用期 ¥8000 → 转正 ¥10000" +5. 如合同薪资为 ¥9000 → 检查是否提示"转正薪资 ¥10000 与合同薪资 ¥9000 不一致,是否发起合同变更?" + +**预期结果**: +- ✅ 转正后员工薪资同步更新 +- ✅ 薪资变更记录可查 +- ✅ 与合同薪资不一致时提示 + +--- + +### TASK-018 · 合同变更/续签按员工过滤合同列表 + +**前置条件**:员工有已签合同 + +**测试步骤**: + +1. 进入「批量流程」→ 选择「合同变更」 +2. 选择员工 A → 点击原合同下拉 +3. 检查下拉是否仅显示员工 A 的合同(非全部合同) +4. 下拉项应显示合同名称 + 起止日期 + 状态 +5. 选择「合同续签」→ 选择员工 A → 原合同下拉同样仅显示员工 A 的合同 + +**预期结果**: +- ✅ 合同下拉按员工过滤 +- ✅ 不再需要手动输入 UUID +- ✅ 下拉显示完整合同信息 + +--- + +### TASK-019 · 男职工无法选择三期 + +**前置条件**:花名册中有男职工和女职工 + +**测试步骤**: + +1. 进入「特殊状态」→ 点击新增 +2. 选择男职工(如刘大壮) +3. 检查类型下拉中「三期」选项是否置灰或移除 +4. 置灰时应提示"三期仅适用于女性员工" +5. 选择女职工(如李娜)→ 「三期」选项应可选 +6. 尝试通过 API 直接传男职工 + PREGNANCY → 应返回 400 + +**预期结果**: +- ✅ 男职工不可选三期 +- ✅ 女职工可选三期 +- ✅ 后端有双保险校验 + +--- + +## 第三批 P2 中(9 项) + +### TASK-020 · "劳动合同"调整为"用工关系" + +**测试步骤**: + +1. 全域检查面向用户的菜单、标题、提示文案 +2. 侧边栏、花名册、合同页面中"劳动合同"应改为"用工关系"或"用工协议" +3. 法律文书模板中的"劳动合同"保持不变(法定术语) +4. 进入合同详情 → 检查是否有「合同分类」字段(劳动合同/劳务协议/实习协议/灵活用工) + +**预期结果**: +- ✅ 面向用户文案已替换 +- ✅ 法律模板保持不变 +- ✅ 合同分类字段存在 + +--- + +### TASK-021 · 费用结算新增剩余年假天数 + +**前置条件**:已进入解聘向导 step 3 + +**测试步骤**: + +1. 在费用结算区找到「剩余年假天数」字段 +2. 输入 5 天 +3. 检查是否自动计算未休年假折算工资 +4. 公式:日工资 = 月工资 / 21.75,折算 = 日工资 × 天数 × 300% +5. 如月工资 ¥10000 → 日工资 ¥460 → 折算 ¥6900 +6. 检查折算金额是否计入「合计应付」 +7. 确认页和文书中是否展示年假折算明细 + +**预期结果**: +- ✅ 年假天数可录入 +- ✅ 按 300% 规则折算 +- ✅ 计入合计应付 +- ✅ 确认页展示明细 + +--- + +### TASK-022 · 身份证号全域改为"证件号码" + +**测试步骤**: + +1. 全域搜索面向用户的 label "身份证号" +2. 花名册添加/编辑员工、批量流程、特殊状态等页面 → label 应为"证件号码" +3. 检查是否有证件类型下拉(身份证/护照/港澳台通行证/其他) +4. 选择「身份证」→ 输入 18 位号码 → 保留校验 + 自动推导性别/年龄 +5. 选择「护照」→ 输入非 18 位号码 → 应跳过 18 位校验 +6. 搜索框 placeholder 应同步更新 + +**预期结果**: +- ✅ 全域 label 改为"证件号码" +- ✅ 证件类型下拉可用 +- ✅ 非身份证类型跳过 18 位校验 + +--- + +### TASK-023 · 录入手机号查重 + +**前置条件**:花名册中已有员工手机号 + +**测试步骤**: + +1. 进入花名册 → 添加员工 +2. 输入已存在的手机号(如某员工的手机号) +3. 检查是否提示"该手机号已用于 XX 人员" +4. 允许继续保存(一人多号场景) +5. 输入不存在的手机号 → 无提示 +6. 输入格式错误的手机号(非 11 位)→ 格式校验提示 + +**预期结果**: +- ✅ 已存在手机号有提示 +- ✅ 允许继续保存 +- ✅ 格式校验生效 + +--- + +### TASK-024 · 花名册操作栏开具证明 + +**前置条件**:花名册中有在职员工 + +**测试步骤**: + +1. 进入花名册 +2. 点击某员工操作栏的「证明」按钮(FileText 图标) +3. 检查是否弹出证明类型选择(收入证明/离职证明/在职证明) +4. 选择「收入证明」→ 填写信息 → 生成 +5. 检查是否支持下载/打印 + +**预期结果**: +- ✅ 操作栏有「证明」按钮 +- ✅ 弹出类型选择 +- ✅ 生成后可下载 + +--- + +### TASK-025 · 花名册操作栏合同续签 + +**前置条件**:有合同即将到期(≤ 30 天)或已到期的员工 + +**测试步骤**: + +1. 进入花名册 +2. 找到合同即将到期的员工 +3. 检查操作栏是否显示「续签」按钮 +4. 合同未到期的员工不应显示续签按钮 +5. 点击「续签」→ 应跳转续签流程,员工已预填 +6. 检查新合同开始日期是否自动推导 + +**预期结果**: +- ✅ 仅即将到期/已到期员工显示续签按钮 +- ✅ 点击后员工已预填 +- ✅ 开始日期自动推导 + +--- + +### TASK-026 · 花名册多选批量转正 + +**前置条件**:花名册中有至少 2 名试用期员工 + +**测试步骤**: + +1. 进入花名册 → 勾选多名试用期员工 +2. 检查批量操作栏是否出现「批量转正」按钮 +3. 点击「批量转正」→ 弹窗填写统一转正日期 + 转正薪资 +4. 确认 → 检查所有选中员工状态是否均变为正式 +5. 混选试用期 + 非试用期员工 → 批量转正仅对试用期员工生效 + +**预期结果**: +- ✅ 多选后显示批量转正按钮 +- ✅ 统一填写日期和薪资 +- ✅ 仅试用期员工生效 + +--- + +### TASK-027 · 花名册多选批量开具证明 + +**前置条件**:花名册中有多名员工 + +**测试步骤**: + +1. 进入花名册 → 勾选多名员工 +2. 检查批量操作栏是否出现「批量开具证明」按钮 +3. 点击 → 选择证明类型(在职/收入/离职) +4. 确认 → 批量生成 +5. 检查生成数量是否与选中人数一致 +6. 检查是否支持批量下载或逐个下载 + +**预期结果**: +- ✅ 多选后显示批量证明按钮 +- ✅ 选择类型后批量生成 +- ✅ 生成数量正确 + +--- + +### TASK-028 · 去掉用工办理菜单 + +**测试步骤**: + +1. 查看左侧侧边栏 → 应无「用工办理」菜单项 +2. 确认各流程入口已下沉到花名册操作栏: + - 转正 → 操作栏「转正」按钮 + - 续签 → 操作栏「续签」按钮 + - 变更 → 操作栏或合同页面 + - 证明 → 操作栏「证明」按钮 + - 入职 → 花名册「添加员工」 +3. 直接访问 `/work-process` 路由 → 页面仍可访问(不丢数据) +4. 面包屑显示「批量流程」而非「用工办理」 + +**预期结果**: +- ✅ 侧边栏无「用工办理」 +- ✅ 所有流程入口已下沉 +- ✅ WorkProcess 页面仍可访问 +- ✅ 面包屑文案已更新 + +--- + +## 第四批 P3 规划(2 项) + +### TASK-029 · 组织架构 + 审批流 + +**前置条件**:管理员权限 + +**测试步骤**: + +1. **部门管理**: + - 进入「系统设置」→「组织架构」 + - 创建部门"技术部" → 创建子部门"前端组" + - 编辑部门名称 → 删除无关联员工的部门 + +2. **岗位管理**: + - 在组织架构中创建岗位"前端工程师",归属"技术部" + - 填写编制人数、职级 + - 编辑/删除岗位 + +3. **员工关联**: + - 花名册编辑员工 → 关联部门和岗位 + - 设置直属上级 + +4. **审批流配置**: + - 配置休假审批流:步骤1 直属上级 → 步骤2 部门负责人 + - 配置离职审批流:步骤1 HR 审批 + +5. **审批流执行**: + - 提交休假申请 → 直属上级审批 → 部门负责人审批 → 通过 + +**预期结果**: +- ✅ 部门树形管理可用 +- ✅ 岗位字典可增删改查 +- ✅ 员工可关联部门/岗位/上级 +- ✅ 审批流可配置最多 3 步 +- ✅ 现有流程可接入审批流 + +--- + +### TASK-030 · 客服工作台 + +**前置条件**:需有客服角色账号(SUPPORT) + +**测试步骤**: + +1. **客服登录**: + - 访问客服独立登录页 → 使用客服账号登录 + - 检查独立侧边栏(非管理端侧边栏) + +2. **工单管理**: + - 查看工单列表 → 创建工单 → 回复工单 → 关闭工单 + - 转派工单给其他客服 + +3. **客户会话**: + - 查看会话列表 → 发送消息 → 未读消息提醒 + +4. **租户数据穿透**: + - 选择租户 → 以只读模式查看该租户花名册/合同/薪税/风险 + - 检查请求头是否带 `X-Support-Tenant-Id` + +5. **协助操作**: + - 代客户重置密码 + - 代客户发起流程 + +6. **AI 辅助**: + - 客服侧 AI 问答 → 检查会话隔离 + +7. **操作日志**: + - 查看客服操作日志 → 检查留痕审计 + +**预期结果**: +- ✅ 客服独立登录和侧边栏 +- ✅ 工单完整生命周期 +- ✅ 租户数据穿透只读 +- ✅ AI 会话隔离 +- ✅ 操作留痕 + +--- + +## 第五批 电子签署(12 项) + +### TASK-031 · 发起签署 + 模板自动渲染 + +**前置条件**:管理端登录 + +**测试步骤**: + +1. 进入「电子签署」页面 +2. 点击「发起签署」 +3. 选择员工(如刘大壮) +4. 选择场景「劳动合同」 +5. 检查文件标题是否自动填充 +6. 提交创建 +7. 在列表中找到该记录 → 点击查看详情 +8. 检查文件内容是否已从模板自动渲染 +9. 检查初始状态是否为「待签署」(PENDING) +10. 检查签署方式是否为「电子签署」(ELECTRONIC) + +**预期结果**: +- ✅ 发起签署时校验组织开关 +- ✅ 文件内容自动从模板渲染 +- ✅ 创建时自动生成证据链(发起签署事件) +- ✅ 状态为 PENDING,签署方式为 ELECTRONIC + +--- + +### TASK-032 · 员工端验证码签署 + +**前置条件**:管理端已发起签署,员工有待签文件 + +**测试步骤**: + +1. 获取员工端自动登录令牌(管理端生成) +2. 员工端登录 → 进入「我的签署」 +3. 查看待签文件列表 +4. 点击某条待签记录 → 查看文件内容 +5. 点击「获取验证码」 +6. 开发模式下验证码直接显示(如 326292) +7. 输入验证码 → 点击「确认签署」 +8. 检查签署状态是否变为「已完成」(COMPLETED) +9. 输入错误验证码 → 应被拒绝 +10. 连续 5 次错误 → 应限制签署 + +**预期结果**: +- ✅ 验证码发送成功 +- ✅ 正确验证码签署成功 +- ✅ 错误验证码被拒绝 +- ✅ 5 次错误后限制 +- ✅ 60 秒限流 + +--- + +### TASK-033 · 签署全流程证据链 + +**前置条件**:完成 TASK-031 和 TASK-032 的完整签署流程 + +**测试步骤**: + +1. 管理端进入签署记录详情页 +2. 查看证据链时间线 +3. 检查事件数量和类型: + - 事件 1:发起签署(创建时) + - 事件 2:验证码发送(员工端获取验证码时) + - 事件 3:签署完成(含 IP/UA/时间戳/验证码/签署人) +4. 取消一条签署 → 检查证据链是否追加「取消签署」事件 +5. 检查每个事件是否包含时间戳、IP、操作人 +6. 检查证据链是否包含 hash 值用于完整性校验 + +**预期结果**: +- ✅ 完整签署流程证据链有 3 个事件 +- ✅ 取消签署追加第 4 个事件 +- ✅ 每个事件含时间戳/IP/操作人 +- ✅ hash 值存在 + +--- + +### TASK-034 · 签署完成回写合同 + +**前置条件**:签署记录关联了合同 ID + +**测试步骤**: + +1. 管理端发起劳动合同签署(关联员工合同) +2. 员工端完成验证码签署 +3. 回到管理端 → 进入花名册 → 查看该员工合同 +4. 检查合同 `signMethod` 是否变为 `ELECTRONIC` +5. 检查合同 `attachmentName` 是否包含证据摘要(IP/UA/时间戳) + +**预期结果**: +- ✅ 签署完成后合同 signMethod 回写为 ELECTRONIC +- ✅ attachmentName 包含证据摘要 + +--- + +### TASK-035 · 组织电子签开关校验 + +**前置条件**:系统设置中电子签开关默认关闭 + +**测试步骤**: + +1. 发起签署,场景选择「规章制度」(POLICY) +2. 组织未开启 `esignPolicyEnabled` → 应返回错误"组织未开启规章制度电子签功能" +3. 发起签署,场景选择「工资条」(PAYSLIP) +4. 组织未开启 `esignPayslipEnabled` → 应返回错误 +5. 发起签署,场景选择「劳动合同」(CONTRACT) +6. CONTRACT 场景不受开关限制 → 应通过 +7. 进入系统设置 → 开启 `esignPolicyEnabled` → 再发起 POLICY 签署 → 应通过 + +**预期结果**: +- ✅ POLICY/PAYSLIP/ONBOARDING 场景受开关限制 +- ✅ CONTRACT/RESIGNATION 场景不受限制 +- ✅ 未开启时返回明确错误提示 + +--- + +### TASK-036 · scene 关联模板自动填充 + 过期处理 + +**测试步骤**: + +1. 发起签署 → 选择场景「劳动合同」→ 检查文件标题是否自动填充 +2. 选择场景「离职协议」→ 检查文件标题自动填充 +3. 创建一条 PENDING 签署记录 → 修改数据库 `expiresAt` 为过去时间 +4. 刷新列表 → 检查该记录是否自动标记为「已过期」(EXPIRED) + +**预期结果**: +- ✅ 场景选择后自动填充默认标题 +- ✅ 过期 PENDING 自动标记为 EXPIRED +- ✅ 过期时间默认 30 天 + +--- + +### TASK-037 · 管理端发起签署 UI + +**测试步骤**: + +1. 进入「电子签署」页面 +2. 检查发起签署表单是否包含: + - 场景选择(5 种:劳动合同/离职协议/规章制度/工资条/入职文件) + - 员工选择 + - 文件标题(场景选择后自动填充) +3. 创建签署记录 → 点击查看详情 +4. 检查详情页是否包含: + - 文件内容预览 + - 证据链时间线 + - 签署流程说明(6 步流程图) +5. 检查列表页是否有「签署方式」列 + +**预期结果**: +- ✅ 5 种场景可选 +- ✅ 场景选择后标题自动填充 +- ✅ 详情页含文件预览和证据链 +- ✅ 列表含签署方式列 + +--- + +### TASK-038 · 员工端签署 UI + +**前置条件**:员工端有待签文件 + +**测试步骤**: + +1. 员工端登录 → 进入「我的签署」 +2. 检查待签文件列表 +3. 点击某条记录 → 检查文件内容预览 +4. 点击「获取验证码」→ 检查 60 秒倒计时 +5. 输入验证码 → 确认签署 +6. 检查签署完成状态展示 +7. 检查线下手签记录是否只读展示(含扫描件链接) + +**预期结果**: +- ✅ 验证码签署流程完整 +- ✅ 60 秒倒计时限制 +- ✅ 文件内容可预览 +- ✅ 线下手签记录只读展示 + +--- + +### TASK-039 · 线下手签完整流程 + +**前置条件**:管理端登录 + +**测试步骤**: + +1. 进入「电子签署」页面 +2. 点击「线下手签登记」 +3. 选择员工 +4. 填写签署日期、签署地点、见证人姓名、见证人电话 +5. 上传扫描件(PDF/图片) +6. 提交登记 +7. 检查记录状态是否直接为「已完成」(COMPLETED) +8. 检查签署方式是否为「线下手签」(PAPER) +9. 查看证据链 → 检查是否记录线下手签事件 +10. 员工端登录 → 检查线下手签记录是否可见且含扫描件链接 + +**预期结果**: +- ✅ 线下手签登记表单完整 +- ✅ 登记后状态为 COMPLETED,方式为 PAPER +- ✅ 证据链记录 +- ✅ 员工端可查看扫描件 + +--- + +### TASK-040 · 花名册操作自动创建电子签署 + +**前置条件**:花名册中有在职员工 + +**测试步骤**: + +1. **主动离职**: + - 花名册点击员工「离职」→ 选择「主动离职」 + - 完成离职草稿创建 + - 进入「电子签署」→ 检查是否自动创建「离职协议」签署记录 + - 员工端登录 → 检查是否可见该签署记录 + +2. **公司解聘执行**: + - 创建解聘草稿 → 审批通过 → 执行解聘 + - 检查是否自动创建离职协议签署记录 + +**预期结果**: +- ✅ 主动离职自动创建离职协议签署 +- ✅ 公司解聘执行后自动创建 +- ✅ 员工端可见自动创建的签署记录 +- ✅ 自动创建失败不阻断主流程 + +--- + +### TASK-041 · 通用签署方式选择弹窗 + 花名册 4 项联动 + +**前置条件**:花名册中有可操作的员工 + +**测试步骤**: + +1. **重新入职**: + - 花名册找到已离职员工 → 操作「重新入职」 + - 操作成功后 → 检查是否弹出签署方式选择(电子签/线下手签/稍后处理) + - 选择「电子签」→ 检查是否自动创建劳动合同签署记录 + - 选择「线下手签」→ 检查是否跳转签署页面且信息已预填 + - 选择「稍后处理」→ 跳过 + +2. **合同续签**: + - 花名册合同即将到期员工 → 操作「续签」 + - 操作成功后 → 弹窗选择签署方式 + - scene 应为 CONTRACT,文件标题为续签劳动合同 + +3. **薪酬变更**: + - 花名册员工 → 操作「薪酬变更」 + - 操作成功后 → 弹窗选择签署方式 + - scene 应为 POLICY,文件标题为薪酬调整确认书 + +4. **调岗调动**: + - 花名册员工 → 操作「调岗调动」 + - 操作成功后 → 弹窗选择签署方式 + - scene 应为 POLICY,文件标题为调岗确认书 + +5. **ESign 页面 URL 参数**: + - 选择「线下手签」后跳转 ESign 页面 + - 检查 URL 是否包含预填参数 + - 检查线下手签 Modal 是否自动打开且信息已预填 + +**预期结果**: +- ✅ 4 项操作成功后均弹出签署方式选择 +- ✅ 三种选择(电子签/线下手签/稍后处理)均可正确处理 +- ✅ ESign 页面支持 URL 参数自动打开线下手签登记 + +--- + +### TASK-042 · 转正弹窗显示原薪资 + 薪资变化联动签署 + +**前置条件**:花名册中有试用期员工 + +**测试步骤**: + +1. **薪资有变化**: + - 试用期员工(薪资 ¥8000)→ 点击「转正」 + - 检查转正 Modal 是否显示原薪资(¥8000) + - 检查转正薪资字段是否默认填入 ¥8000 + - 修改转正薪资为 ¥10000 + - 检查是否提示"将发起薪酬调整确认书签署" + - 确认转正 → 操作成功后弹出签署方式选择 + - 检查签署文件标题是否为"转正薪酬调整确认书" + - 检查备注是否记录"¥8000 → ¥10000" + +2. **薪资无变化**: + - 试用期员工(薪资 ¥8000)→ 点击「转正」 + - 不修改转正薪资(保持 ¥8000) + - 确认转正 → 仅显示"转正已提交",不弹窗 + +**预期结果**: +- ✅ 转正 Modal 显示原薪资 +- ✅ 转正薪资默认填入原薪资 +- ✅ 薪资变化时提示将发起签署 +- ✅ 薪资有变化时弹窗选择签署方式 +- ✅ 薪资未变化时不弹窗 +- ✅ 签署文件标题和备注正确 + +--- + +## 测试结果记录模板 + +### 按任务记录 + +| 任务编号 | 任务名称 | 测试结果 | 实际情况说明 | 测试人 | 测试日期 | +|---------|---------|---------|-------------|-------|---------| +| TASK-001 | 草稿保存完整性 | ✅ 通过 / ❌ 失败 | | | | +| TASK-002 | 补偿金合计同步 | ✅ 通过 / ❌ 失败 | | | | +| ... | ... | ... | | | | + +### 问题反馈模板 + +``` +问题编号:BUG-001 +对应任务:TASK-XXX +问题描述:(详细描述) +复现步骤: +1. ... +2. ... +3. ... +预期结果:... +实际结果:... +截图:(附截图) +严重程度:阻断 / 主要 / 次要 / 建议 +测试人: +测试日期: +``` + +### 测试汇总 + +| 批次 | 任务数 | 通过 | 失败 | 有偏差 | 通过率 | +|------|--------|------|------|--------|--------| +| P0 紧急 | 6 | | | | | +| P1 高 | 14 | | | | | +| P2 中 | 9 | | | | | +| P3 规划 | 2 | | | | | +| 电子签署 | 12 | | | | | +| **合计** | **43** | | | | | + +--- + +## 注意事项 + +1. **测试顺序**:建议按批次顺序测试,因部分任务有依赖关系(如 TASK-002 依赖 TASK-001) +2. **数据清理**:测试完成后请清理测试数据,避免影响生产环境 +3. **电子签署验证码**:开发模式下验证码直接返回,生产环境需对接短信服务商 +4. **线下手签扫描件**:测试上传的扫描件存储在服务器 `uploads/paper-sign/` 目录 +5. **历史脏数据**:部分历史数据可能存在倒置日期、男职工三期等问题,属预期内 +6. **法律效力提示**:当前电子签署证据链(IP/UA/时间戳/验证码)为初步举证材料,完整法律效力需配合第三方 CA 机构