# 劳动用工合规助手 — 需求规格说明书 > **文档编号**: 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 在此基础上增强