# 劳动用工合规助手 — 需求规格说明书

> **文档编号**: 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 在此基础上增强
