0df8aa77d9
- 员工花名册管理(加密存储、导入导出) - 薪酬管理(发薪批次、薪酬模版、加班费计算、工资条) - 社保公积金(多城市配置、版本管理、基数调整) - 解聘管理(6步流程、证据链、工作交接) - AI 助手(合同审查、风险预测、RAG 知识库) - Dashboard 仪表盘 - 设置与通知
1388 lines
68 KiB
Markdown
1388 lines
68 KiB
Markdown
# 劳动用工合规助手 — 需求规格说明书
|
||
|
||
> **文档编号**: 0-req.md
|
||
> **版本**: v2.0
|
||
> **日期**: 2026-07-23
|
||
> **状态**: 草案
|
||
> **修订**: v2.0 — 面向中小企业优化 UI/UX 与交互逻辑,强调极简易用
|
||
> **修订**: v3.0 — 升级为 SaaS 多租户架构,支持注册登录/多用户/云端存储
|
||
|
||
---
|
||
|
||
## 1. 背景与问题分析
|
||
|
||
### 1.1 劳动仲裁高发领域
|
||
|
||
根据司法大数据及各地仲裁委公开统计,劳动争议仲裁案件集中在以下三大领域,占比超过 **85%**:
|
||
|
||
| 领域 | 典型争议点 | 占比(约) |
|
||
|------|-----------|-----------|
|
||
| **劳动合同签订** | 未签书面合同(双倍工资)、逾期签订、到期未续签、违法约定试用期 | 30% |
|
||
| **工资与加班费** | 拖欠/克扣工资、加班费计算基数错误、未支付加班费、未足额支付 | 35% |
|
||
| **解聘/离职** | 违法解除劳动合同、未支付经济补偿金/赔偿金、程序不合规、未提前通知 | 20% |
|
||
|
||
### 1.2 中小企业特殊痛点
|
||
|
||
- **没有专职 HR**:很多中小企业由老板或行政兼任,完全不懂劳动法
|
||
- **Excel 都嫌麻烦**:现有管理方式靠记忆和纸质文件,连 Excel 都没用好
|
||
- **请不起法律顾问**:遇到问题不知道找谁,也不知道合不合规
|
||
- **系统太复杂学不会**:市面上的 HR 系统功能太多,上手成本高,中小企业用不起来
|
||
- **怕出事但不知道怎么防**:知道劳动仲裁麻烦,但不知道从哪里开始预防
|
||
|
||
### 1.3 系统定位
|
||
|
||
构建一个 **中小企业也能用起来的极简用工合规工具**:
|
||
|
||
1. **像计算器一样简单** — 打开就能用,不需要培训
|
||
2. **像导航一样引导** — 该做什么、怎么做,一步步引导
|
||
3. **像警报器一样提醒** — 有风险自动弹窗,不怕遗漏
|
||
4. **像顾问一样解释** — 每个风险都附上法律依据和操作建议,不用自己查法条
|
||
|
||
---
|
||
|
||
## 2. 目标用户
|
||
|
||
**核心用户**:中小企业老板 / 行政兼 HR / 初级 HR
|
||
|
||
| 用户画像 | 典型场景 |
|
||
|---------|---------|
|
||
| **老板兼管 HR**(10-30人企业) | 偶尔打开看看有没有风险,解聘时算一下补偿金 |
|
||
| **行政兼 HR**(30-80人企业) | 每天花5分钟看看待办,合同到期前续签,每月算加班费 |
|
||
| **初级 HR**(80-200人企业) | 日常合同管理、工资计算、解聘流程走查 |
|
||
|
||
**用户特征假设**:
|
||
- 不懂劳动法,需要系统主动告知合规要求
|
||
- 不愿看长文,偏好"告诉我该做什么"
|
||
- 可能第一次用类似系统,需要新手引导
|
||
- 手机/平板也会用,不能只考虑桌面端
|
||
|
||
---
|
||
|
||
## 3. UI/UX 设计原则
|
||
|
||
### 3.1 核心原则:三看三不用
|
||
|
||
| 原则 | 含义 | 设计要求 |
|
||
|------|------|---------|
|
||
| **看一眼就懂** | 不需要说明书 | 每个页面标题用大白话,不用法律术语 |
|
||
| **看一眼会点** | 知道下一步做什么 | 每个页面有且只有一个主操作按钮(蓝色高亮) |
|
||
| **看一眼放心** | 知道当前状态 | 用红/黄/绿三色信号灯表示风险状态 |
|
||
| **不用记法条** | 系统自动判断合规 | 风险自动检测,附人话版法律解释 |
|
||
| **不用手算** | 系统自动计算 | 输入最少信息,自动算出结果 |
|
||
| **不用怕漏掉** | 系统主动提醒 | 到期/风险自动弹窗 + 角标提醒 |
|
||
|
||
### 3.2 交互设计规范
|
||
|
||
**信息层级 — 渐进式披露**:
|
||
```
|
||
第一眼:看到什么 → 数字 + 信号灯(绿/黄/红)
|
||
第二眼:想知道为什么 → 点击展开风险说明
|
||
第三眼:想知道怎么办 → 展开操作建议 + 法律依据
|
||
```
|
||
|
||
**操作流 — 一屏一焦点**:
|
||
- 每个页面只做一件事,不堆砌功能
|
||
- 主操作按钮固定在视觉焦点位置(右上角或底部居中)
|
||
- 次要操作收起在"更多"菜单中
|
||
- 表单分步填写,一屏不超过 5 个输入项
|
||
|
||
**视觉语言 — 信号灯体系**:
|
||
|
||
| 颜色 | 含义 | 使用场景 |
|
||
|------|------|---------|
|
||
| 🟢 绿色 | 合规/正常 | 合同在签、工资正常、无风险 |
|
||
| 🟡 黄色 | 需关注 | 合同即将到期、加班超时、待处理 |
|
||
| 🔴 红色 | 有风险 | 未签合同、到期未续签、违法解聘 |
|
||
| ⚪ 灰色 | 不适用 | 离职员工、已完成事项 |
|
||
|
||
**文案风格 — 说人话**:
|
||
|
||
| ❌ 法律术语 | ✅ 人话版本 |
|
||
|------------|-----------|
|
||
| 「依据《劳动合同法》第82条」 | 「入职1个月没签合同,员工可以要求双倍工资」 |
|
||
| 「经济补偿金N」 | 「需要赔 X 个月工资,共 ¥XX,XXX」 |
|
||
| 「非过失性解除」 | 「员工没犯错但要辞退」 |
|
||
| 「法定节假日300%」 | 「国庆节加班1天 = 平时3天工资」 |
|
||
|
||
### 3.3 新手引导
|
||
|
||
- **首次打开**:3 步引导弹窗("这里看风险"→"这里管合同"→"这里算钱")
|
||
- **空数据状态**:展示示例截图 + "添加第一个员工"按钮,不让用户面对空白页
|
||
- **关键操作前**:简短提示卡片(如解聘前提示"建议先咨询律师")
|
||
|
||
---
|
||
|
||
## 4. 功能需求
|
||
|
||
### 4.1 模块总览
|
||
|
||
#### 当前版本(v1.0 — 劳动合规基础 + AI 顾问 + 员工参与)
|
||
|
||
**管理端(HR/老板使用)**:
|
||
```
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ 劳动用工合规助手(管理端) │
|
||
├───────────┬──────────┬──────────┬──────────┬────────────┬─────┤
|
||
│ 风险总览 │ 合同管理 │ 钱的计算 │ 解聘助手 │ AI合规顾问 │设置 │
|
||
│ (首页) │ │ │ │ │ │
|
||
│ 红黄绿信号灯│ 员工合同 │ 加班费 │ 补偿金计算│ 智能问答 │企业 │
|
||
│ 待办清单 │ 到期提醒 │ 双倍工资 │ 合规检查 │ 风险预测 │用户 │
|
||
│ 一句话风险 │ 一键续签 │ 经济补偿 │ 流程引导 │ 合同审查 │套餐 │
|
||
│ AI风险预测 │纸质/电子 │ │ │ 案例匹配 │ │
|
||
└───────────┴──────────┴──────────┴──────────┴────────────┴─────┘
|
||
↓ 所有风险汇总到首页 ↓
|
||
```
|
||
|
||
**员工端(员工使用,独立入口)**:
|
||
```
|
||
┌──────────────────────────────────────────────┐
|
||
│ 员工端(手机号验证码登录) │
|
||
├──────────┬──────────┬──────────────────────┤
|
||
│ 工资条 │ 我的合同 │ 入职填报/合同确认 │
|
||
│ │ │ │
|
||
│ 月度工资 │ 合同信息 │ 扫码填报基本信息 │
|
||
│ 加班明细 │ 签订记录 │ 电子合同签署确认 │
|
||
│ 确认已阅 │ 下载查看 │ HR审核后入库 │
|
||
└──────────┴──────────┴──────────────────────┘
|
||
```
|
||
|
||
#### 演进路线图
|
||
|
||
```
|
||
v1.0 (当前) v2.0 (近期) v3.0 (中期)
|
||
┌───────────────────────────┐ ┌────────────────┐ ┌──────────────────┐
|
||
│ 劳动合规基础 + AI + 员工参与 │ ──→ │ + 社保公积金 │ ──→ │ + 人力成本分析 │
|
||
│ 合同/工资/解聘 │ │ 五险一金计算 │ │ 成本报表/趋势 │
|
||
│ AI 问答/风险预测/审查 │ │ 缴费基数/比例 │ │ 部门成本/人均 │
|
||
│ 员工端:工资条/合同/入职填报 │ │ │ │ │
|
||
└───────────────────────────┘ └────────────────┘ └──────────────────┘
|
||
|
||
v4.0 (远期)
|
||
┌────────────────┐
|
||
│ + 员工自助门户 │
|
||
│ 考勤/请假/调薪 │
|
||
│ 在线审批流程 │
|
||
└────────────────┘
|
||
```
|
||
|
||
**精简策略**:
|
||
- v1.0 聚焦劳动仲裁三大高发领域 + AI 合规顾问 + 员工参与,管理端 5 个页面 + 员工端 3 个页面
|
||
- 架构上预留扩展接口,后续模块即插即用,不重构现有代码
|
||
- 每个页面最多 2 层深度,避免复杂导航
|
||
|
||
---
|
||
|
||
### 4.2 首页:风险总览(极简版)
|
||
|
||
**目标**:打开就知道有没有事、该做什么
|
||
|
||
**页面布局**:
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 👋 早上好!今天有 3 件事需要处理 │
|
||
│ │
|
||
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
|
||
│ │ 12 │ │ 🔴 2 │ │ 🟡 3 │ │ ¥8k │ │
|
||
│ │ 员工 │ │ 高风险│ │ 待办 │ │加班费│ │
|
||
│ └──────┘ └──────┘ └──────┘ └──────┘ │
|
||
│ │
|
||
│ 📋 今日待办 │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ 🔴 张三入职35天未签合同 → 去处理 │ │
|
||
│ │ 🟡 李四合同还有20天到期 → 去续签 │ │
|
||
│ │ 🟡 王五上月加班48小时超标 → 查看 │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
│ │
|
||
│ 📊 风险分布 │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ 合同风险 ████████ 5项 │ │
|
||
│ │ 工资风险 ████ 2项 │ │
|
||
│ │ 解聘风险 ██ 1项 │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
**设计要点**:
|
||
- 顶部一句话总结:「今天有 X 件事需要处理」,让用户立刻知道是否有事
|
||
- 4 个数字卡片:员工总数 / 高风险数 / 待办数 / 本月加班费
|
||
- 待办列表:每条一行,红/黄信号灯 + 一句话描述 + 「去处理」按钮
|
||
- 风险分布:用简单进度条代替复杂图表,一眼看出哪类问题多
|
||
- **无风险时**:显示绿色大勾「✅ 暂无风险,继续保持!」
|
||
- **首次使用空状态**:展示「添加第一个员工」引导卡片
|
||
|
||
---
|
||
|
||
### 4.3 合同管理
|
||
|
||
**目标**:不用记日期,不怕忘签,风险自动提醒
|
||
|
||
#### 4.3.1 员工合同列表(极简表格)
|
||
|
||
**列表只显示 5 列**(避免信息过载):
|
||
|
||
| 姓名 | 部门 | 入职日期 | 合同状态 | 操作 |
|
||
|------|------|---------|---------|------|
|
||
| 张三 | 技术部 | 2026-06-18 | 🔴 未签合同(35天) | 签订 / 详情 |
|
||
| 李四 | 销售部 | 2025-08-01 | 🟡 即将到期(20天) | 续签 / 详情 |
|
||
| 王五 | 财务部 | 2024-03-15 | 🟢 正常 | 详情 |
|
||
|
||
- 状态列用信号灯 + 简短文字,一眼看出问题
|
||
- 点击「签订」/「续签」直接弹出表单,不需要进详情页
|
||
- 搜索框 + 部门筛选,支持快速查找
|
||
- **批量操作**:全选 → 批量续签(适合到期合同多的情况)
|
||
|
||
#### 4.3.2 添加/编辑员工(分步表单)
|
||
|
||
**Step 1 — 基本信息(4 项)**:
|
||
```
|
||
姓名 *: [___________]
|
||
部门 *: [下拉选择___]
|
||
入职日期 *:[日期选择器__]
|
||
月工资 *: [___________] 元
|
||
```
|
||
|
||
**Step 2 — 合同信息(5 项,可跳过)**:
|
||
```
|
||
合同类型: ○ 固定期限 ○ 无固定期限 ○ 暂未签订
|
||
签订方式: ○ 纸质合同 ○ 电子合同
|
||
签订日期: [日期选择器__]
|
||
合同期限: [下拉:1年/2年/3年/无固定]
|
||
试用期: [下拉:无/1个月/2个月/3个月/6个月]
|
||
```
|
||
|
||
- 如果选「暂未签订」,系统自动标记为高风险并提醒
|
||
- 试用期下拉自动校验合法性(选了1年合同但选6个月试用期 → 红色提示)
|
||
- **智能默认值**:合同期限默认3年,试用期默认1个月,减少选择成本
|
||
- **必填项最小化**:只有姓名和入职日期是必填,其他都可以后补
|
||
|
||
**签订方式说明**:
|
||
|
||
| 方式 | 说明 | 系统支持 |
|
||
|------|------|---------|
|
||
| **纸质合同** | 打印后双方线下签字盖章 | 记录签订日期 + 可上传扫描件/拍照存档 |
|
||
| **电子合同** | 在线签署电子合同(如通过第三方电子签平台) | 记录签订日期 + 可填写电子合同链接/编号 |
|
||
|
||
- 选择「纸质合同」时,显示「上传扫描件」按钮(可选),支持拍照或选择文件上传
|
||
- 选择「电子合同」时,显示「电子合同编号」输入框(可选)和「合同链接」输入框(可选)
|
||
- 两种方式法律效力等同,系统不强制选择,默认为「纸质合同」
|
||
|
||
#### 4.3.3 合规风险检查规则(后台自动运行)
|
||
|
||
| 规则 | 检查内容 | 信号灯 | 人话提示 |
|
||
|------|---------|--------|---------|
|
||
| C-01 | 入职超1个月未签合同 | 🔴 | 「张三入职35天了还没签合同,要赔双倍工资」 |
|
||
| C-02 | 入职超1年未签合同 | 🔴 | 「超过1年没签合同,法律上等于已签无固定期限合同」 |
|
||
| C-03 | 合同30天内到期 | 🟡 | 「李四合同还有20天到期,该准备续签了」 |
|
||
| C-04 | 合同到期未续签仍用工 | 🔴 | 「合同已到期但还在上班,要赔双倍工资」 |
|
||
| C-05 | 试用期超法定上限 | 🔴 | 「1年期合同试用期最多2个月,当前3个月不合法」 |
|
||
| C-06 | 试用期工资过低 | 🟡 | 「试用期工资不能低于转正工资的80%」 |
|
||
| C-07 | 两次固定期限后应签无固定 | 🔴 | 「已经签了2次固定合同,第3次应签无固定期限」 |
|
||
|
||
#### 4.3.4 一键续签
|
||
|
||
- 合同到期前30天,列表出现「续签」按钮
|
||
- 点击后弹出确认弹窗:
|
||
```
|
||
┌───────────────────────────────┐
|
||
│ 续签李四的劳动合同? │
|
||
│ │
|
||
│ 原合同:2025-08-01 ~ 2026-07-31│
|
||
│ 新合同期限:[3年 ▼] │
|
||
│ 新到期日:2029-07-31 │
|
||
│ 试用期:无 │
|
||
│ 签订方式:○ 纸质合同 ○ 电子合同 │
|
||
│ │
|
||
│ [取消] [确认续签] │
|
||
└───────────────────────────────┘
|
||
```
|
||
- 续签时选择签订方式(纸质/电子),默认沿用上次签订方式
|
||
- 续签后自动更新状态为 🟢 正常,风险消除
|
||
|
||
---
|
||
|
||
### 4.4 钱的计算(Tab 切换,一页搞定)
|
||
|
||
**目标**:输入最少信息,立刻算出该赔多少、该付多少
|
||
|
||
**页面结构**:3 个 Tab,共享一个页面
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ [ 加班费计算 ] [ 双倍工资 ] [ 经济补偿金 ] │
|
||
├─────────────────────────────────────────────┤
|
||
│ │
|
||
│ (当前 Tab 的计算器内容) │
|
||
│ │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
#### 4.4.1 加班费计算器(Tab 1)
|
||
|
||
**界面设计**:左输入右结果,实时计算
|
||
```
|
||
┌──────────────────┬──────────────────────┐
|
||
│ 填写信息 │ 计算结果 │
|
||
│ │ │
|
||
│ 月工资:[8000__] │ 📊 加班费明细 │
|
||
│ 元 │ │
|
||
│ │ 小时工资:¥46.00 │
|
||
│ 工作日加班: │ │
|
||
│ [__10__] 小时 │ 工作日 ¥690 (10h×1.5) │
|
||
│ │ 休息日 ¥736 (8h×2.0) │
|
||
│ 休息日加班: │ 节假日 ¥552 (4h×3.0) │
|
||
│ [__8___] 小时 │ │
|
||
│ │ ─────────────────── │
|
||
│ 节假日加班: │ 💰 合计:¥1,978 │
|
||
│ [__4___] 小时 │ │
|
||
│ │ ⚠️ 月加班22小时, │
|
||
│ [计算] │ 未超36小时上限 ✅ │
|
||
└──────────────────┴──────────────────────┘
|
||
```
|
||
|
||
**交互优化**:
|
||
- 输入数字后**实时计算**,不需要点「计算」按钮
|
||
- 结果区固定在右侧,输入时数字实时跳动更新
|
||
- 超过36小时/月时,结果区显示黄色警告
|
||
- 可选关联员工:选择员工后自动填入月工资
|
||
|
||
**计算规则**(后台自动,用户不需要知道公式):
|
||
```
|
||
小时工资 = 月工资 ÷ 21.75 ÷ 8
|
||
工作日加班费 = 小时工资 × 1.5 × 小时数
|
||
休息日加班费 = 小时工资 × 2.0 × 小时数
|
||
节假日加班费 = 小时工资 × 3.0 × 小时数
|
||
```
|
||
|
||
#### 4.4.2 双倍工资计算器(Tab 2)
|
||
|
||
**界面设计**:
|
||
```
|
||
┌──────────────────┬──────────────────────┐
|
||
│ 填写信息 │ 计算结果 │
|
||
│ │ │
|
||
│ 月工资:[8000__] │ ⚠️ 风险提示 │
|
||
│ 元 │ │
|
||
│ │ 入职日期:2026-06-01 │
|
||
│ 入职日期: │ 合同签订:未签订 │
|
||
│ [2026-06-01] │ │
|
||
│ │ 双倍工资起算: │
|
||
│ 合同签订日期: │ 2026-07-02 │
|
||
│ [未签订 ▼] │ │
|
||
│ 或选择日期 │ 双倍工资截止: │
|
||
│ │ 2027-05-31 │
|
||
│ │ │
|
||
│ │ 💰 需赔:¥88,000 │
|
||
│ │ (11个月 × ¥8,000) │
|
||
│ │ │
|
||
│ │ 📌 法律规定:入职1个月 │
|
||
│ │ 没签合同,从第2个月起 │
|
||
│ │ 要付双倍工资,最多11个月│
|
||
└──────────────────┴──────────────────────┘
|
||
```
|
||
|
||
**交互优化**:
|
||
- 「合同签订日期」默认显示「未签订」,也可选择日期
|
||
- 如果已签订但逾期,自动计算逾期月数的双倍工资
|
||
- 结果区用醒目大字显示金额
|
||
- 底部附「人话版」法律解释
|
||
|
||
#### 4.4.3 经济补偿金计算器(Tab 3)
|
||
|
||
**界面设计**:
|
||
```
|
||
┌──────────────────┬──────────────────────┐
|
||
│ 填写信息 │ 计算结果 │
|
||
│ │ │
|
||
│ 入职日期: │ 📊 补偿金计算 │
|
||
│ [2022-03-01] │ │
|
||
│ │ 工作年限:4年2个月 │
|
||
│ 离职日期: │ → 按4.5个月计算 │
|
||
│ [2026-05-15] │ │
|
||
│ │ 月工资:¥8,000 │
|
||
│ 月平均工资: │ │
|
||
│ [8000___] 元 │ 💰 经济补偿金: │
|
||
│ │ ¥36,000 │
|
||
│ 离职原因: │ (4.5 × 8,000) │
|
||
│ [协商解除 ▼] │ │
|
||
│ │ ⚠️ 如果是违法解除: │
|
||
│ 当地社平工资: │ 赔偿金 = ¥72,000 │
|
||
│ [8000___] 元 │ (补偿金 × 2) │
|
||
│ (选填,用于封顶) │ │
|
||
│ │ 📌 6个月以上算1年, │
|
||
│ │ 不满6个月算半个月 │
|
||
└──────────────────┴──────────────────────┘
|
||
```
|
||
|
||
**交互优化**:
|
||
- 「离职原因」用下拉选择,选项用人话:
|
||
- 「协商解除(双方同意)」
|
||
- 「员工犯错被辞退」
|
||
- 「员工没犯错但干不了」
|
||
- 「公司裁员」
|
||
- 「公司单方面违法辞退」
|
||
- 根据离职原因自动判断是否需要支付补偿金
|
||
- 「当地社平工资」选填,不填则跳过封顶计算
|
||
- 结果同时显示正常补偿金和违法解除赔偿金(×2)
|
||
|
||
#### 4.4.4 工资合规自动检查(后台规则)
|
||
|
||
| 规则 | 检查内容 | 信号灯 | 人话提示 |
|
||
|------|---------|--------|---------|
|
||
| S-01 | 工资低于当地最低工资 | 🔴 | 「工资不能低于当地最低工资标准」 |
|
||
| S-02 | 加班超36小时/月 | 🟡 | 「月加班超过36小时有法律风险」 |
|
||
| S-03 | 试用期工资过低 | 🟡 | 「试用期工资至少是转正工资的80%」 |
|
||
|
||
---
|
||
|
||
### 4.5 解聘助手(向导式流程)
|
||
|
||
**目标**:一步步引导完成合规解聘,不怕漏步骤
|
||
|
||
**设计理念**:不展示复杂清单,而是用**向导式流程**,一次只看一步
|
||
|
||
#### 4.5.1 解聘向导(5 步)
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 解聘助手 ●●○○○ │
|
||
│ ───────────────────────────────────────── │
|
||
│ │
|
||
│ Step 1/5:为什么解聘? │
|
||
│ │
|
||
│ ○ 协商解除(双方同意分开了) │
|
||
│ ○ 员工犯错被辞退(严重违纪/失职等) │
|
||
│ ○ 员工没犯错但干不了(生病/不胜任等) │
|
||
│ ○ 公司裁员(经营困难/技术调整等) │
|
||
│ ○ 合同到期不续签 │
|
||
│ │
|
||
│ 💡 选不同原因,后续步骤和法律要求不同 │
|
||
│ │
|
||
│ [下一步 →] │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
**5 步流程**:
|
||
|
||
| 步骤 | 标题 | 内容 | 交互 |
|
||
|------|------|------|------|
|
||
| Step 1 | 为什么解聘? | 选择解聘原因(用人话选项) | 单选 |
|
||
| Step 2 | 员工信息 | 选择员工 → 自动带入入职日期/工资 → 填写解聘日期 | 下拉 + 日期 |
|
||
| Step 3 | 合规检查 | 根据解聘原因自动展示相关检查项(3-5项) | 逐项勾选 |
|
||
| Step 4 | 算钱 | 自动计算补偿金/代通知金,展示金额 | 自动计算 |
|
||
| Step 5 | 确认完成 | 汇总检查结果 + 金额 + 风险评估 → 保存记录 | 确认按钮 |
|
||
|
||
**关键交互**:
|
||
- 顶部进度条 `●●○○○` 直观显示进度
|
||
- 每步只有 1 个主操作「下一步」
|
||
- Step 3 合规检查根据 Step 1 的选择**动态展示**:
|
||
- 选「协商解除」→ 只检查「是否支付补偿金」「是否签协议」
|
||
- 选「员工犯错」→ 检查「是否有规章制度依据」「是否有证据」「是否通知工会」
|
||
- 选「裁员」→ 检查「是否提前30天说明」「是否听取意见」「是否报劳动部门」
|
||
- 检查项用人话描述,不是法条原文
|
||
- Step 5 如果有未通过检查项,显示红色警告但**不阻止保存**(尊重用户决策)
|
||
|
||
#### 4.5.2 禁止解聘情形检查(自动弹出)
|
||
|
||
在 Step 2 选择员工后,自动检查是否属于**不得解除**情形:
|
||
|
||
| 检查项 | 触发条件 | 提示 |
|
||
|--------|---------|------|
|
||
| 孕期/产期/哺乳期 | 员工标记为女性 + 在孕期/哺乳期 | 🔴 「该员工在孕期,法律禁止解除」 |
|
||
| 工伤期间 | 员工标记为工伤 | 🔴 「工伤期间不得解除劳动合同」 |
|
||
| 医疗期 | 员工在规定的医疗期内 | 🔴 「医疗期内不得解除」 |
|
||
|
||
- 如果触发禁止情形,弹出醒目红色警告框
|
||
- **不阻止继续操作**,但要求用户确认「我已了解风险,继续操作」
|
||
|
||
#### 4.5.3 解聘记录
|
||
|
||
- 完成向导后自动生成解聘记录
|
||
- 记录包含:员工信息、解聘原因、检查结果、补偿金额、操作日期
|
||
- 可在解聘助手页面底部查看历史记录
|
||
- 支持导出单条记录为 PDF(可选)
|
||
|
||
---
|
||
|
||
### 4.6 AI 合规顾问
|
||
|
||
**目标**:像有个法律顾问在身边,随时问、自动查、提前预警
|
||
|
||
**设计理念**:不是冷冰冰的搜索框,而是对话式交互,用户用大白话提问,AI 用大白话回答
|
||
|
||
#### 4.6.1 智能问答
|
||
|
||
**界面设计**:聊天式对话界面
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 🤖 AI 合规顾问 │
|
||
│ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ 🤖 你好!我是你的用工合规顾问, │ │
|
||
│ │ 有什么劳动法问题可以直接问我。 │ │
|
||
│ │ │ │
|
||
│ │ 你可以问我: │ │
|
||
│ │ · 员工入职没签合同怎么办? │ │
|
||
│ │ · 加班费怎么算? │ │
|
||
│ │ · 辞退员工需要赔多少? │ │
|
||
│ └─────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ 👤 试用期最长可以约定几个月? │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ 🤖 根据《劳动合同法》第19条: │ │
|
||
│ │ │ │
|
||
│ │ · 合同期 3个月~1年 → 试用期最多1个月 │ │
|
||
│ │ · 合同期 1年~3年 → 试用期最多2个月 │ │
|
||
│ │ · 合同期 3年以上 → 试用期最多6个月 │ │
|
||
│ │ │ │
|
||
│ │ ⚠️ 你的员工王五:合同2年但试用期3个月│ │
|
||
│ │ 超过法定上限,建议调整为2个月 │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ [输入问题...] [发送] │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
**交互特点**:
|
||
- 聊天式界面,支持多轮对话(上下文记忆)
|
||
- 回答时**关联本企业数据**(如「你的员工王五试用期超限」)
|
||
- 回答附法律依据引用(可折叠查看法条原文)
|
||
- 预设常见问题快捷按钮(「没签合同怎么办」「加班费怎么算」等)
|
||
- 支持语音输入(移动端)
|
||
|
||
#### 4.6.2 风险预测
|
||
|
||
**界面设计**:首页风险总览中的智能分析卡片
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 🔮 AI 风险预测 │
|
||
│ │
|
||
│ ⚠️ 未来30天预计新增 3 个风险: │
|
||
│ │
|
||
│ · 李四合同7月31日到期 → 续签提醒 │
|
||
│ · 张三入职将满1年 → 未签合同风险升级 │
|
||
│ · 上月加班总时长上升40% → 超时风险 │
|
||
│ │
|
||
│ 💡 建议:本周优先处理合同到期和未签问题 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- 基于企业当前数据(合同到期日、入职日期、加班趋势)预测未来风险
|
||
- 每日自动刷新,展示在首页风险总览下方
|
||
- 给出优先级建议(先处理什么)
|
||
|
||
#### 4.6.3 合同审查
|
||
|
||
**功能**:上传合同文本或粘贴条款,AI 审查合法性
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 📄 合同审查 │
|
||
│ │
|
||
│ [粘贴合同条款文本...] │
|
||
│ [或上传合同文件(.txt/.docx)] │
|
||
│ │
|
||
│ [开始审查] │
|
||
│ │
|
||
│ ──────────── 审查结果 ──────────── │
|
||
│ │
|
||
│ 🔴 试用期6个月超过法定上限(合同期2年最多2月)│
|
||
│ 🟡 竞业限制未约定补偿标准 │
|
||
│ 🟡 加班费计算基数未明确约定 │
|
||
│ 🟢 社保缴纳条款符合规定 │
|
||
│ 🟢 工资支付条款符合规定 │
|
||
│ │
|
||
│ 📊 合规评分:72/100 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- 逐条审查合同条款,标注红/黄/绿
|
||
- 给出修改建议(人话版)
|
||
- 合规评分直观展示合同整体合法程度
|
||
|
||
#### 4.6.4 案例匹配
|
||
|
||
**功能**:输入争议情况,匹配相似仲裁案例,评估败诉风险
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ ⚖️ 案例匹配 │
|
||
│ │
|
||
│ 描述你的情况: │
|
||
│ [员工入职3个月没签合同,现在要辞退他...] │
|
||
│ │
|
||
│ [分析] │
|
||
│ │
|
||
│ ──────────── 相似案例 ──────────── │
|
||
│ │
|
||
│ 📋 案例1:某科技公司 vs 员工张某 │
|
||
│ · 情形:入职3个月未签合同后辞退 │
|
||
│ · 结果:企业败诉,赔双倍工资+违法解除赔偿 │
|
||
│ · 赔偿金额:¥XX,XXX │
|
||
│ · 相似度:92% │
|
||
│ │
|
||
│ 📋 案例2:某贸易公司 vs 员工李某 │
|
||
│ · 情形:未签合同 + 协商解除 │
|
||
│ · 结果:企业赔双倍工资差额 │
|
||
│ · 赔偿金额:¥XX,XXX │
|
||
│ · 相似度:85% │
|
||
│ │
|
||
│ ⚠️ 你的败诉风险:高(90%) │
|
||
│ 💡 建议:先补签合同再协商解除,可降低风险 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- 内置劳动仲裁案例库(公开裁判文书)
|
||
- AI 语义匹配相似案例,计算相似度
|
||
- 评估败诉概率和预估赔偿金额
|
||
- 给出风险降低建议
|
||
|
||
#### 4.6.5 技术方案
|
||
|
||
| 组件 | 方案 |
|
||
|------|------|
|
||
| **LLM** | 阿里通义千问(Qwen),通过 DashScope API 调用,中文劳动法领域表现优秀 |
|
||
| **模型选择** | qwen-plus(日常问答)/ qwen-max(合同审查/案例匹配等复杂任务) |
|
||
| **API Key** | 通过环境变量 `DASHSCOPE_API_KEY` 注入,不硬编码 |
|
||
| **RAG 知识库** | 劳动法/劳动合同法/司法解释/地方条例 向量化存储 |
|
||
| **向量数据库** | Supabase pgvector(与业务数据库共用,减少依赖) |
|
||
| **Embedding** | DashScope text-embedding-v2(中文支持好,与 Qwen 生态统一) |
|
||
| **上下文关联** | 每次问答注入当前企业数据摘要(员工数/风险项/合同状态) |
|
||
| **案例库** | 爬取公开裁判文书,结构化存储 + 向量检索 |
|
||
| **流式输出** | DashScope SSE 流式返回,打字机效果,提升体验 |
|
||
| **安全过滤** | 敏感问题兜底回复(「建议咨询专业律师」) |
|
||
|
||
#### 4.6.6 使用限制
|
||
|
||
| 套餐 | AI 问答次数/月 | 合同审查次数/月 | 案例匹配次数/月 |
|
||
|------|---------------|---------------|---------------|
|
||
| free | 10 | 3 | 3 |
|
||
| pro | 100 | 20 | 20 |
|
||
| enterprise | 无限 | 无限 | 无限 |
|
||
|
||
### 4.7 员工参与(员工端,独立入口)
|
||
|
||
**目标**:让员工也能查看自己的合同和工资,参与入职填报和合同确认,减少 HR 沟通成本
|
||
|
||
**设计理念**:员工端独立入口,不需要注册账号,手机号验证码登录,极简操作
|
||
|
||
#### 4.7.1 员工登录
|
||
|
||
- **入口**:独立页面 `/portal/login`,与管理端完全分离
|
||
- **登录方式**:支持两种方式,员工可自由选择
|
||
- **方式一:手机号 + 密码**(推荐,无需短信服务)
|
||
- HR 创建员工时设置初始密码,员工首次登录后可修改
|
||
- 密码 6 位以上,支持数字+字母组合
|
||
- **方式二:手机号 + 验证码**(无需记密码)
|
||
- v1.0 方案:页面内显示验证码(暂不接入短信服务,降低成本)
|
||
- 后续版本:接入阿里云短信服务,发送真实短信验证码
|
||
- **验证码发送**:优先通过页面内验证码(暂不接入短信服务,降低成本)
|
||
- v1.0 方案:HR 通过微信分享员工端二维码/链接,员工扫码进入后输入手机号,系统发送验证码(页面内弹窗显示验证码,后续版本再接入短信)
|
||
- 后续版本:接入阿里云短信服务,发送真实短信验证码
|
||
- **身份识别**:根据手机号匹配企业员工记录,自动关联 orgId
|
||
- **安全**:验证码 5 分钟有效,同一手机号每小时最多 5 次;密码错误 5 次锁定 30 分钟
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 🏢 用工合规助手 — 员工端 │
|
||
│ │
|
||
│ [密码登录] [验证码登录] ← 切换 Tab │
|
||
│ │
|
||
│ ── 密码登录 ── │
|
||
│ 手机号:[___________] │
|
||
│ 密码: [___________] │
|
||
│ [登录] │
|
||
│ │
|
||
│ ── 验证码登录 ── │
|
||
│ 手机号:[___________] │
|
||
│ [获取验证码] 验证码:[______] │
|
||
│ [登录] │
|
||
│ │
|
||
│ 📱 也可扫描 HR 发送的二维码直接进入 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
**HR 端生成员工端二维码**:
|
||
- HR 在管理端可生成员工端入口二维码,扫码直接打开 `/portal/login`
|
||
- 二维码可保存为图片,HR 通过微信发给员工
|
||
- 员工扫码后选择密码登录或验证码登录
|
||
- HR 创建员工时设置初始密码,可通过微信单独告知员工
|
||
|
||
#### 4.7.2 工资条查看
|
||
|
||
**页面**:`/portal/payslip`
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 💰 我的工资条 │
|
||
│ │
|
||
│ 月份选择:[2026年7月 ▼] │
|
||
│ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ 基本工资: ¥8,000 │ │
|
||
│ │ 加班费: ¥1,978 │ │
|
||
│ │ └ 工作日加班: ¥690 (10h) │ │
|
||
│ │ └ 休息日加班: ¥736 (8h) │ │
|
||
│ │ └ 节假日加班: ¥552 (4h) │ │
|
||
│ │ ───────────────────────── │ │
|
||
│ │ 应发合计: ¥9,978 │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
│ │
|
||
│ [确认已阅] │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- 按月查看工资明细,包含基本工资和加班费拆分
|
||
- 加班费明细可展开查看工作日/休息日/节假日分类
|
||
- 「确认已阅」按钮,记录员工已查看该月工资条(时间 + IP)
|
||
- HR 端可查看哪些员工已确认、哪些未确认
|
||
|
||
#### 4.7.3 我的合同
|
||
|
||
**页面**:`/portal/contract`
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 📄 我的劳动合同 │
|
||
│ │
|
||
│ 合同类型:固定期限 │
|
||
│ 签订方式:纸质合同 │
|
||
│ 签订日期:2026-03-15 │
|
||
│ 合同期限:2026-03-15 ~ 2029-03-14(3年) │
|
||
│ 试用期:2个月(2026-03-15 ~ 2026-05-14) │
|
||
│ 试用期工资:¥6,400 │
|
||
│ 转正工资:¥8,000 │
|
||
│ │
|
||
│ 📎 合同扫描件:劳动合同_张三.pdf [查看] │
|
||
│ │
|
||
│ ──────────── 签署记录 ──────────── │
|
||
│ ✅ 已确认签署(2026-03-15 14:32) │
|
||
│ 确认IP:192.168.x.x │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- 查看自己的劳动合同信息(只读)
|
||
- 可查看合同扫描件(纸质)或电子合同链接(电子)
|
||
- 展示签署确认记录(时间 + IP)
|
||
- 如合同即将到期,顶部显示提示「您的合同还有 XX 天到期」
|
||
|
||
#### 4.7.4 员工入职填报
|
||
|
||
**页面**:`/portal/onboarding?token=xxx`
|
||
|
||
**使用场景**:HR 在管理端添加员工时选择「生成填报二维码」,员工扫码填写(HR 通过微信发送二维码图片或链接)
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 📝 入职信息填报 │
|
||
│ │
|
||
│ 欢迎加入 XX公司!请填写以下信息: │
|
||
│ │
|
||
│ 姓名 *: [___________] │
|
||
│ 手机号 *: [___________] │
|
||
│ 身份证号 *:[___________] │
|
||
│ 紧急联系人:[___________] │
|
||
│ 联系电话: [___________] │
|
||
│ 住址: [___________] │
|
||
│ 银行卡号: [___________] │
|
||
│ 开户行: [___________] │
|
||
│ │
|
||
│ [提交] │
|
||
│ │
|
||
│ 📌 提交后 HR 将审核您的信息 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- HR 端创建员工时可选「生成填报二维码」或「自己填写」
|
||
- 选择「生成填报二维码」后,页面显示二维码图片 + 链接,HR 可:
|
||
- 保存二维码图片,通过微信发给员工
|
||
- 复制链接,通过微信直接发给员工
|
||
- 填报链接含一次性 token,有效期 24 小时
|
||
- 员工填写的信息进入「待审核」状态,HR 审核后正式入库
|
||
- 填报信息加密传输(HTTPS)
|
||
- **暂不接入短信服务**,降低初期成本,后续版本可增加短信通知
|
||
|
||
#### 4.7.5 电子合同签署确认
|
||
|
||
**页面**:`/portal/contract-confirm?token=xxx`
|
||
|
||
**使用场景**:HR 在管理端录入电子合同后,生成确认二维码/链接,通过微信发给员工
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ ✍️ 合同签署确认 │
|
||
│ │
|
||
│ XX公司 与 张三 的劳动合同 │
|
||
│ │
|
||
│ 合同类型:固定期限(3年) │
|
||
│ 合同期限:2026-03-15 ~ 2029-03-14 │
|
||
│ 试用期:2个月 │
|
||
│ 试用期工资:¥6,400 │
|
||
│ 转正工资:¥8,000 │
|
||
│ │
|
||
│ 📎 查看合同文件:[点击查看] │
|
||
│ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
│ │ ☐ 我已阅读合同内容,确认签署 │ │
|
||
│ └─────────────────────────────────────┘ │
|
||
│ │
|
||
│ [确认签署] │
|
||
│ │
|
||
│ 📌 确认后将记录签署时间和 IP 地址 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
- 员工查看合同内容后勾选确认 + 点击「确认签署」
|
||
- 系统记录确认时间、IP 地址、设备信息
|
||
- HR 端合同状态自动更新为「已确认签署」
|
||
- 确认链接含一次性 token,有效期 7 天
|
||
- HR 生成确认二维码后,可保存图片通过微信发给员工,或复制链接直接发送
|
||
- **暂不接入短信服务**,通过微信发送二维码/链接即可
|
||
- **法律效力说明**:此确认为员工知情确认,正式电子签章需接入第三方电子签平台(后续版本)
|
||
|
||
### 4.8 风险提醒(融入首页,不单独成页)
|
||
|
||
**设计理念**:风险不需要单独页面,直接在首页和各模块中展示
|
||
|
||
**风险展示位置**:
|
||
|
||
| 位置 | 展示方式 |
|
||
|------|---------|
|
||
| 首页 | 待办列表 + 风险分布进度条 |
|
||
| 合同管理 | 列表状态列信号灯 + 详情页风险卡片 |
|
||
| 钱的计算 | 计算结果区的警告提示 |
|
||
| 解聘助手 | 向导 Step 3/5 的检查结果 |
|
||
| **顶部导航栏** | 红色角标显示待处理风险总数,点击跳转首页 |
|
||
|
||
**风险处理**:
|
||
- 在首页待办列表中,每条风险右侧有「去处理」按钮
|
||
- 点击直接跳转到对应模块的操作页面
|
||
- 处理完成后风险自动消除(如签了合同,未签风险消失)
|
||
- 也可手动标记「已忽略」并填写备注(记录决策原因)
|
||
|
||
---
|
||
|
||
## 5. 数据模型(SaaS 多租户)
|
||
|
||
### 5.0 多租户基础表
|
||
|
||
#### Organization(企业/组织)
|
||
|
||
```typescript
|
||
interface Organization {
|
||
id: string;
|
||
name: string; // 企业名称
|
||
plan: 'free' | 'pro' | 'enterprise'; // 套餐
|
||
maxEmployees: number; // 套餐对应人数上限
|
||
createdAt: string;
|
||
}
|
||
```
|
||
|
||
#### User(用户)
|
||
|
||
```typescript
|
||
interface User {
|
||
id: string;
|
||
orgId: string; // 所属企业
|
||
phone: string; // 手机号(登录用)
|
||
email?: string; // 邮箱(选填)
|
||
passwordHash: string; // bcrypt 加密密码
|
||
name: string; // 用户姓名
|
||
role: 'admin' | 'hr' | 'viewer'; // 角色
|
||
createdAt: string;
|
||
lastLoginAt?: string;
|
||
}
|
||
```
|
||
|
||
**角色权限**:
|
||
|
||
| 角色 | 权限 |
|
||
|------|------|
|
||
| admin | 全部操作 + 用户管理 + 套餐管理 |
|
||
| hr | 合同/加班/解聘的增删改查 |
|
||
| viewer | 只能查看,不能修改 |
|
||
|
||
### 5.1 员工信息 (Employee) — 精简字段
|
||
|
||
```typescript
|
||
interface Employee {
|
||
id: string;
|
||
orgId: string; // 所属企业(多租户隔离)
|
||
name: string; // 姓名(必填)
|
||
department: string; // 部门(必填)
|
||
hireDate: string; // 入职日期(必填)
|
||
monthlySalary: number; // 月工资标准(必填,加密存储)
|
||
status: 'active' | 'resigned'; // 在职/离职
|
||
gender?: 'male' | 'female'; // 性别(选填,用于禁止解聘检查)
|
||
isPregnant?: boolean; // 是否在孕期/哺乳期(选填)
|
||
isInMedicalPeriod?: boolean; // 是否在医疗期(选填)
|
||
isWorkInjured?: boolean; // 是否工伤期间(选填)
|
||
phone?: string; // 联系电话(选填)
|
||
createdBy: string; // 创建人 userId
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
```
|
||
|
||
**精简策略**:必填字段仅 4 个(姓名/部门/入职日期/月工资),其余选填
|
||
|
||
### 5.2 劳动合同 (LaborContract)
|
||
|
||
```typescript
|
||
interface LaborContract {
|
||
id: string;
|
||
orgId: string; // 所属企业
|
||
employeeId: string; // 关联员工
|
||
signDate: string | null; // 签订日期(null=未签订)
|
||
startDate: string; // 合同起始日期
|
||
endDate: string | null; // 到期日期(null=无固定期限)
|
||
contractType: 'fixed' | 'unfixed' | 'unsigned'; // 简化:固定/无固定/未签
|
||
signMethod: 'paper' | 'electronic'; // 签订方式:纸质/电子
|
||
contractYears: number; // 合同年限(1/2/3等,无固定=0)
|
||
probationMonths: number; // 试用期月数(0=无试用期)
|
||
probationSalary: number; // 试用期工资(0=无试用期)
|
||
renewalCount: number; // 续签次数
|
||
attachmentName?: string; // 纸质合同扫描件文件名(可选)
|
||
attachmentUrl?: string; // 扫描件存储 URL(可选)
|
||
electronicContractNo?: string; // 电子合同编号(可选)
|
||
electronicContractUrl?: string; // 电子合同链接(可选)
|
||
createdBy: string;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
```
|
||
|
||
**精简策略**:去掉 `task` 类型(中小企业极少使用)、去掉 `status`(由系统自动计算)
|
||
|
||
**签订方式支持**:`signMethod` 区分纸质/电子,纸质可上传扫描件存档,电子可记录合同编号和链接
|
||
|
||
### 5.3 加班记录 (OvertimeRecord)
|
||
|
||
```typescript
|
||
interface OvertimeRecord {
|
||
id: string;
|
||
orgId: string; // 所属企业
|
||
employeeId: string;
|
||
month: string; // YYYY-MM
|
||
weekdayHours: number; // 工作日加班小时
|
||
weekendHours: number; // 休息日加班小时
|
||
holidayHours: number; // 法定节假日加班小时
|
||
calculatedPay: number; // 应付加班费(自动计算)
|
||
createdBy: string;
|
||
createdAt: string;
|
||
}
|
||
```
|
||
|
||
**精简策略**:去掉 `overtimePay`(中小企业通常不记录已付金额,只算应付)
|
||
|
||
### 5.4 解聘记录 (TerminationRecord)
|
||
|
||
```typescript
|
||
interface TerminationRecord {
|
||
id: string;
|
||
orgId: string; // 所属企业
|
||
employeeId: string;
|
||
terminationDate: string;
|
||
reason: 'negotiated' | 'fault' | 'nonfault' | 'layoff' | 'expired';
|
||
compensation: number; // 经济补偿金(自动计算)
|
||
checklistResult: { // 向导检查结果
|
||
item: string;
|
||
passed: boolean;
|
||
remark?: string;
|
||
}[];
|
||
riskLevel: 'safe' | 'warning' | 'danger';
|
||
createdBy: string;
|
||
createdAt: string;
|
||
}
|
||
```
|
||
|
||
**精简策略**:去掉 `reasonDetail`(向导中已选择)、去掉 `noticeType`(由向导检查项覆盖)、去掉单独的 `hasProofIssued`/`hasArchiveTransferred`(合并到 checklistResult)
|
||
|
||
### 5.5 风险项 (RiskItem)
|
||
|
||
```typescript
|
||
interface RiskItem {
|
||
id: string;
|
||
orgId: string; // 所属企业
|
||
type: 'contract' | 'salary' | 'termination';
|
||
level: 'high' | 'medium' | 'low';
|
||
title: string; // 人话标题
|
||
description: string; // 人话描述
|
||
suggestion: string; // 人话建议
|
||
legalBasis: string; // 法律依据(折叠展示)
|
||
employeeId?: string;
|
||
status: 'pending' | 'resolved' | 'ignored';
|
||
actionUrl?: string; // 点击跳转的处理页面路由
|
||
createdAt: string;
|
||
resolvedAt?: string;
|
||
resolvedBy?: string;
|
||
}
|
||
```
|
||
|
||
### 5.6 操作审计日志 (AuditLog)
|
||
|
||
```typescript
|
||
interface AuditLog {
|
||
id: string;
|
||
orgId: string;
|
||
userId: string; // 操作人
|
||
action: string; // 操作类型(如 'contract.sign', 'termination.create')
|
||
target: string; // 操作对象(如 'employee:张三')
|
||
detail: string; // 操作详情
|
||
ipAddress: string; // IP 地址
|
||
createdAt: string;
|
||
}
|
||
```
|
||
|
||
**新增 `actionUrl`**:风险项可以直接跳转到对应的处理页面,一键操作
|
||
|
||
---
|
||
|
||
## 6. 系统架构(SaaS 版)
|
||
|
||
### 6.1 技术架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ 前端(React 18) │
|
||
│ Vite + TailwindCSS + Recharts + React Router │
|
||
│ 部署:Vercel / Netlify │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ API 层(RESTful) │
|
||
│ Axios 请求 → JWT Token 认证 → 路由守卫 │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 后端(Node.js) │
|
||
│ Express + Prisma ORM + JWT 认证 + Zod 校验 │
|
||
│ 部署:Railway / Render │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 数据库(PostgreSQL) │
|
||
│ 多租户隔离(org_id) + 全文搜索 + 自动备份 │
|
||
│ 部署:Railway / Supabase / Neon │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 6.2 多租户架构
|
||
|
||
**隔离策略**:共享数据库 + 行级隔离(`org_id` 字段)
|
||
|
||
- 每个企业注册后创建一个 Organization(组织)
|
||
- 所有业务数据表均包含 `orgId` 字段
|
||
- 所有 API 请求自动注入当前用户的 `orgId`,只能访问本企业数据
|
||
- Prisma 中间件自动过滤 `orgId`,防止越权
|
||
|
||
### 6.3 认证体系
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 注册 | 企业手机号/邮箱注册,创建 Organization + Admin 用户 |
|
||
| 登录 | 手机号/邮箱 + 密码登录,返回 JWT Token |
|
||
| Token 管理 | Access Token(2h 过期)+ Refresh Token(7d 过期) |
|
||
| 路由守卫 | 前端 React Router 守卫,未登录跳转登录页 |
|
||
| API 拦截 | 后端中间件校验 JWT,提取 userId + orgId |
|
||
| 角色权限 | admin(管理员)/ hr(HR 操作员)/ viewer(只读) |
|
||
|
||
### 6.4 安全要求
|
||
|
||
| 类别 | 要求 |
|
||
|------|------|
|
||
| **密码存储** | bcrypt 加密,不存明文 |
|
||
| **数据传输** | 全站 HTTPS |
|
||
| **JWT 密钥** | 环境变量管理,不硬编码 |
|
||
| **SQL 注入** | Prisma ORM 参数化查询,杜绝注入 |
|
||
| **XSS 防护** | React 自动转义 + CSP 头 |
|
||
| **数据隔离** | 每个请求校验 orgId,禁止跨企业访问 |
|
||
| **敏感数据** | 工资字段加密存储(AES-256) |
|
||
| **操作日志** | 关键操作(解聘/合同变更)记录审计日志 |
|
||
| **速率限制** | 登录接口限流(5次/分钟),防止暴力破解 |
|
||
|
||
### 6.5 非功能需求
|
||
|
||
| 类别 | 要求 |
|
||
|------|------|
|
||
| **前端技术栈** | React 18 + Vite + TailwindCSS + Recharts |
|
||
| **后端技术栈** | Node.js + Express + Prisma ORM + Zod |
|
||
| **数据库** | PostgreSQL,支持多租户行级隔离 |
|
||
| **认证** | JWT(Access Token + Refresh Token) |
|
||
| **响应式** | 桌面端(1280px+)/ 平板端(768px+)/ 手机端(375px+) |
|
||
| **语言** | 全简体中文,文案用「人话」避免法律术语 |
|
||
| **性能** | 首屏加载 < 2s,API 响应 < 500ms |
|
||
| **浏览器** | Chrome / Edge / Safari 最新版 |
|
||
| **部署** | 前端 Vercel + 后端 Railway + 数据库 Neon/Supabase |
|
||
| **可用性** | 99.5%+,数据库每日自动备份 |
|
||
| **可扩展** | 后期可加 Redis 缓存、CDN 加速 |
|
||
|
||
---
|
||
|
||
## 7. 界面规划
|
||
|
||
### 7.1 整体布局(顶部导航,非侧边栏)
|
||
|
||
**设计理由**:中小企业用户更习惯顶部导航(类似常用网站),侧边栏对小屏幕不友好
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ 🏢 用工合规助手 [总览] [合同] [算钱] [解聘] [AI顾问] 🔴3 👤张总 │
|
||
├──────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ │
|
||
│ 主内容区 │
|
||
│ (最多 960px 居中) │
|
||
│ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**布局规范**:
|
||
- 顶部导航栏:Logo + 5 个 Tab + 风险角标 + 用户头像下拉菜单(设置/退出),固定不滚动
|
||
- 主内容区:最大宽度 960px,居中,避免宽屏下内容过散
|
||
- 移动端:导航栏变为底部 Tab Bar(类似 App)
|
||
- **无侧边栏**:减少视觉干扰,5 个 Tab 足够
|
||
|
||
### 7.2 页面清单
|
||
|
||
**管理端认证页面(未登录可访问)**:
|
||
|
||
| 页面 | 路由 | 说明 |
|
||
|------|------|------|
|
||
| 登录 | `/login` | 手机号/邮箱 + 密码登录 |
|
||
| 注册 | `/register` | 企业名称 + 手机号 + 密码,注册即创建组织 |
|
||
| 忘记密码 | `/forgot-password` | 手机验证码重置密码 |
|
||
|
||
**管理端业务页面(登录后访问)**:
|
||
|
||
| 页面 | 路由 | 导航名称 | 说明 |
|
||
|------|------|---------|------|
|
||
| 风险总览 | `/` | 总览 | 一句话状态 + 数字卡片 + 待办列表 + 风险分布 |
|
||
| 合同管理 | `/contracts` | 合同 | 员工合同列表 + 添加/编辑 + 一键续签 + 发送填报/确认链接 |
|
||
| 钱的计算 | `/money` | 算钱 | 3 个 Tab:加班费 / 双倍工资 / 经济补偿金 |
|
||
| 解聘助手 | `/termination` | 解聘 | 5 步向导 + 历史记录 |
|
||
| AI 合规顾问 | `/ai-assistant` | AI顾问 | 智能问答 + 合同审查 + 案例匹配 |
|
||
| 系统设置 | `/settings` | 设置 | 企业信息 + 用户管理 + 套餐 |
|
||
|
||
**员工端页面(独立入口,手机号验证码登录)**:
|
||
|
||
| 页面 | 路由 | 说明 |
|
||
|------|------|------|
|
||
| 员工登录 | `/portal/login` | 手机号 + 短信验证码登录 |
|
||
| 工资条 | `/portal/payslip` | 按月查看工资明细 + 确认已阅 |
|
||
| 我的合同 | `/portal/contract` | 查看合同信息 + 扫描件/电子链接 |
|
||
| 入职填报 | `/portal/onboarding?token=xxx` | 填写入职信息(一次性链接) |
|
||
| 合同确认 | `/portal/contract-confirm?token=xxx` | 确认签署电子合同(一次性链接) |
|
||
|
||
**设置页面子 Tab**:
|
||
- 企业信息:名称、地区(用于最低工资/社平工资默认值)
|
||
- 用户管理:添加/移除用户,分配角色(admin/hr/viewer)
|
||
- 套餐信息:当前套餐、人数上限、升级套餐
|
||
|
||
### 7.3 配色方案
|
||
|
||
| 用途 | 颜色 | 说明 |
|
||
|------|------|------|
|
||
| 主色 | `#2563EB`(蓝色) | 主操作按钮、导航高亮、链接 |
|
||
| 危险/高风险 | `#EF4444`(红色) | 高风险信号灯、危险提示 |
|
||
| 警告/中风险 | `#F59E0B`(橙黄) | 待办提醒、中风险信号灯 |
|
||
| 安全/正常 | `#22C55E`(绿色) | 合规状态、完成状态 |
|
||
| 背景 | `#F8FAFC`(浅灰) | 页面背景,减少视觉疲劳 |
|
||
| 卡片 | `#FFFFFF`(白色) | 内容卡片背景 |
|
||
| 文字主 | `#1E293B`(深灰) | 主要文字 |
|
||
| 文字次 | `#64748B`(中灰) | 辅助说明文字 |
|
||
|
||
### 7.4 组件规范
|
||
|
||
| 组件 | 规范 |
|
||
|------|------|
|
||
| 按钮 | 主按钮蓝色填充,次按钮白色边框,危险按钮红色填充 |
|
||
| 卡片 | 白底 + 圆角12px + 轻阴影(`shadow-sm`),不用重阴影 |
|
||
| 表格 | 无边框简约表格,行间用浅灰分隔线,hover 高亮 |
|
||
| 表单 | 输入框圆角8px,focus 时蓝色边框,错误时红色边框 + 提示 |
|
||
| 弹窗 | 居中模态框,圆角16px,遮罩半透明黑色 |
|
||
| 信号灯 | 圆点12px + 文字,不用复杂图标 |
|
||
| 空状态 | 插图 + 引导文字 + 主操作按钮 |
|
||
|
||
---
|
||
|
||
## 8. 实施计划
|
||
|
||
| 阶段 | 内容 | 优先级 |
|
||
|------|------|--------|
|
||
| P0 | 项目搭建:前端 Vite + React + TailwindCSS,后端 Express + Prisma + PostgreSQL,项目结构 + 路由骨架 | 高 |
|
||
| P1 | 认证体系:注册/登录/JWT Token + 路由守卫 + 多租户中间件 | 高 |
|
||
| P2 | 首页风险总览(信号灯 + 待办 + 分布) | 高 |
|
||
| P3 | 合同管理(列表 + 添加/编辑 + 一键续签 + 纸质/电子合同 + 风险标注) | 高 |
|
||
| P4 | 钱的计算(3 Tab 计算器 + 实时计算) | 高 |
|
||
| P5 | 解聘助手(5 步向导 + 禁止情形检查 + 记录) | 高 |
|
||
| P6 | AI 合规顾问(智能问答 + 风险预测 + 合同审查 + 案例匹配 + RAG 知识库) | 高 |
|
||
| P7 | 员工端(验证码登录 + 工资条 + 我的合同 + 入职填报 + 合同确认) | 高 |
|
||
| P8 | 系统设置(企业信息 + 用户管理 + 套餐) | 中 |
|
||
| P9 | 新手引导 + 空状态 + 移动端适配 | 中 |
|
||
| P10 | 部署上线(Vercel + Railway + Neon)+ 联调验证 | 中 |
|
||
|
||
---
|
||
|
||
## 9. 法律依据索引
|
||
|
||
| 法律法规 | 关键条款 | 涉及模块 |
|
||
|---------|---------|---------|
|
||
| 《劳动法》 | 第36/41/44/48/50条 | 工资加班费 |
|
||
| 《劳动合同法》 | 第10/14/19/20/39-42/46-47/50/82条 | 合同/解聘/双倍工资 |
|
||
| 《劳动合同法实施条例》 | 第6/7/25/27条 | 双倍工资/补偿金 |
|
||
| 《工资支付暂行规定》 | 第13/15/18条 | 加班费/工资支付 |
|
||
| 最高人民法院劳动争议司法解释(一) | 第44/45条 | 举证责任 |
|
||
|
||
---
|
||
|
||
## 10. 约束与假设
|
||
|
||
1. **SaaS 多租户**:共享数据库 + 行级隔离(`orgId`),每家企业数据互不可见
|
||
2. **法律时效性**:系统内置规则基于现行法律法规,如法律更新需手动更新规则
|
||
3. **地区差异**:最低工资标准、社平工资等参数需用户自行设置(提供常用城市默认值)
|
||
4. **非替代法律意见**:系统提供合规参考,不构成正式法律意见,重大决策建议咨询专业律师
|
||
5. **套餐限制**:free 套餐限 20 人,pro 套餐限 200 人,enterprise 无限制
|
||
6. **数据备份**:PostgreSQL 数据库每日自动备份,保留 30 天
|
||
7. **合同附件存储**:纸质合同扫描件上传至云存储(Supabase Storage / S3),数据库只存 URL
|
||
8. **数据导出**:支持导出全部数据为 JSON/Excel,用户可随时备份
|
||
9. **后续可扩展**:预留 API 接口,后期可接入电子签平台(如 e签宝、法大大)实现在线签署
|
||
|
||
---
|
||
|
||
## 11. 系统扩展架构
|
||
|
||
### 11.1 设计原则:插件化模块架构
|
||
|
||
系统采用**模块化插件架构**,每个业务模块独立开发、独立注册、独立路由,互不依赖:
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ 前端框架层 │
|
||
│ 路由 / 导航 / 认证 / 布局 / 信号灯体系 / UI 组件库 │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 模块注册中心 (Module Registry) │
|
||
│ 每个模块注册:路由前缀 / 导航菜单项 / 权限 / 图标 │
|
||
├──────┬──────┬──────┬──────┬──────┬──────┬──────────┤
|
||
│ 合同 │ 工资 │ 解聘 │ 社保 │ 成本 │ 考勤 │ ... │
|
||
│ 模块 │ 模块 │ 模块 │ 模块 │ 分析 │ 模块 │ 模块 │
|
||
├──────┴──────┴──────┴──────┴──────┴──────┴──────────┤
|
||
│ 共享数据层 (Prisma) │
|
||
│ Employee / Organization / User / AuditLog │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**核心机制**:
|
||
- **模块注册**:每个模块通过统一接口注册路由、导航菜单、权限要求
|
||
- **共享数据**:Employee/Organization/User 为核心共享表,所有模块复用
|
||
- **模块独立**:新增模块不影响现有模块,可独立上线/下线
|
||
- **渐进式加载**:前端按模块懒加载(React.lazy),不影响首屏性能
|
||
|
||
### 11.2 后端 API 扩展规范
|
||
|
||
```
|
||
/api/v1/
|
||
/auth ← 认证模块(v1.0)
|
||
/employees ← 员工管理(v1.0)
|
||
/contracts ← 合同管理(v1.0)
|
||
/overtime ← 加班记录(v1.0)
|
||
/termination ← 解聘管理(v1.0)
|
||
/risks ← 风险预警(v1.0)
|
||
/social-insurance ← 社保公积金(v2.0 预留)
|
||
/cost-analysis ← 人力成本分析(v3.0 预留)
|
||
/attendance ← 考勤管理(v4.0 预留)
|
||
```
|
||
|
||
- 所有 API 遵循 RESTful 规范,统一 `/api/v1/` 前缀
|
||
- 统一响应格式:`{ success: boolean, data: any, error?: string }`
|
||
- 统一鉴权中间件,所有路由自动校验 JWT + orgId
|
||
- 新增模块只需添加路由文件 + Prisma model,不改现有代码
|
||
|
||
### 11.3 数据库扩展策略
|
||
|
||
- 核心表(Employee/Organization/User)稳定不变
|
||
- 新模块新增独立表,通过 `employeeId` / `orgId` 关联
|
||
- Prisma schema 按模块分文件管理(Prisma 多 schema 支持)
|
||
- 数据库迁移使用 Prisma Migrate,增量迁移不破坏现有数据
|
||
|
||
---
|
||
|
||
## 12. 后续模块规划
|
||
|
||
### 12.1 v2.0 — 社保公积金模块
|
||
|
||
**目标**:自动计算五险一金缴费金额,防止少缴/漏缴风险
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 缴费基数设置 | 各城市社保/公积金缴费基数上下限默认值 |
|
||
| 五险一金计算 | 养老/医疗/失业/工伤/生育 + 公积金,企业/个人分担 |
|
||
| 缴费明细表 | 按员工/按月生成缴费明细 |
|
||
| 合规检查 | 缴费基数低于最低标准预警、断缴提醒 |
|
||
| 对账单导出 | 导出社保公积金月度对账单 |
|
||
|
||
**数据模型预留**:
|
||
```typescript
|
||
interface SocialInsuranceRecord {
|
||
id: string;
|
||
orgId: string;
|
||
employeeId: string;
|
||
month: string; // YYYY-MM
|
||
base: number; // 缴费基数
|
||
pension: { company: number; personal: number };
|
||
medical: { company: number; personal: number };
|
||
unemployment: { company: number; personal: number };
|
||
workInjury: { company: number; personal: number };
|
||
maternity: { company: number; personal: number };
|
||
housingFund: { company: number; personal: number };
|
||
total: { company: number; personal: number };
|
||
}
|
||
```
|
||
|
||
**页面路由**:`/social-insurance`(导航名称:社保)
|
||
|
||
### 12.2 v3.0 — 人力资源成本分析模块
|
||
|
||
**目标**:可视化人力成本结构,辅助经营决策
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 成本总览 Dashboard | 月度/季度/年度人力成本总览 |
|
||
| 成本构成分析 | 工资/社保/公积金/加班费/补偿金 占比饼图 |
|
||
| 部门成本对比 | 各部门人力成本柱状图对比 |
|
||
| 人均成本趋势 | 人均成本月度趋势折线图 |
|
||
| 成本预警 | 人力成本占比超过营收 X% 预警 |
|
||
| 报表导出 | 导出 Excel/PDF 成本报表 |
|
||
|
||
**数据模型预留**:
|
||
```typescript
|
||
interface CostReport {
|
||
id: string;
|
||
orgId: string;
|
||
period: string; // YYYY-MM 或 YYYY-Q1 等
|
||
totalSalary: number; // 工资总额
|
||
totalOvertimePay: number; // 加班费总额
|
||
totalSocialInsurance: number; // 社保企业部分
|
||
totalHousingFund: number; // 公积金企业部分
|
||
totalCompensation: number; // 解聘补偿金
|
||
totalCost: number; // 人力成本合计
|
||
headcount: number; // 人数
|
||
avgCostPerPerson: number; // 人均成本
|
||
}
|
||
```
|
||
|
||
**页面路由**:`/cost-analysis`(导航名称:成本分析)
|
||
|
||
### 12.3 v3.0 — 员工自助门户增强
|
||
|
||
**目标**:在 v1.0 员工端基础上增加考勤、请假等自助功能
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 考勤记录 | 查看个人考勤/加班记录 |
|
||
| 请假申请 | 在线请假审批流程 |
|
||
| 调薪记录 | 查看历史调薪记录 |
|
||
| 在线咨询 | 员工端直接问 AI 顾问 |
|
||
|
||
**页面路由**:`/portal`(扩展已有员工端)
|
||
|
||
**注**:v1.0 已包含员工端基础功能(工资条查看、合同查看、入职填报、合同确认),v3.0 在此基础上增强
|