Files
TurboHR/系统功能分析报告.md
selfrelease d79e3baa34 feat: 系统优化Phase2 - 面包屑导航/侧边栏间距/制度公示阅读签收/模板变量中文化/通知类型补全
- 面包屑导航组件,集成至TopNav header
- 侧边栏菜单分组间距增大,分组间分隔线
- 制度公示员工阅读签收:PolicyReadRecord模型、portal路由、管理端阅读统计
- 修复Policies.tsx民主程序推进bug(字段名/API路径/参数)
- 用工文本模板变量名英文转中文显示
- 通知类型TYPE_LABELS补全(RISK_ALERT/SOCIAL_INS/OVERTIME_ALERT/PAYSLIP_READY)
- 通知示例数据补充
- h2标题统一为text-sm font-medium
- 新增run.md
2026-07-26 20:32:38 +08:00

35 KiB
Raw Permalink Blame History

TurboHR / 白话用工侠 系统功能详细分析报告

项目路径:/Users/freedak/Documents/AIDashboard/UTMS/TurboHR/ 分析日期:2026-07-26 版本:v1.0


一、系统总体架构

1.1 技术栈

层级 技术选型 版本/说明
前端框架 React 18 + TypeScript Vite 构建,懒加载 + Suspense
前端路由 React Router v6 嵌套路由 + 认证守卫
状态管理 Zustand + persist localStorage 持久化 auth 状态
数据获取 TanStack React Query 缓存 + 自动刷新 + Mutation
UI 组件 自建组件库 Card/Button/Input/Modal/Pagination/EmptyState/Skeleton/Signal/ConfirmDialog
图标 lucide-react
图表 recharts 饼图等
Markdown react-markdown + remark-gfm + rehype-raw AI 回复渲染
通知 sonner Toast 消息
后端框架 Express 4 + TypeScript tsx watch 热重载
ORM Prisma 5 PostgreSQL
数据库 PostgreSQL pgvector 扩展(RAG 向量检索)
认证 JWTjsonwebtoken accessToken + refreshToken
加密 AES-256-CBC 薪资/身份证/银行账号加密存储
AI OpenAI SDK → 阿里云 DashScope qwen-plus / qwen-max 模型
文件上传 multer 内存/磁盘存储
数据导出 ExcelJS + JSON 支持 gzip 压缩
数据导入 xlsx (SheetJS) Excel 解析 + 身份证校验
安全 helmet + cors + express-rate-limit API 限流
日志 morgan HTTP 请求日志
压缩 compression SSE 流式响应排除压缩

1.2 项目目录结构

TurboHR/
├── backend/                    # 后端(Express + Prisma
│   ├── prisma/
│   │   ├── schema.prisma       # 数据模型定义(879 行,30+ 表/模型)
│   │   ├── seed.ts             # 种子数据
│   │   ├── seed-wufang.ts      # 五方科技演示数据
│   │   └── migrations/         # 数据库迁移
│   ├── src/
│   │   ├── app.ts              # Express 应用配置 + 路由挂载
│   │   ├── index.ts            # 启动入口
│   │   ├── routes/             # 15 个路由模块
│   │   ├── services/           # 8 个业务服务
│   │   ├── middleware/         # 5 个中间件
│   │   ├── schemas/            # 4 个 Zod 校验 schema
│   │   └── lib/                # 5 个工具库
│   └── package.json
├── frontend/                   # 前端(React + Vite
│   ├── src/
│   │   ├── App.tsx             # 路由定义 + 布局
│   │   ├── pages/              # 17 个页面组件
│   │   │   ├── auth/           # 认证页面(登录/注册/忘记密码)
│   │   │   └── portal/         # 员工端页面(5 个)
│   │   ├── components/         # 组件
│   │   │   ├── layout/         # 布局组件(TopNav/MobileTabBar/PageContainer
│   │   │   └── ui/             # UI 基础组件(9 个)
│   │   ├── hooks/              # 自定义 Hooks(3 个)
│   │   ├── store/              # Zustand 状态管理
│   │   ├── lib/                # API 客户端
│   │   └── types/              # TypeScript 类型定义
│   └── package.json
├── docs/                       # 文档
├── 0-req.md                    # 需求文档
├── 1-prd.md                    # 产品需求文档
├── 2-task.md                   # 任务拆解
└── 白话用工侠_测试页面.html      # HTML 原型(6370 行)

1.3 系统角色

角色 说明
ADMIN 管理端 系统管理员,全部权限 + 数据导出
HR 管理端 HR 操作员,业务操作权限
VIEWER 管理端 只读查看者
EMPLOYEE 员工端 普通员工,查看工资条/合同/入职填报

1.4 套餐体系

套餐 AI 问答 合同审查 案例匹配 最大员工数
FREE 10 次/月 3 次/月 3 次/月 20
PRO 100 次/月 20 次/月 20 次/月 更多
ENTERPRISE 无限 无限 无限 无限

二、数据库模型详解(Prisma Schema

2.1 枚举定义(15 个)

枚举 用途
Plan FREE / PRO / ENTERPRISE 组织套餐等级
Role ADMIN / HR / VIEWER 管理端用户角色
EmployeeStatus ACTIVE / RESIGNED 员工状态
FemaleWorkerType CADRE / WORKER 女性岗位类型(影响退休年龄)
ContractType FIXED / UNFIXED / UNSIGNED / LABOR / INTERNSHIP 合同类型
SignMethod PAPER / ELECTRONIC 签署方式
RiskType CONTRACT / SALARY / TERMINATION / MONTHLY / ONBOARDING 风险类型
RiskLevel HIGH / MEDIUM / LOW 风险等级
RiskStatus PENDING / RESOLVED / IGNORED 风险处理状态
PayrollBatchType REGULAR / TERMINATION / BONUS / SEVERANCE 工资批次类型
PayrollBatchStatus DRAFT / ARCHIVED 批次状态
PayslipItemType INPUT / CALCULATED 工资条项类型
PayslipStatus PENDING / PUBLISHED 工资条发布状态
TerminationReason NEGOTIATED / FAULT / NONFAULT / LAYOFF / EXPIRED / RESIGNATION 解聘原因
RiskAssessment SAFE / WARNING / DANGER 风险评估结果
OnboardingStatus PENDING / APPROVED / REJECTED / CANCELLED 入职链接状态
ContractConfirmStatus UNCONFIRMED / CONFIRMED / EXPIRED 合同确认状态

2.2 数据模型总览(30+ 个模型)

核心组织
├── Organization          # 企业组织(套餐/城市/发薪频率/退休提醒)
├── User                  # 管理端用户(手机号/角色/禁用状态)
│
员工管理
├── Employee              # 员工(AES 加密薪资/身份证/银行账号)
├── LaborContract         # 劳动合同(类型/期限/试用期/续签/电子签)
├── OvertimeRecord        # 加班记录(工作日/休息日/节假日)
├── DisciplinaryRecord    # 违纪记录(类型/严重度/处理/签字确认)
├── AttendanceRecord      # 考勤记录(打卡/迟到/早退/缺勤/加班)
├── TrainingRecord        # 培训记录(制度培训/签收确认)
├── PerformanceRecord     # 绩效记录(考核周期/得分/等级/改进计划)
├── EmployeeAttachment    # 员工附件(身份证/银行卡/合同扫描件等)
├── SalaryChangeRecord    # 薪酬变更记录(版本化,effectiveMonth/endMonth
├── EmployeeDepartmentRecord  # 部门变更记录(版本化)
│
薪税管理
├── PayrollBatch          # 工资批次(月/序号/类型/状态/汇总金额)
├── BatchEntry            # 批次明细(每员工薪酬项 + 自动计算项 + 风险提示)
├── Payslip               # 工资条(薪酬构成 + 累计预扣法 + 确认状态)
├── PayslipItem           # 工资条模版项(预置 + 自定义,公式计算)
├── OvertimeConfig        # 加班费配置(倍率/月计薪天数)
│
社保公积金
├── SocialInsuranceConfig     # 社保配置(版本化,按城市,比例/基数上下限)
├── HousingFundConfig         # 公积金配置(版本化,按城市)
├── EmployeeSocialInsRecord   # 员工社保记录(版本化,startMonth/endMonth
├── EmployeeHousingFundRecord # 员工公积金记录(版本化)
├── SocialMonthlyProcess      # 月度社保/公积金办理记录(快照)
│
解聘管理
├── TerminationRecord     # 解聘/离职记录(状态机/补偿金明细/交接清单/审批)
│
风险管理
├── RiskItem              # 风险待办(自动检测 + 手动创建)
├── AuditLog              # 审计日志(操作/实体/详情/IP)
│
通知管理
├── NotificationSetting   # 通知设置(合同到期/未签/加班/工资条/月度提醒日)
├── NotificationLog       # 通知发送记录
│
员工端
├── OnboardingLink        # 入职填报链接(token/状态/表单数据/过期时间)
├── ContractConfirmLink   # 合同确认链接(token/验证码/签署证据链)
│
AI 能力
├── AIConversation        # AI 会话记录(标题/消息列表)
├── AIReviewRecord        # AI 审查/案例匹配记录
├── RagKnowledge          # RAG 知识库(pgvector 向量检索)
├── RetirementPolicy      # 退休政策版本管理(AI 解析/用户确认)

2.3 关键数据设计模式

模式 实现 涉及模型
版本化快照 effectiveMonth + endMonth + isCurrent SocialInsuranceConfig, HousingFundConfig, SalaryChangeRecord, EmployeeSocialInsRecord, EmployeeHousingFundRecord, EmployeeDepartmentRecord
敏感字段加密 AES-256-CBC 对称加密 Employee.monthlySalary, idCardNumber, bankAccount
身份证哈希索引 SHA-256 哈希用于去重查询 Employee.idCardHash
状态机 status + currentStep 字段 TerminationRecord (DRAFT→PENDING_APPROVAL→APPROVED→EXECUTING→COMPLETED)
补偿金明细 JSON 字段存储分项 + 调整记录 TerminationRecord.compensationBreakdown
合规检查覆盖 JSON 字段记录人工覆盖原因 TerminationRecord.checklistOverrides
工作交接清单 JSON 数组,每项含 done/remark TerminationRecord.handoverItems
月度办理快照 JSON 存储办理时全量数据 SocialMonthlyProcess.snapshot
AI 消息历史 JSON 数组 [{role, content}] AIConversation.messages
RAG 向量检索 pgvector vector(1536) + ivfflat 索引 RagKnowledge.embedding

三、后端 API 详细分析

3.1 API 路由总览(15 个路由模块)

路由前缀 文件 行数 功能
/api/v1/auth auth.routes.ts 3445B 注册/登录/刷新令牌
/api/v1/dashboard dashboard.routes.ts 2865B 仪表盘数据 + 待办操作
/api/v1/employees employee.routes.ts 7334B 员工 CRUD
/api/v1/roster roster.routes.ts 38878B 花名册聚合 API(最大路由)
/api/v1/termination termination.routes.ts 10689B 解聘/离职全流程
/api/v1/ai ai.routes.ts 24384B AI 问答/审查/案例/预测
/api/v1/portal portal.routes.ts 16433B 员工端全部接口
/api/v1/settings settings.routes.ts 8574B 企业/用户/退休政策
/api/v1/payroll payroll.routes.ts 19655B 加班费 + 工资条
/api/v1/payroll2 payroll2.routes.ts 26958B 工资批次 + 薪酬模版
/api/v1/social social.routes.ts 44930B 社保公积金配置/记录/月度办理
/api/v1/notifications notification.routes.ts 6436B 通知设置/日志
/api/v1/attachments attachment.routes.ts 1926B 文件附件
/api/v1/export export.routes.ts 10238B 数据导出(JSON/Excel + 脱敏)
/api/v1/import import.routes.ts 34981B Excel 批量导入

3.2 认证与安全

JWT 双 Token 机制

  • accessToken:短期令牌,API 请求携带
  • refreshToken:长期令牌,accessToken 过期后自动刷新
  • 前端自动刷新axios 拦截器 401 → 用 refreshToken 换新 accessToken → 重放原请求

加密体系

AES-256-CBC 对称加密
├── Employee.monthlySalary    → 月薪加密存储
├── Employee.idCardNumber     → 身份证号加密存储
├── Employee.bankAccount      → 银行账号加密存储
└── SHA-256 哈希
    └── Employee.idCardHash   → 身份证哈希(用于查重/匹配)

中间件链

中间件 用途
helmet 安全 HTTP 头
compression Gzip 压缩(排除 SSE
cors 跨域(credentials: true
express.json JSON 解析(10MB 限制)
morgan HTTP 日志
apiLimiter API 限流
authMiddleware JWT 验证
requireAdmin ADMIN 角色校验
auditLog 操作审计日志

员工端认证

  • 密码登录:手机号 + 密码(bcrypt 比对)
  • 验证码登录:手机号 + 验证码(60 秒频率限制,5 次错误锁定)
  • portalAuth 中间件:验证 token role === 'EMPLOYEE'

3.3 核心业务服务(8 个 Service)

3.3.1 risk.service.ts568 行)— 风险自动检测引擎

函数 检测内容
detectContractRisks() 合同风险:未签合同(>30天 HIGH / >365天 视为无固定期限)/ 即将到期(≤30天 MEDIUM)/ 已到期(HIGH/ 试用期超限(MEDIUM
detectOnboardingRisks() 入职风险:入职未签合同(>30天 HIGH)
detectTerminationRisks() 解聘风险:孕期/哺乳期(HIGH)/ 医疗期(MEDIUM/ 工伤(HIGH
detectMonthlyTasks() 月度任务:发薪日/社保日/公积金日/个税日 + 工资条生成提醒
runRiskDetection() 执行全量检测 + 去重写入 RiskItem
getDashboardData() 仪表盘聚合:员工数/风险数/待办/人力成本/合同/解聘/违纪/考勤等

风险检测触发时机:每次请求 /dashboard 时自动执行 runRiskDetection()

3.3.2 termination.service.ts811 行)— 解聘全流程

6 步向导

  1. 选择员工
  2. 解聘方式(7 种原因)
  3. 合规检查(按原因动态生成 checklist + 系统自动判断)
  4. 费用结算(补偿金计算 + 分项明细 + 调整记录)
  5. 工作交接(6 项默认清单)
  6. 确认提交

状态机

DRAFT → PENDING_APPROVAL → APPROVED → EXECUTING → COMPLETED
                ↓
            REJECTED
DRAFT/CANCELLED ← 撤回

合规检查清单(按解聘原因动态生成):

原因 检查项
协商解除 支付补偿金 / 签署协议 / 结清工资
过错辞退 规章制度依据 / 违纪证据 / 通知工会 / 书面通知
非过错解除 医疗期满(系统自动判断)/ 培训或调岗(系统查记录)/ 支付补偿金 / 提前30天通知
经济性裁员 提前30天说明 / 听取意见 / 报告劳动部门 / 支付补偿金
合同到期 支付补偿金 / 提前通知

系统自动判断能力

  • 医疗期状态 → 自动标记 autoChecked: false
  • 培训记录 → 自动查 trainingRecords 判断是否经过培训
  • 风险评估 → 孕期/工伤/医疗期 → DANGER 级别

事务处理:解聘创建在事务中执行 → 创建记录 + 关闭社保/公积金 + 更新员工状态 + 解决风险待办

3.3.3 ai.service.ts237 行)— AI 核心服务

函数 模型 用途
chat() qwen-plus 普通对话(含 RAG 检索 + 企业上下文)
chatStream() qwen-plus SSE 流式对话
reviewContract() qwen-max 合同审查(结构化解析风险项 + 合规评分)
matchCase() qwen-max 案例匹配(相似案例 + 败诉风险 + 建议)
predictRisks() qwen-plus 风险预测(未来30天 + 优先级建议)
predictRisksStream() qwen-plus SSE 流式风险预测(Markdown 表格输出)

AI 上下文注入

  • buildOrgContext() 函数构建企业数据概览
  • 包含:员工列表(姓名/部门/入职日期/工龄/合同状态/特殊状态)+ 当前风险项
  • 支持按员工/部门/riskType 范围筛选

RAG 知识库

  • 15 条预置法律条文(劳动合同法/劳动法/社会保险法)
  • pgvector 向量检索(cosine 距离,ivfflat 索引)
  • searchKnowledge() 检索 top-K 相关条文注入 system prompt

用量控制

  • checkUsageLimit() 按套餐限制月度 AI 调用次数
  • recordUsage() 写入 AuditLog 记录

3.3.4 rag.service.ts98 行)— RAG 知识库

  • 启动时自动初始化(seedKnowledgeBase()
  • 自动建表 + 创建向量索引
  • 首次启动注入 15 条法律条文种子数据
  • 使用 text-embedding-v2 模型生成 1536 维向量

3.3.5 retirement.service.ts260 行)— 退休计算

  • 从身份证号提取出生日期 + 性别
  • 渐进式延迟退休算法(2025-01-01 起改革)
    • 男性:60→63 岁,每 4 个月延迟 1 个月
    • 女性干部:55→58 岁,每 4 个月延迟 1 个月
    • 女性工人:50→55 岁,每 2 个月延迟 1 个月
  • AI 解析最新退休政策 + 用户确认 + 版本管理

3.3.6 contract.service.ts23861B)— 合同服务

  • 合同状态计算(getContractStatus
  • 合同 CRUD + 续签

3.3.7 payroll.service.ts15131B)— 薪酬计算

  • 薪酬模版管理
  • 批次明细计算(calcBatchEntry
  • 社保/公积金/个税自动计算
  • 工资条生成(generatePayslipFromBatches
  • 风险提示(getPayrollRiskWarnings

3.3.8 auth.service.ts3012B)— 认证服务

  • 注册(创建 Organization + User
  • 登录(bcrypt 验证 + JWT 签发)
  • Token 刷新

3.4 员工端 APIportal.routes.ts

端点 方法 功能
/portal/login POST 密码登录
/portal/send-code POST 发送验证码(60s 频率限制)
/portal/verify-code POST 验证码登录(5 次错误锁定)
/portal/payslip GET 查看当月工资条
/portal/payslip/history GET 最近 6 个月工资条
/portal/payslip/:id/confirm POST 工资条确认已阅(记录 IP
/portal/contract GET 查看我的合同
/portal/onboarding/:token GET 获取入职填报信息
/portal/onboarding POST 入职填报提交
/portal/onboarding/:token/upload POST 入职文件上传(JPG/PNG/PDF/BMP10MB 限制)
/portal/onboarding/:id/revoke POST 撤回入职链接(HR 端)
/portal/contract-confirm/:token GET 获取合同确认信息
/portal/contract-confirm/send-code POST 合同签署验证码
/portal/contract-confirm POST 合同签署确认(验证码 + IP + UserAgent 证据链)
/portal/contract-confirm/:id/resend POST 重发合同确认链接(7 天有效期)

3.5 数据导入导出

导入(import.routes.ts614 行)

  • Excel 上传(multer memoryStorage10MB 限制)
  • 身份证号校验(18 位校验位算法 + 15 位自动升级 18 位)
  • 社保基数范围校验(北京/上海/广州/深圳/杭州 上下限)
  • 批量创建员工 + 合同 + 社保记录

导出(export.routes.ts246 行)

  • 格式:JSON / Excel
  • 模块选择:employees/contracts/terminations/payrollBatches/payslips/socialRecords/housingRecords/riskItems
  • 敏感字段脱敏:身份证 138****1234 / 银行账号 ****1234
  • 非 ADMIN 角色强制脱敏
  • 支持 gzip 压缩

四、前端页面详细分析

4.1 路由结构

管理端(ProtectedRoute + AdminLayout
├── /                 → Dashboard    (总览)
├── /roster           → Roster       (员工花名册)
├── /money            → Money        (薪税管理)
├── /social           → SocialInsurance(社保公积金)
├── /termination      → Termination  (解聘补偿)
├── /ai-assistant     → AIAssistant  AI 顾问)
└── /settings         → Settings     (系统设置)

员工端(PortalLayout,无认证守卫)
├── /portal/login         → PortalLogin      (员工登录)
├── /portal/payslip       → Payslip          (工资条)
├── /portal/contract      → MyContract       (我的合同)
├── /portal/onboarding    → Onboarding       (入职填报)
└── /portal/contract-confirm → ContractConfirm(合同签署确认)

认证页(PublicRoute
├── /login            → Login
├── /register         → Register
└── /forgot-password  → ForgotPassword

4.2 布局组件

TopNav.tsx(桌面端顶部导航)

  • 6 个导航 Tab:总览 / 员工管理 / 薪税 / 社保公积金 / 解聘补偿 / AI 顾问
  • React Query 拉取 /dashboard 数据,60 秒自动刷新
  • 风险计数 Badge(总览 Tab + 通知铃铛)
  • 用户下拉菜单(设置 / 退出)

MobileTabBar.tsx(移动端底部 Tab

  • 6 个 Tab:总览 / 员工 / 薪税 / 社保 / 解聘 / AI
  • md:hidden 仅移动端显示
  • 固定底部 fixed bottom-0

PageContainer.tsx

  • 内容容器包装

OnboardingGuide.tsx

  • 新手引导组件

4.3 各页面功能详解


4.3.1 Dashboard.tsx654 行)— 总览仪表盘

4 个 Tab:概览 / 风险提醒 / 月度任务 / 薪酬

概览 Tab

  • 4 统计卡片:在管员工数 / 高风险数 / 待办数 / 本月人力成本
  • 当月人力成本卡片(应发/社保企业/公积金企业/实发)
  • 年度人力成本卡片
  • 合同到期预警列表
  • 月度活动统计(合同签订/解聘/违纪/考勤/补偿金)
  • 工资条明细

风险提醒 Tab

  • 风险待办列表(按类型图标 + 级别排序)
  • 单条 resolve / ignore
  • 批量 resolve / ignore
  • 分页处理

月度任务 Tab

  • 月度任务列表(发薪/社保/公积金/个税/工资条)

数据获取

  • useQuery(['dashboard'])/dashboard(含风险检测 + 全量聚合数据)
  • useQuery(['expiring-contracts'])/roster/contracts/expiring

4.3.2 Roster.tsx3840 行)— 员工花名册(最大页面)

列表视图

  • 搜索(防抖 useDebouncedValue)+ 状态筛选(在职/预入职/离职)+ 合同状态筛选
  • 表格列:姓名/部门/状态/合同/工龄/月薪/操作
  • 分页
  • 未保存变更检测(useUnsavedChanges

详情面板(Tab 分组)

Tab 内容
人事信息 基本信息 / 合同信息(类型/期限/试用期/签署方式/续签)
薪酬 薪酬记录 / 社保公积金记录(版本化时间轴)
考勤绩效 考勤记录 / 培训记录 / 绩效记录
风险合规 违纪记录(类型/严重度/处理/签字) / 离职解聘
变更历史 薪酬变更 / 部门变更

关键功能

  • 员工 CRUD + 身份证自动提取出生日期/性别
  • 合同管理(签订/续签/电子签链接)
  • 违纪记录管理
  • 考勤记录管理
  • 培训记录管理
  • 绩效记录管理
  • 附件上传
  • 入职链接生成(token + 过期时间)
  • 合同确认链接生成(token + 验证码签署)
  • QR 码分享

4.3.3 Money.tsx1671 行)— 薪税管理

4 个 Tab

Tab 组件 功能
发薪批次 BatchManager 批次创建(常规/离职结算/奖金/补偿金)/ 复制上月 / 审批流 / 工资条明细 / 归档锁定
薪酬模版 TemplateManager 模版项管理(预置项 + 自定义项)/ 公式计算 / 排序 / 编辑
加班费计算 OvertimeCalculator 按月计算(工作日 1.5x / 休息日 2x / 节假日 3x)/ 关联批次
工资条管理 PayslipManager 从批次生成工资条 / 发布到员工端 / 确认状态追踪

批次流程

创建批次(DRAFT)→ 添加员工 → 编辑薪酬项 → 自动计算社保/公积金/个税
→ 风险提示 → 审批 → 归档(ARCHIVED,锁定)→ 生成工资条 → 发布到员工端

4.3.4 SocialInsurance.tsx983 行)— 社保公积金

3 个 Tab

Tab 功能
月度办理 按月查看社保/公积金办理状态 + 增减员 + 在保人员 + 缴费明细 + 办理记录快照
社保配置 按城市配置社保比例 + 基数上下限 + 版本管理 + 基数调整
公积金配置 按城市配置公积金比例 + 基数上下限 + 版本管理 + 基数调整

版本管理

  • 新版本创建时旧版本自动 isCurrent: false
  • 支持查看历史版本
  • 基数调整(批量更新员工社保/公积金基数)

4.3.5 Termination.tsx1778 行)— 解聘补偿

3 个视图

视图 功能
列表 解聘/离职记录列表 + 状态筛选 + 操作
向导 6 步解聘向导(选择员工 → 解聘方式 → 合规检查 → 费用结算 → 工作交接 → 确认提交)
详情 解聘记录详情 + PDF 导出

7 种解聘原因

  • 协商解除(第 36 条)
  • 过错辞退(第 39 条)
  • 非过错解除(第 40 条)
  • 经济性裁员(第 41 条)
  • 合同到期不续签(第 44 条/第 46 条)
  • 违法解除(赔偿金 ×2,第 87 条)
  • 员工主动离职(第 37 条)

合规检查

  • 系统自动判断(医疗期/培训记录)
  • 人工勾选 + 覆盖原因
  • 风险评估(SAFE/WARNING/DANGER

费用结算

  • 经济补偿金计算(N / N+1 / 2N)
  • 补偿金分项明细(severance / noticePay / doublePay / other
  • 调整记录(field / from / to / reason

PDF 导出:使用 jsPDF 生成解聘通知书


4.3.6 AIAssistant.tsx1149 行)— AI 顾问

5 个 Tab

Tab 功能 AI 模型
智能问答 SSE 流式对话 + Markdown 渲染 + 快捷问题 + 历史会话 qwen-plus
风险预测 按员工/部门/风险类型筛选 + SSE 流式 + Markdown 表格输出 qwen-plus
合同审查 粘贴合同文本 → AI 逐条审查 + 风险分级 + 合规评分 qwen-max
案例匹配 输入争议情形 → AI 匹配相似案例 + 败诉风险 + 建议 qwen-max
知识库 RAG 法律条文浏览

通用功能

  • useAIHistory Hook:历史记录 CRUD/ai/conversations
  • HistoryBar 组件:历史记录加载/删除
  • 流式渲染:SSE 逐 token 输出
  • 快捷问题按钮

4.3.7 Settings.tsx1190 行)— 系统设置

6 个 Section

Section 功能
企业信息 企业名称/城市/联系人/发薪频率/退休提醒开关
用户管理 管理端用户 CRUD + 角色分配(ADMIN/HR/VIEWER
套餐 当前套餐 + 升级
通知设置 合同到期/未签/加班/工资条提醒 + 月度提醒日 + 微信 Webhook + 邮件
数据导入 Excel 上传 + 身份证校验 + 社保基数校验
数据导出 模块选择 + 格式选择 + 脱敏选项

4.4 员工端页面(5 个)

页面 行数 功能
PortalLogin.tsx 5276B 密码登录 + 验证码登录
Payslip.tsx 7714B 当月工资条 + 6 个月历史 + 确认已阅
MyContract.tsx 5769B 查看合同详情 + 电子签确认
Onboarding.tsx 8461B 入职信息填报 + 文件上传(身份证/银行卡/学历等)
ContractConfirm.tsx 6570B 合同电子签署确认(验证码 + 证据链)

4.5 自定义 Hooks

Hook 用途
useDebouncedValue 搜索防抖(300ms
useUnsavedChanges 未保存变更检测 + 离开提示
useConfirm 二次确认对话框

4.6 UI 组件库(9 个)

组件 说明
Button 按钮组件(variant: primary/secondary/danger/ghost
Card 卡片容器
Input 输入框 + Label + Select
Modal 模态对话框
Pagination 分页组件
EmptyState 空状态占位
Skeleton 骨架屏加载
Signal 信号指示器
ConfirmDialog 确认对话框

五、已实现功能清单

5.1 核心业务功能

模块 功能点 实现状态
认证 手机号注册/登录/JWT 双 Token/自动刷新
认证 员工端密码登录 + 验证码登录
仪表盘 风险自动检测 + 待办列表 + 批量操作
仪表盘 人力成本统计(月度/年度)
仪表盘 合同到期预警
仪表盘 月度活动统计
花名册 员工 CRUD + AES 加密敏感字段
花名册 身份证号校验 + 自动提取出生日期/性别
花名册 合同管理(签订/续签/电子签链接)
花名册 违纪记录 + 考勤记录 + 培训记录 + 绩效记录
花名册 薪酬变更记录(版本化)
花名册 部门变更记录(版本化)
花名册 附件管理
花名册 入职链接生成 + 员工自助填报
花名册 合同确认链接 + 验证码签署 + 证据链
薪税 工资批次管理(4 种类型)
薪税 批次复制上月 / 空白 / 指定批次
薪税 薪酬模版(预置 + 自定义 + 公式计算)
薪税 加班费计算(3 种倍率)
薪税 社保/公积金/个税自动计算
薪税 工资条生成 + 发布到员工端
薪税 工资条确认追踪(IP + 时间戳)
薪税 累计预扣法个税计算
薪税 批次归档锁定
薪税 薪酬风险提示
社保 社保配置(按城市 + 版本化)
社保 公积金配置(按城市 + 版本化)
社保 员工社保/公积金记录(版本化时间轴)
社保 月度办理(增减员 + 在保人员 + 缴费明细 + 快照)
社保 基数调整(批量更新)
解聘 6 步解聘向导
解聘 7 种解聘原因 + 动态合规检查清单
解聘 系统自动判断(医疗期/培训记录)
解聘 风险评估(孕期/工伤/医疗期)
解聘 补偿金计算(N/N+1/2N)+ 分项明细
解聘 工作交接清单
解聘 审批流(草稿→待审批→审批→执行→完成)
解聘 撤回(未到日期可撤回)
解聘 PDF 解聘通知书导出
解聘 员工主动离职流程
AI 智能问答(SSE 流式 + RAG 检索 + 企业上下文)
AI 合同审查(结构化风险项 + 合规评分)
AI 案例匹配(相似案例 + 败诉风险)
AI 风险预测(SSE 流式 + Markdown 表格)
AI 历史会话管理
AI 用量控制(按套餐限制)
AI 案例转待办
设置 企业信息管理
设置 用户管理(CRUD + 角色)
设置 通知设置(多渠道 + 月度提醒日)
设置 退休政策管理(AI 解析 + 用户确认 + 版本管理)
设置 退休提醒(渐进式延迟退休计算)
数据 Excel 批量导入(身份证校验 + 社保基数校验)
数据 数据导出(JSON/Excel + 脱敏 + gzip
员工端 工资条查看 + 确认
员工端 合同查看 + 电子签确认
员工端 入职自助填报 + 文件上传

5.2 技术能力清单

能力 实现
多租户隔离 orgId 贯穿所有查询
JWT 双 Token accessToken + refreshToken + 自动刷新
AES-256 加密 薪资/身份证/银行账号
SHA-256 哈希 身份证号查重
API 限流 express-rate-limit
安全 HTTP 头 helmet
SSE 流式 AI 对话 + 风险预测
RAG 向量检索 pgvector + ivfflat + cosine 距离
审计日志 AuditLog(操作/实体/详情/IP
操作确认 useConfirm Hook + ConfirmDialog
搜索防抖 useDebouncedValue
未保存检测 useUnsavedChanges
懒加载 React.lazy + Suspense
骨架屏 Skeleton 组件
响应式 md:hidden 移动端 Tab
批量操作 待办批量 resolve/ignore
版本化数据 社保/公积金/薪酬/部门变更
状态机 解聘流程 7 状态
事务处理 解聘创建事务
数据脱敏 导出时身份证/银行账号脱敏
身份证校验 18 位校验位算法 + 15 位升级
渐进式延迟退休 2025 改革算法

六、与 HTML 原型的功能差距分析

原型页面 React 实现 差距说明
风险驾驶舱 Dashboard.tsx 原型有 SVG 环形评分 + AI 建议卡片流 + 业务流程入口,React 版偏重统计卡片
白小侠 AI 对话 AIAssistant (chat) 基本对应,原型有转专家/约律师功能未实现
判赔预测器 AIAssistant (predict) 原型有 12 场景选择 + 三档方案卡片,React 版为 AI 自由文本输出
文件 AI 审查 AIAssistant (review) 原型有左右分栏 + 原文高亮 + 一键采纳,React 版为文本输入 + AI 文本输出
全员风险地图 Roster.tsx 花名册已实现,但无 7 维仲裁风险评分 + 风险标签
个人风险档案 Roster.tsx (详情) 员工详情已实现,但无 7 维评分趋势图 + 修复路径
年度 AI 价值报告 未实现
合规中心 未独立实现(功能分散在各页面)
电子签中心 未独立实现(合同确认链接已实现,但无独立管理页)
申请草稿/已发申请 未实现
入职管理 Roster.tsx 通过入职链接实现
合同管理 Roster.tsx (合同 Tab) 集成在花名册
考勤确认 Roster.tsx (考勤 Tab) 考勤记录已实现,但无员工端确认流程
工资条发布 Money.tsx (payslip) 已实现
规章制度民主程序 未实现
企业文本库 未实现
用工文本模板库 未实现
用工体检诊断 未实现
背景调查 未实现
视频中心 未实现
五险一金计算器 SocialInsurance.tsx 社保配置已实现,但无独立计算器工具
医疗期计算器 未实现
通知管理 Settings.tsx (通知设置) 通知设置已实现,但无独立通知管理页
用户管理 Settings.tsx (用户管理) 已实现
系统日志 未实现(AuditLog 有数据但无前端页面)

七、系统架构亮点与不足

7.1 亮点

  1. AI 深度集成:RAG 知识库 + 企业上下文注入 + SSE 流式输出,AI 不是简单聊天而是结合企业实际数据
  2. 风险自动检测引擎:每次访问 Dashboard 自动检测合同/入职/解聘/月度任务风险,去重写入待办
  3. 版本化数据设计:社保/公积金/薪酬/部门变更全部版本化,支持时间轴追溯
  4. 解联合规引擎:7 种解聘原因 × 动态合规清单 × 系统自动判断 × 风险评估 × 状态机审批流
  5. 敏感数据加密AES-256-CBC 加密薪资/身份证/银行账号 + SHA-256 哈希索引
  6. 员工端自助:入职填报 + 合同电子签 + 工资条查看,token 链接 + 验证码 + 证据链
  7. 渐进式延迟退休:精确实现 2025 年改革算法(男 60→63 / 女干部 55→58 / 女工人 50→55

7.2 不足

  1. 原型差距大:26 个页面模块仅实现约 60%,合规中心/电子签中心/民主程序/文本库/背景调查/视频中心等未实现
  2. AI 审查交互弱:原型有左右分栏 + 原文高亮 + 一键采纳,React 版仅为文本输入输出
  3. 判赔预测简化:原型有 12 场景选择 + 三档方案卡片 + 金额区间,React 版为 AI 自由文本
  4. 无风险评分体系:原型有 78 分健康度 + 5 维评分 + 7 维员工风险评分,React 版仅有高/中/低三级
  5. AuditLog 无前端:有审计日志数据模型但无系统日志查看页面
  6. 通知无独立管理:通知设置已实现但通知列表/已读管理未独立建页
  7. Roster.tsx 过大3840 行单文件,应拆分为子组件
  8. 验证码内存存储codeStore = new Map() 生产环境应使用 Redis