Files
selfrelease 0df8aa77d9 feat: AIHR 智能人力资源管理系统初始提交
- 员工花名册管理(加密存储、导入导出)
- 薪酬管理(发薪批次、薪酬模版、加班费计算、工资条)
- 社保公积金(多城市配置、版本管理、基数调整)
- 解聘管理(6步流程、证据链、工作交接)
- AI 助手(合同审查、风险预测、RAG 知识库)
- Dashboard 仪表盘
- 设置与通知
2026-07-24 13:53:11 +08:00

1388 lines
68 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 劳动用工合规助手 — 需求规格说明书
> **文档编号**: 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-143年) │
│ 试用期:2个月(2026-03-15 ~ 2026-05-14
│ 试用期工资:¥6,400 │
│ 转正工资:¥8,000 │
│ │
│ 📎 合同扫描件:劳动合同_张三.pdf [查看] │
│ │
│ ──────────── 签署记录 ──────────── │
│ ✅ 已确认签署(2026-03-15 14:32
│ 确认IP192.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 Token2h 过期)+ Refresh Token7d 过期) |
| 路由守卫 | 前端 React Router 守卫,未登录跳转登录页 |
| API 拦截 | 后端中间件校验 JWT,提取 userId + orgId |
| 角色权限 | admin(管理员)/ hrHR 操作员)/ 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,支持多租户行级隔离 |
| **认证** | JWTAccess Token + Refresh Token |
| **响应式** | 桌面端(1280px+/ 平板端(768px+/ 手机端(375px+ |
| **语言** | 全简体中文,文案用「人话」避免法律术语 |
| **性能** | 首屏加载 < 2sAPI 响应 < 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 在此基础上增强