0df8aa77d9
- 员工花名册管理(加密存储、导入导出) - 薪酬管理(发薪批次、薪酬模版、加班费计算、工资条) - 社保公积金(多城市配置、版本管理、基数调整) - 解聘管理(6步流程、证据链、工作交接) - AI 助手(合同审查、风险预测、RAG 知识库) - Dashboard 仪表盘 - 设置与通知
112 lines
5.1 KiB
Markdown
112 lines
5.1 KiB
Markdown
# 劳动用工合规助手 — 待实现功能清单
|
||
|
||
> **文档编号**: 20260723-优化-2.md
|
||
> **日期**: 2026-07-23
|
||
> **来源**: 对照 `0-req.md` 需求规格说明书完整扫描后得出
|
||
|
||
---
|
||
|
||
## 一、部分实现(需完善)
|
||
|
||
### 1. AI 流式输出
|
||
- **现状**: `ai.service.ts` 使用同步 `chat.completions.create`,一次性返回完整回复
|
||
- **需求**: DashScope SSE 流式返回,前端打字机效果
|
||
- **涉及文件**: `backend/src/services/ai.service.ts`、`backend/src/routes/ai.routes.ts`、`frontend/src/pages/AIAssistant.tsx`
|
||
- **方案**: 后端改用 `stream: true` + SSE 响应;前端用 `EventSource` 或 `fetch + ReadableStream` 逐字渲染
|
||
|
||
### 2. RAG 知识库
|
||
- **现状**: 未实现向量数据库集成
|
||
- **需求**: 劳动法/劳动合同法/司法解释/地方条例向量化存储,Supabase pgvector + DashScope text-embedding-v2
|
||
- **涉及文件**: 新建 `backend/src/services/rag.service.ts`、schema 新增向量表
|
||
- **方案**: 文档分块 → DashScope embedding → 存入 pgvector → 问答时向量检索 → 注入 context
|
||
|
||
### 3. AI 使用限制
|
||
- **现状**: 未实现套餐次数限制
|
||
- **需求**: free 10次问答/3次审查/3次案例;pro 100/20/20;enterprise 无限
|
||
- **涉及文件**: `backend/src/routes/ai.routes.ts`、`backend/src/services/ai.service.ts`
|
||
- **方案**: 每次调用前查询当月已用次数(按 orgId + 类型),超限返回 403
|
||
|
||
### 4. 顶部导航风险角标
|
||
- **现状**: `TopNav.tsx:44` 有角标代码但 `hidden` 固定不显示
|
||
- **需求**: 红色角标显示待处理风险总数,点击跳转首页
|
||
- **涉及文件**: `frontend/src/components/layout/TopNav.tsx`
|
||
- **方案**: 查询 pending 风险数量,动态显示角标数字
|
||
|
||
### 5. 审计日志写入
|
||
- **现状**: `AuditLog` 模型存在于 schema,但无实际写入代码
|
||
- **需求**: 关键操作(解聘/合同变更/工资调整)记录审计日志
|
||
- **涉及文件**: `backend/src/services/contract.service.ts`、`termination.service.ts`、`roster.routes.ts` 等
|
||
- **方案**: 在关键操作后 `prisma.auditLog.create({ orgId, userId, action, target, detail, ipAddress })`
|
||
|
||
### 6. 数据导出
|
||
- **现状**: 仅社保月度有 CSV 导出
|
||
- **需求**: 支持导出全部数据为 JSON/Excel
|
||
- **涉及文件**: 新建 `backend/src/routes/export.routes.ts`、前端设置页增加导出按钮
|
||
- **方案**: 后端打包全量数据为 Excel(exceljs),前端下载
|
||
|
||
### 7. 二维码生成
|
||
- **现状**: 入职填报/合同确认有 token 链接,但无前端二维码图片
|
||
- **需求**: HR 端生成二维码图片,可保存通过微信发给员工
|
||
- **涉及文件**: `frontend/src/pages/Contracts.tsx` 或 `Roster.tsx`
|
||
- **方案**: 前端引入 `qrcode.react`,生成二维码图片,支持下载
|
||
|
||
### 8. 批量续签
|
||
- **现状**: 需确认花名册列表是否有全选→批量续签功能
|
||
- **需求**: 合同列表支持全选 → 批量续签
|
||
- **涉及文件**: `frontend/src/pages/Roster.tsx`
|
||
- **方案**: 列表增加 checkbox 全选,批量调用续签 API
|
||
|
||
---
|
||
|
||
## 二、未实现(需新建)
|
||
|
||
### 9. 忘记密码 — 手机验证码重置
|
||
- **现状**: `/forgot-password` 路由存在,但功能不完整
|
||
- **需求**: 手机号 + 验证码 → 设置新密码
|
||
- **涉及文件**: `frontend/src/pages/auth/ForgotPassword.tsx`、`backend/src/routes/auth.routes.ts`
|
||
- **方案**: 复用 portal 的验证码逻辑,验证后允许重置密码
|
||
|
||
### 10. AI 顾问语音输入(移动端)
|
||
- **现状**: 未实现
|
||
- **需求**: 移动端支持语音输入问题
|
||
- **涉及文件**: `frontend/src/pages/AIAssistant.tsx`
|
||
- **方案**: 使用 Web Speech API `SpeechRecognition`,语音转文字后发送
|
||
|
||
### 11. 解聘记录 PDF 导出
|
||
- **现状**: 未实现
|
||
- **需求**: 支持导出单条解聘记录为 PDF
|
||
- **涉及文件**: `frontend/src/pages/Termination.tsx`
|
||
- **方案**: 前端使用 `jspdf` + `html2canvas` 生成 PDF,或后端用 `puppeteer` 生成
|
||
|
||
### 12. 登录接口速率限制
|
||
- **现状**: 未实现
|
||
- **需求**: 登录接口限流 5次/分钟,防止暴力破解;密码错误5次锁定30分钟
|
||
- **涉及文件**: `backend/src/routes/auth.routes.ts`、`backend/src/routes/portal.routes.ts`
|
||
- **方案**: 使用 `express-rate-limit` 中间件,或基于 Map 的简易限流
|
||
|
||
### 13. 套餐人数上限校验
|
||
- **现状**: 未实现
|
||
- **需求**: free 限20人,pro 限200人,enterprise 无限制;添加员工时校验
|
||
- **涉及文件**: `backend/src/services/contract.service.ts`(createEmployee)
|
||
- **方案**: 创建员工前查询当前员工数 + 套餐上限,超限返回 403
|
||
|
||
---
|
||
|
||
## 三、优先级排序
|
||
|
||
| 优先级 | 编号 | 功能 | 工作量 |
|
||
|--------|------|------|--------|
|
||
| P0 | 4 | 顶部导航风险角标 | 小 |
|
||
| P0 | 12 | 登录接口速率限制 | 小 |
|
||
| P0 | 13 | 套餐人数上限校验 | 小 |
|
||
| P1 | 5 | 审计日志写入 | 中 |
|
||
| P1 | 1 | AI 流式输出 | 中 |
|
||
| P1 | 9 | 忘记密码重置 | 中 |
|
||
| P1 | 7 | 二维码生成 | 小 |
|
||
| P2 | 3 | AI 使用限制 | 中 |
|
||
| P2 | 8 | 批量续签 | 中 |
|
||
| P2 | 6 | 数据导出 | 中 |
|
||
| P3 | 2 | RAG 知识库 | 大 |
|
||
| P3 | 11 | 解聘记录 PDF 导出 | 中 |
|
||
| P3 | 10 | AI 语音输入 | 小 |
|