9.7 KiB
劳动用工合规 SaaS — 功能层面优化清单(续三)
文档编号: 20260723-优化-6.md 日期: 2026-07-23 来源: 对 Portal 相关页面、AI 服务、RAG 服务深入研究后得出
一、高优先级(核心业务缺陷)
1. Portal — 工资条确认后无反馈机制
现状: 员工点击「确认已阅」后只更新 confirmedAt,没有通知 HR 已确认。如果 HR 期望所有员工都确认后才能完成工资条审核流程,当前系统无法感知确认状态。
建议:
- 工资条确认后通过 WebSocket 或轮询通知 HR
- 在 Money 页面展示各员工的工资条确认状态(已确认 / 未确认)
- 未确认员工超过 N 人时,HR 收到系统通知
- 员工确认后记录 IP 地址(已有),用于审计
涉及文件: frontend/src/pages/Money.tsx、backend/src/routes/portal.routes.ts、frontend/src/pages/portal/Payslip.tsx
2. AI — 会话上下文无企业数据关联
现状: buildOrgContext 只返回员工姓名、部门、入职日期和合同类型的摘要,过于粗略。HR 在问「我们公司有几个试用期还没签合同的员工」时,AI 无法基于这些数据准确回答。
建议:
- 增强
buildOrgContext的数据粒度:增加合同状态、即将到期天数、特殊状态(孕期/工伤)等 - 将
riskItem的详细描述也传入,而非只传标题 - 考虑将员工数据以结构化 JSON 传入,而非纯文本,便于 AI 理解
涉及文件: backend/src/routes/ai.routes.ts
3. Portal — 合同签署确认无电子签名
现状: 员工点击「确认签署」后只更新 status = 'CONFIRMED',没有电子签名或意愿确认机制。法律上电子合同需要可靠的电子签名(CA 证书或人脸识别),当前实现不具备法律效力。
建议:
- 增加短信验证码二次确认:员工点击确认后,发送验证码到手机,输入后完成签署
- 或对接第三方电子签名服务(如 e签宝、法大大)
- 签署完成后生成带有时间戳的签署记录 PDF
- 签署记录存储签名证据(IP、设备信息、地理位置),用于后续举证
涉及文件: backend/src/routes/portal.routes.ts、frontend/src/pages/portal/ContractConfirm.tsx
4. AI — 用量限制校验逻辑有误
现状: checkUsageLimit 函数用 prisma.auditLog 的 detail 字段(JSON 序列化后的字符串)做 count,但 JSON.stringify({ month }) 的结果与数据库中 recordUsage 时写入的 detail 字段格式可能不匹配(后者是对象直接存储)。查询条件无法正确匹配,导致限制失效。
建议:
- 统一
auditLog.detail字段的存储格式,要么都用 JSON 字符串,要么都用对象 - 或者用独立的
aiUsage表记录 AI 使用次数,按月统计更准确 checkUsageLimit应在请求前调用,而非请求后(避免超限后才报错)
涉及文件: backend/src/routes/ai.routes.ts
二、中优先级(高频操作体验)
5. Portal — 入职填报无文件上传
现状: onboardingSchema 定义了身份证照片、银行流水等字段,但实际表单只提交文本数据,没有文件上传功能。员工入职时仍需线下提交证件复印件。
建议:
- 增加文件上传功能(身份证正反面、学历证明、体检报告等)
- 文件上传到 OSS/S3,返回 URL 后存入
formData - 支持员工端在「我的合同」页面查看已上传的入职材料
- HR 在 Roster 页面可查看员工上传的入职材料
涉及文件: backend/src/routes/portal.routes.ts、frontend/src/pages/portal/Onboarding.tsx
6. AI — RAG 知识库无增量更新机制
现状: seedKnowledgeBase 初始化知识库后,没有提供增量更新接口。劳动法律法规更新后,系统无法自动同步新法规。addKnowledge 接口存在但没有在前端暴露入口。
建议:
- 增加「知识库管理」页面,HR 可手动添加/编辑法规条文
- 增加法规有效期字段,过期法规自动失效
- 对接权威劳动法数据库(如北大法宝)的增量更新接口(可选)
- 知识库更新后触发向量重索引
涉及文件: backend/src/routes/ai.routes.ts、backend/src/services/rag.service.ts
7. Portal — 工资条只能看当前月
现状: 员工只能通过月份选择器切换查看历史月份,但无法快速看到工资历史趋势。当员工想对比近半年收入变化时,只能逐月切换。
建议:
- 在工资条页面增加「工资趋势」图表(近 6 个月应发金额折线图)
- 增加「收入明细导出」功能,员工可下载自己的历史工资条
- 增加「电子工资条存档」功能,每年自动生成 PDF 年度收入证明(用于贷款、签证等场景)
涉及文件: frontend/src/pages/portal/Payslip.tsx、backend/src/routes/portal.routes.ts
8. AI — 对话流异常时 token 不回收
现状: /chat-stream 在流式响应中途发生错误时,recordUsage 可能不会被调用(因为它在 res.end() 之后才调用),导致用户使用了 AI 但次数未记录。
建议:
- 将
recordUsage移到请求处理开始前,用try/finally确保无论成功失败都记录 - 或者使用中间件在响应完成后统一记录
- 增加
aiUsage独立表,用事务保证计数准确性
涉及文件: backend/src/routes/ai.routes.ts
三、低优先级(功能补全)
9. Portal — 验证码登录安全性不足
现状: codeStore 使用内存 Map 存储验证码,重启服务器后失效,且在多实例部署时无法共享。5 分钟过期时间也较长,存在被暴力破解风险。
建议:
- 生产环境使用 Redis 存储验证码,支持多实例共享和自动过期
- 增加验证码错误次数限制(5 次错误后锁定 15 分钟)
- 验证码增加图形验证码或行为验证码(如滑动拼图)防止机器攻击
- 增加登录失败日志记录
涉及文件: backend/src/routes/portal.routes.ts
10. AI — 合同审查结果无结构化存储
现状: reviewContract 返回纯文本审查结果,用户无法按风险类型检索,也无法统计一段时间内的合同合规趋势。
建议:
- 将审查结果结构化存储(风险项、条款位置、严重程度、建议)
- 增加
contractReviewHistory表,记录每次审查的时间、内容摘要 - 前端展示审查结果时,按风险等级分类展示,支持按条款搜索
涉及文件: backend/src/routes/ai.routes.ts、backend/prisma/schema.prisma
11. Portal — 入职链接无撤回机制
现状: HR 生成入职填报链接后无法撤回。如果员工已经收到链接但临时不入职,链接过期前仍然有效,可能被误用。
建议:
- 增加「撤销链接」功能,HR 可将已发送的链接置为无效
- 链接撤销后员工访问时提示「该链接已失效,请联系 HR」
- 链接状态增加「已发送」「已使用」「已过期」「已撤销」四种状态
涉及文件: backend/src/routes/employee.routes.ts、backend/prisma/schema.prisma
12. AI — 对话未设置超时机制
现状: AI 服务调用(特别是 qwen-max 模型)可能响应很慢,前端没有超时处理。当 AI 服务不可用时,用户只能等待 30 秒才看到错误。
建议:
- 后端设置请求超时(如 30 秒),超时时返回友好的错误提示
- 前端增加加载状态超时提示(如 15 秒无响应时显示「AI 服务响应较慢」)
- 增加 AI 服务健康检查接口,前端可在发送请求前检查服务状态
涉及文件: backend/src/services/ai.service.ts、frontend/src/pages/AIAssistant.tsx
13. Portal — 合同确认链接无重发功能
现状: 员工收到合同确认邮件/短信后,如果链接过期或未收到,只能让 HR 重新生成一次。员工端没有「重新发送确认链接」的功能。
建议:
- 在员工登录 Portal 后,如果存在待确认合同,显示「合同待确认」提示
- 增加「重新发送确认链接」按钮,员工可自行触发重发
- 链接重发记录需要 HR 审批或系统自动发送(根据企业配置)
涉及文件: frontend/src/pages/portal/MyContract.tsx、backend/src/routes/employee.routes.ts
14. AI — 案例匹配结果无后续操作
现状: matchCase 返回的案例分析和建议是纯文本展示,用户无法基于建议快速创建相应的待办事项或调整员工状态。
建议:
- 解析案例匹配结果中的「建议」部分,生成可执行的待办事项列表
- 支持用户点击「采纳建议」后,系统自动创建对应操作(如「与员工协商续签」待办)
- 案例匹配结果存入
AICaseMatch表,便于后续审计和分析
涉及文件: backend/src/routes/ai.routes.ts、frontend/src/pages/AIAssistant.tsx、backend/prisma/schema.prisma
四、优先级总览
| 优先级 | 编号 | 功能 | 工作量 |
|---|---|---|---|
| P0 | 1 | 工资条确认通知 HR | 中 |
| P0 | 2 | AI 会话上下文数据增强 | 小 |
| P0 | 3 | 合同签署电子签名 | 大 |
| P0 | 4 | AI 用量限制校验修复 | 小 |
| P1 | 5 | 入职材料文件上传 | 中 |
| P1 | 6 | RAG 知识库管理界面 | 中 |
| P1 | 7 | 工资趋势图表+导出 | 中 |
| P1 | 8 | AI 用量记录事务保证 | 小 |
| P2 | 9 | 验证码登录安全加固 | 中 |
| P2 | 10 | 合同审查结构化存储 | 中 |
| P2 | 11 | 入职链接撤回功能 | 小 |
| P2 | 12 | AI 服务超时机制 | 小 |
| P2 | 13 | 合同确认链接重发 | 小 |
| P2 | 14 | 案例匹配结果转待办 | 中 |