Files
nexus/Project/fonrey/PRD/组织人事管理/组织人事管理模块PRD.md
2026-04-30 20:33:51 +08:00

38 KiB
Raw Permalink Blame History

PRD: 组织人事管理模块

状态: Draft
作者: 产品经理
最后更新: 2026-04-24v1.2 移除技术实现章节,该部分由独立 DATA_MODEL 文档承载)
版本: 1.2
所属系统: Fonrey 房产经纪管理系统
关联模块: 权限管理、房源管理、客源管理、系统设置

变更历史

版本 日期 作者 变更说明
v1.0 产品经理 初稿
v1.1 产品经理 (详见 git 历史)
v1.2 2026-04-24 产品经理 移除技术实现章节,该部分由独立 DATA_MODEL 文档承载

1. 问题陈述

背景

房产经纪公司普遍存在多层级组织架构(总部 → 事业部 → 大区 → 区域 → 片区 → 门店 → 店组人员流动性极高入职、离职、调岗、复职频繁。传统管理方式纸质档案、Excel导致以下核心痛点

  • 组织信息不透明:架构变更无法实时同步,各部门人员情况只有 HR 知晓,业务管理层无法自助查看当前组织全貌
  • 人员异动追踪困难:调岗、离职、复职等操作缺乏系统记录,无法事后审计,纠纷时无据可查
  • 权限与身份管理混乱:系统账号与员工档案分离管理,账号状态变更(冻结/启用)不能与人事异动联动
  • 实名认证合规风险:房产经纪行业受监管,经纪人身份证信息需与公安系统比对,手工管理容易遗漏,产生合规风险
  • 通讯录维护成本高:员工联系方式散落在微信群、纸质通讯录,新人入职、老员工离职后无法快速更新
  • 跨端口账号管理复杂:经纪人同时使用 58 安居客、中国网络经纪人等第三方平台,账号绑定状态需统一管理

目标用户

角色 描述 使用频率
Tenant Admin租户管理员 / Tenant Admin租户管理员 负责新增/编辑部门、办理员工入职/离职/调岗,维护账号状态与证件信息 每日
店长 / 区域经理 查看本部门组织架构、员工列表,发起入职邀请 每日
Agent经纪人 查看同事联系方式(通讯录),查看自己的档案信息 按需
公司管理层 通过架构图了解全公司组织结构,监控人员异动动态 按需

2. 目标与成功指标

目标 指标 当前基准 目标值 衡量周期
提升人事操作效率 完成一次员工入职录入耗时 约 15 分钟(估算) < 5 分钟 上线后 60 天
降低合规风险 实名未认证 / 证件不匹配员工数量 待统计 0 持续
提升组织透明度 管理层查阅组织架构的操作路径步骤数 待统计 ≤ 2 步触达架构图 上线后 30 天
降低异动追踪成本 异动记录查询耗时 约 30 分钟(估算) < 1 分钟 上线后 60 天
提升账号管理效率 账号冻结/启用操作耗时 待统计 < 30 秒 上线后 60 天

3. 非目标(本期不做)

  • 不包含薪酬管理、绩效考核、排班管理等 HR 深度功能(后续 OA 模块规划)
  • 不包含招聘管理(简历库、面试流程)
  • 不包含移动端 App本期为 Web 端,移动端适配为 v2 规划)
  • 不包含合同电子签署(合同模块另行规划)
  • 不包含考勤打卡系统集成
  • 不包含组织架构图的直接编辑(仅展示,编辑通过部门管理页操作)

4. 用户故事与验收标准

说明:以下用户故事按核心业务流程顺序排列,覆盖组织人事管理模块「组织结构」子模块的全部核心功能。


Story 1管理员查看组织人员列表

As Tenant Admin租户管理员/店长,I want 在组织结构页面查看公司所有部门及其员工信息,So that 能快速掌握当前人员分布并进行管理操作。

验收标准

  • 页面入口路径顶部导航「人事」→「组织人事」→「组织结构」面包屑显示「人事OA / 组织人事 / 组织结构」
  • 页面包含两个视图 Tab「组织结构」默认选中和「部门架构图」Tab 切换无需刷新页面
  • 左侧展示部门树形列表,包含:「+ 新增部门」按钮、部门搜索框、「显示已关闭部门」复选框、公司名称(根节点)及各子部门节点(显示员工人数)
  • 点击部门节点后,右侧展示该部门及其下级部门员工列表(可通过「显示下属部门员工」下拉切换)
  • 右上角显示全局系统提示(账号数量上限、实名认证不匹配人数等),提示可点击「立即筛选数据」跳转至对应筛选结果
  • 页面右上角有「员工入黑名单」快捷操作入口
  • 员工列表支持多条件筛选:姓名/工号/电话(文本搜索)、职务(下拉选择)、职务类别(全选/单选)、员工状态(下拉,含已选 N 个计数、审批状态下拉、冻结状态全选、登录账号全选、Tenant Admin租户管理员请选择、入职时间日期范围、离职时间日期范围、显示下属部门员工显示/隐藏)、部门级别(全选)、证件状态(不限)、证件号搜索
  • 点击「查询」按钮执行筛选,点击「清空条件」重置所有筛选项
  • 员工列表支持批量操作:勾选复选框后,可执行「批量调动员工」「批量设置员工上级」,通过「更多」下拉展开更多批量操作
  • 列表操作区包含:「新增员工」(主按钮,带下拉箭头)、「导出员工」、「批量调动员工」、「批量设置员工上级」、「更多」、「员工异动记录」(链接)
  • 员工列表展示列:复选框、头像+姓名/昵称、员工工号、职务、部门、部门级别、上级、电话(脱敏显示,带信息图标)、入职时间、审批状态、操作列(查看 / 异动 / 更多)
  • 异动记录状态(如「入职审」)展示在审批状态列
  • 员工头像旁若有合规风险(如证件不匹配)展示红色警告图标
  • 列表底部分页:显示「共 X 条 上一页 [当前页] 下一页 20 条/页 跳至 [页] 确定」
  • 列表支持水平滚动以展示更多列

Story 2管理员新增部门

As Tenant Admin租户管理员I want 新增一个业务部门并配置其基本信息,So that 新部门能纳入组织架构并支持员工归属。

验收标准

  • 点击左侧「+ 新增部门」按钮跳转至「部门新增」页面面包屑显示「人事OA / 组织人事 / 组织结构 / 部门新增」
  • 页面顶部展示业务规则提示(蓝色信息框):
      1. 店组级别部门必须挂在门店下;
      1. 经纪人/店管的所属部门只能是门店/店组;
      1. 经纪人是职务类别为置业顾问的员工;
  • 「部门基本信息」区块包含以下字段:
    • 部门名称(必填,文本输入)
    • 上级部门(必填,关联选择,默认预填为当前登录公司名称,可通过 X 清除并重新选择)
    • 部门级别(必填,单选:事业部 / 大区 / 区域 / 片区 / 门店 / 店组 / 职能)
    • 部门地址(选填,城市下拉 + 县区下拉 + 详细地址文本输入,三段式)
    • 部门坐标(选填,点击「坐标」链接打开地图选点,坐标图标为橙色定位针)
    • 部门负责人(选填,员工关联下拉选择)
    • 成立时间(选填,日期选择器)
    • 部门电话(选填,文本输入)
    • 分机范围(选填,起始分机号 - 结束分机号,两个数字输入框)
  • 底部操作按钮:「保存」(主按钮,橙色)、「取消」(次级按钮)
  • 点击「保存」时校验所有必填字段,未填写时高亮红色错误提示
  • 保存成功后返回组织结构列表并展示成功提示
  • 点击「取消」返回组织结构列表,不保存数据

Story 3管理员编辑部门信息

As Tenant Admin租户管理员I want 编辑已有部门的基本信息,So that 组织信息保持最新准确状态。

验收标准

  • 通过部门详情页右上角「编辑」按钮进入「部门编辑」页面面包屑显示「人事OA / 组织人事 / 组织结构 / 部门编辑」
  • 编辑页面包含新增页面的全部字段,且已预填当前部门信息
  • 编辑页面额外包含以下字段(新增页不含):
    • 部门属性(必填,单选:直营 / 加盟)
    • 部门状态(单选:启用 / 关闭)
    • 部门关联人员区块(显示该部门的关联人员列表,右上角有「添加人员」操作链接)
  • 部门级别、上级部门修改后若违反业务规则(如店组不在门店下),保存时应提示错误
  • 底部操作按钮:「保存」「取消」,行为与新增页一致
  • 保存成功后返回该部门详情页并展示成功提示

Story 4查看部门详情

As 管理员/店长,I want 查看某个部门的完整信息,So that 能快速了解部门基本情况及关联人员。

验收标准

  • 点击左侧部门树节点进入部门详情页标题显示部门名称面包屑显示「人事OA / 组织人事 / 组织结构 / 部门详情」
  • 页面右上角操作按钮:「入职邀请」(次级按钮)、「编辑」(主按钮,橙色)
  • 「部门基本信息」区块展示:部门名称、上级部门、部门级别、部门属性(直营/加盟)、部门地址、部门坐标、部门负责人、成立时间、部门电话、分机范围、部门状态
  • 无内容的字段显示「-」占位
  • 「部门关联人员」区块展示该部门配置的关联人员列表,无关联人员时显示「暂无部门关联人员」空态

Story 5查看部门架构图

As 管理层/店长,I want 以可视化树状图方式查看公司完整组织架构,So that 能直观了解层级关系和各部门人员规模。

验收标准

  • 点击「部门架构图」Tab 切换至架构图视图,与「组织结构」列表视图共用顶部 Tab
  • 架构图以树状结构展示,根节点为公司名称(显示总人数),向下展开各级部门节点
  • 每个部门节点卡片展示:部门名称、部门级别标签(如「事业部」标签,蓝色)、部门负责人(未设置时显示「未设置部门负责人」)、部门人数、直属下级数量
  • 部门级别标签颜色区分显示(如:事业部-蓝色、职能-蓝色,不同级别可配置不同颜色)
  • 架构图支持交互操作:
    • 点击节点上的展开/折叠图标(「○」)收起/展开子部门
    • 缩放:支持放大(+)、缩小(-)、适应窗口(自适应按钮)、重置(刷新按钮)
    • 下载:支持导出架构图为图片
  • 右上角工具栏放大、下载、缩小、适应、重置5 个图标按钮)
  • 顶部筛选:「部门」下拉选择(可指定从某部门开始展示)、「显示已关闭部门」复选框
  • 提示文字:「最多 8 个层级数量,可对下图进行拖拽/缩放操作」
  • 架构图支持拖拽画布(平移视图)

Story 6查看员工详情 - 员工基本信息

As Tenant Admin租户管理员I want 查看某员工的完整档案信息,So that 能全面了解员工的任职、个人、来源等情况。

验收标准

  • 点击员工列表的「查看」操作进入员工详情页,页面标题显示「[部门名称] [员工姓名]」面包屑显示「人事OA / 组织人事 / 组织结构 / 员工详情」

  • 左侧边栏展示员工卡片:头像、姓名、所属部门、职务标签、工号;下方为详情导航菜单(员工基本信息 / 奖惩记录 / 异动记录 / 账号信息 / 员工相关资料)

  • 「员工基本信息」Tab 包含「编辑」按钮(右上角,橙色),内容分为以下区块:

    任职信息区块

    • 昵称、工号(并排双列)
    • 首次入职日期、工龄如「44天」并排
    • 复职日期、离职日期(并排)
    • 入职次数、状态(正式/试用等)(并排)
    • 行业经验、师傅(并排)
    • 业务类型、职务(并排)
    • 部门、职务类别(并排)
    • 部门级别、角色(并排)
    • 职级、银行名称(并排)
    • 直属上级、联号(并排)
    • 开户行、银行卡号

    联系方式区块

    • 「查看员工电话」操作链接(权限控制,非授权角色不可见完整号码)
    • 手机号(脱敏显示,如 159******96
    • 通讯录号码(显示「不隐藏」或「隐藏」状态)

    个人信息区块

    • 「查看员工隐私信息」操作链接(权限控制)
    • 真实姓名、证件类型(并排)
    • 性别、证件号码(并排,证件号脱敏,后跟「已认证」绿色标签或「未认证」状态)
    • 籍贯、出生日期(并排)
    • 户籍性质、婚姻状况(并排)
    • 政治面貌、有无子女(并排)
    • 最高学历、紧急联系人(并排)
    • 民族、紧急联系人电话(并排)
    • 户口所在地、参加工作时间(并排)
    • 住址

    来源信息区块

    • 招聘人、招聘来源(并排)
    • 转介人

    备注区块:表格展示(添加时间 + 备注内容),空时显示「暂无数据」

    工作经历区块:表格展示(任职时间 / 单位名称 / 担任职务 / 离职原因 / 证明人 / 证明人电话),空时显示「暂无数据」

    教育经历区块:表格展示(阶段 / 时间段 / 学校名称 / 专业 / 学籍状态 / 学位),空时显示「暂无数据」

    培训经历区块:表格展示(培训时间 / 培训名称 / 获取证书),空时显示「暂无数据」

    家庭主要成员区块:表格展示(称谓 / 姓名 / 出生日期 / 职业 / 工作单位 / 联系方式),空时显示「暂无数据」


Story 7查看员工详情 - 异动记录

As Tenant Admin租户管理员I want 在员工详情页查看该员工的所有人事异动历史,So that 能追溯员工入职、调岗、上级变动等完整轨迹。

验收标准

  • 在员工详情页左侧导航点击「异动记录」切换至异动记录 Tab
  • 异动记录以表格形式展示,列为:异动时间 / 操作时间 / 类别 / 旧(变动前值)/ 新(变动后值)/ 备注 / 操作人
  • 异动类别枚举包含(不限于):入职、上级变动、员工调动、离职、复职
  • 表格按异动时间倒序排列,最新记录在首行
  • 旧/新字段为空时显示空白(不显示「-」),有值时直接展示变动的内容值
  • 操作人格式为「姓名 - 所属部门」(如「金怡 - 都市港湾店」)
  • 异动记录为只读,无编辑入口

Story 8查看员工详情 - 账号信息

As Tenant Admin租户管理员/Tenant Admin租户管理员I want 在员工详情页查看和管理该员工的系统账号及第三方平台账号,So that 能统一管理员工的登录凭证和外部账号绑定状态。

验收标准

  • 在员工详情页左侧导航点击「账号信息」切换至账号信息 Tab

  • 「员工登录系统账号信息」区块,包含两个子区块:

    登录账号区块

    • 账号手机号后跟「登录账号」绿色标签提示文字「此账号也可登录58安居客经纪人」
    • 手机号完整显示提示文字「若此手机号无法收到验证码请到58安居客经纪人修改」
    • 账号状态(单选:启用 / 冻结,当前状态高亮显示)

    原登录账号区块

    • 账号(显示格式:「[部门名称] [员工姓名]」)
    • 密码(密文输入框,可修改)
    • 确认密码(密文输入框)

    微信公众号区块

    • 绑定情况(显示「已绑定」/「未绑定」)
  • 「中国网络经纪人账号」区块:

    • 以表格形式展示:账号 / 手机号 / 实名信息是否一致
    • 账号后显示「登录账号」绿色标签和「跳转中国网络经纪人后台账号」操作链接
    • 实名信息一致性显示「一致」/「不一致」
  • 账号状态变更(启用 ↔ 冻结)操作即时生效,无需额外保存步骤

  • 密码修改需两次输入一致才能保存,不一致时提示错误


Story 9查看员工通讯录

As 经纪人/员工,I want 查看公司所有同事的联系方式,So that 能快速找到需要联系的同事并拨打电话。

验收标准

  • 通讯录页面入口顶部导航「人事」→「组织人事」→「员工通讯录」或通过标签页打开面包屑显示「人事OA / 组织人事 / 员工通讯录」
  • 顶部筛选区:部门(下拉选择)、职务(下拉选择)、生日(不限/本月生日等选项)、关键字(姓名/电话/分机/邮件文本搜索);「查询」(橙色按钮)、「清除条件」(链接)
  • 通讯录以列表形式展示,列为:部门 / 姓名(含头像)/ 职务 / 性别 / 生日(月-日格式如「10-02」/ 电话(脱敏 + 「拨打」操作链接 + 「查看号码」链接)/ 分机 / 邮箱
  • 电话列显示脱敏号码(如 159******96同时提供「拨打」和「查看号码」两个操作
    • 「拨打」点击后触发拨号动作(浏览器 tel: 协议或系统拨号)
    • 「查看号码」需要有对应权限,授权后展示完整手机号
  • 生日列仅显示月日(不含年份),用于保护隐私同时支持生日提醒功能
  • 通讯录支持分页,底部展示分页控件
  • 无分机、邮箱时显示「-」

Story 10查看组织员工异动记录全局视图

As Tenant Admin租户管理员I want 在组织结构模块查看全公司所有员工的异动记录汇总,So that 能统一审计和追踪所有人事变动。

验收标准

  • 异动记录入口组织结构员工列表页右上角「员工异动记录」链接跳转至异动记录汇总页面包屑显示「人事OA / 组织人事 / 组织结构 / 异动记录」
  • 页面标题:「异动记录」
  • 顶部筛选区:类型(下拉,请选择类型)、日期范围(起止日期选择器)、部门(下拉,请选择部门)、操作人(下拉,请选择)、搜索关键字(姓名/员工编号文本输入)、备注(文本输入);「查询」(橙色按钮)、「清空条件」(链接)
  • 操作区:「新增异动记录」按钮、「报表导出」按钮
  • 异动记录表格列:当前部门 / 员工 / 员工编号 / 员工状态 / 当前职务 / 类型 / 旧(变动前)/ 新(变动后)/ 备注 / 操作人 / 异动时间 / 操作时间
  • 类型枚举包含(不限于):入职、上级变动、员工调动、离职、复职
  • 旧/新字段:无值时显示「-」
  • 操作人格式为「所属部门 - 姓名」(如「都市港湾店 - 金怡」)
  • 分页:「共 X 条 上一页 [N] 下一页 [页码列表] 20 条/页 跳至 [页] 确定」(支持大数据量,示例图显示 575 条29 页)
  • 「新增异动记录」功能:支持手动录入异动记录(字段与表格列对应),保存后记录追加至列表
  • 「报表导出」:异步导出当前筛选条件下的异动记录为 Excel触发后显示「正在导出请稍候」提示完成后可下载

Story 11员工离职操作

As Tenant Admin租户管理员/店长,I want 在组织结构员工列表中对在职员工发起离职操作,So that 员工状态及时变更为「离职」,并触发业务数据的归属处理流程。

验收标准

  • 离职操作入口员工列表行右侧「异动」下拉菜单中点击「离职」弹出「员工离职」对话框Modal 形式,背景遮罩,不跳转页面)
  • 对话框标题:「员工离职」,右上角有「×」关闭按钮
  • 对话框顶部展示该员工业务信息统计
    • 房源数量564
    • 客源数量21
    • 营销客数量3
    • 数据以「标签 + 数值」形式并排展示,帮助操作人了解离职影响范围
  • 对话框中部展示红色警示提示文字:「注:若不转给任何账号,则离职成功后业务信息仍属于该离职员工 转移业务归属」,其中「转移业务归属」为可点击的操作链接(跳转至业务归属转移页面)
  • 表单字段(全部必填):
    • 离职日期(必填,日期选择器,默认空)
    • 离职类型(必填,下拉选择,枚举由运营维护,如:自离、协商离职、辞退等)
    • 备注选填多行文本输入框占位符「50字以内」
  • 底部操作按钮:「确定」(橙色主按钮)、「取消」(次级按钮)
  • 点击「确定」时校验必填字段:离职日期、离职类型均未填时拦截提交并高亮错误提示
  • 离职操作成功后:
    • 员工状态变更为「离职」
    • 在员工异动记录中自动生成一条类型为「离职」的异动记录,记录离职日期、离职类型、备注及操作人
    • 员工列表中该员工行状态更新,不再计入在职账号数
    • 展示「操作成功」Toast 提示
  • 点击「取消」或「×」关闭对话框,不执行任何操作
  • 离职操作需有权限控制,非授权角色不显示「离职」操作入口

Story 12员工调动操作

As Tenant Admin租户管理员I want 通过右侧抽屉面板对员工发起调动操作并修改其部门、上级、职务等信息,So that 员工的组织归属变更即时生效并留下完整的调动记录。

验收标准

  • 调动操作入口:员工列表行右侧「异动」下拉菜单中点击「调动」,从页面右侧滑出「员工调动」抽屉面板(不跳转页面,背景列表可见但交互禁用)

  • 抽屉面板标题:「员工调动」,显示被调动员工姓名(如「周炜 的业务信息统计」)

  • 抽屉顶部展示该员工业务信息统计

    • 房源数量13
    • 红色警示提示文字:「注:若不转给任何账号,则业务信息跟随到新部门 转移业务归属」,「转移业务归属」为可点击操作链接
  • 表单采用「调动前 → 调动后」双列对比布局,左列为「调动前」(只读展示当前值),右列为「调动后」(可编辑):

    字段 必填 调动前(只读) 调动后(可编辑)
    调动日期 必填 日期选择器,默认今日
    分类 文本说明(如「此次调动为:平调」,系统自动判断)
    部门 必填 当前部门(如「上海豪园店二组」) 部门选择器(带清除按钮 ○)
    部门级别 当前部门级别(如「店组」) 自动跟随部门联动,只读
    职务 必填 当前职务(如「高级业务员」) 职务下拉选择器
    职务类别 当前职务类别(如「置业顾问」) 自动跟随职务联动,只读
    职级 当前职级如「3」 数字输入框
    员工状态 当前状态(如「正式」) 状态下拉选择器
    角色 必填 当前角色(如「高级业务员」) 角色多选选择器(支持添加多个角色标签)
    直属上级 必填 当前上级(如「刘文龙」) 员工选择器(格式「部门-姓名」,如「上海豪园店二组-刘文龙 ○」)+ 「无直属上级」复选项
    直属下级 当前下级 「+ 添加该员工工直属下级」操作链接
  • 调动日期说明文字:「若日期为今日之前的日期,若当天有已提交的日报,当天之后的日报将进行调动」

  • 调动分类由系统根据调动前后部门级别自动判断:同级调动显示「平调」,晋升显示「晋升」,降职显示「降职」

  • 备注字段选填多行文本提示「备注内容不超过30个字符」字数实时计数

  • 底部操作按钮:「提交」(橙色主按钮)、「取消」(次级按钮),按钮固定在抽屉底部

  • 点击「提交」校验必填字段,未填写时在对应字段旁展示红色错误提示

  • 调动成功后:

    • 员工部门、上级、职务等信息即时更新
    • 自动生成异动记录,类型为「员工调动」,记录调动前/后各字段变化值、调动日期、备注及操作人
    • 关闭抽屉列表数据刷新展示「操作成功」Toast 提示
  • 点击「取消」或抽屉外部区域关闭抽屉,不执行操作


Story 13查看员工奖惩记录

As Tenant Admin租户管理员/店长,I want 在员工详情页查看该员工的所有奖惩记录,So that 能了解员工的奖励与处罚历史,作为绩效管理和晋升的参考依据。

验收标准

  • 在员工详情页左侧导航点击「奖惩记录」切换至奖惩记录 Tab当前选中项高亮橙色文字 + 左侧橙色指示条)
  • 页面右上角有「新增」按钮(橙色),用于发起新增奖惩记录操作
  • 奖惩记录以表格形式展示,列为:日期 / 奖惩类别 / 奖惩名称 / 备注 / 操作
  • 无记录时表格内展示空态文字「暂无数据」,居中显示
  • 操作列包含每条记录的「编辑」和「删除」操作(具体操作入口待补充截图确认)
  • 表格按日期倒序排列,最新记录在首行

Story 14新增员工奖惩记录

As Tenant Admin租户管理员I want 在员工奖惩记录页面新增一条奖惩记录,So that 员工的奖励或处罚情况被系统留档,可追溯查询。

验收标准

  • 点击奖惩记录页面右上角「新增」按钮弹出「新增奖惩记录」对话框Modal 形式,标题「新增奖惩记录」,右上角有「×」关闭按钮)
  • 对话框表单字段:
    • 奖惩日期必填日期选择器默认填充当日日期如「2026-04-24」可修改
    • 奖惩类别(必填,下拉选择器,枚举值由系统/运营维护,区分奖励类与惩戒类)
    • 奖惩名称(必填,下拉选择器,与奖惩类别存在联动关系,选择类别后名称列表随之过滤)
    • 备注(选填,多行文本输入框,占位符「请输入备注」)
  • 必填字段均标有红色「*」前缀标识
  • 底部操作按钮:「确定」(橙色主按钮)、「取消」(次级按钮)
  • 点击「确定」时校验所有必填字段,未填写时在字段下方展示红色错误提示,阻止提交
  • 保存成功后:
    • 对话框关闭
    • 奖惩记录列表中新增该条记录
    • 展示「保存成功」Toast 提示
  • 点击「取消」或「×」关闭对话框,不保存任何数据

5. 解决方案概述

5.1 整体架构

组织人事管理模块人事OA作为 Fonrey 系统的组织底座,承担三大核心职责:

  1. 组织结构维护:多层级部门树管理(最多 8 层),支持直营/加盟属性区分
  2. 员工档案管理:员工入职到离职的完整生命周期档案,含任职信息、个人信息、账号信息
  3. 人事异动追踪:所有人事变动自动记录异动日志,支持全局汇总查询与个人维度查询

5.2 部门层级模型

系统支持以下部门级别(按层级从高到低):

级别 说明 约束规则
事业部 最高业务单元 挂在公司根节点下
大区 跨城市/跨区域管理单元
区域 区域管理层
片区 片区管理层
门店 独立经营单元(实体店铺) 经纪人/店管只能归属此级或下级
店组 门店下的小组 必须挂在门店下
职能 后台支撑部门(行政/财务等)

业务约束规则

  • 店组级别部门必须挂在门店下
  • 经纪人/店管的所属部门只能是门店/店组
  • 经纪人是职务类别为「置业顾问」的员工

5.3 员工档案结构

员工档案分五大模块通过左侧导航访问:

员工详情
├── 员工基本信息(任职信息 / 联系方式 / 个人信息 / 来源信息 / 备注 / 工作经历 / 教育经历 / 培训经历 / 家庭主要成员)
├── 奖惩记录
├── 异动记录
├── 账号信息(系统登录账号 / 原登录账号 / 微信公众号 / 中国网络经纪人账号)
└── 员工相关资料

5.4 账号体系设计

员工账号与多个平台关联:

账号类型 说明
系统登录账号 Fonrey 系统主账号,以手机号为账号,支持启用/冻结
原登录账号 系统内部账号(部门+姓名格式),支持密码设置
微信公众号 绑定公众号用于消息通知,显示绑定状态
58安居客经纪人 系统账号同时可登录 58 安居客平台
中国网络经纪人 显示绑定账号及实名一致性状态,提供跳转链接

5.5 数据脱敏策略

数据类型 默认展示 授权后展示
手机号 159******96 15901850696
证件号码 410**********3037 完整号码
通讯录号码 脱敏显示 点击「查看号码」后展示

6. 技术考量

6.1 依赖关系

系统/模块 依赖原因 优先级风险
登录管理模块 员工账号的创建、冻结、密码重置由登录模块提供接口
权限管理模块 员工的角色/权限分配在人事模块发起,权限模块执行
系统配置模块 职务类别、部门级别、奖惩类型等枚举值从系统配置读取

6.2 核心技术设计

6.2.1 组织树存储方案

采用 Closure Table闭包表 存储多层级部门树,最大支持 8 层嵌套:

方案 优点 缺点 选用理由
Adjacency List 写入简单 递归查询慢,需多次 SQL 不适合 8 层嵌套
Nested Set 读取极快 写入时需重排序,高并发写冲突大 人事模块写入频繁
Closure Table 读写均衡,查询任意层级 O(1) 存储量略多 选用

数据结构

class OrgUnit(TenantModel):  # 部门节点
    id = UUIDField(primary_key=True)
    name = CharField(max_length=100)
    level = CharField(choices=['事业部','大区','区域','片区','门店','店组','职能'])
    parent = ForeignKey('self', null=True, on_delete=PROTECT)  # 直接父节点
    is_direct = BooleanField(default=True)  # True=直营, False=加盟
    deleted_at = DateTimeField(null=True)

class OrgUnitClosure(TenantModel):  # 闭包表
    ancestor = ForeignKey(OrgUnit, related_name='descendants')
    descendant = ForeignKey(OrgUnit, related_name='ancestors')
    depth = IntegerField()  # 0=自身, 1=子, 2=孙...

查询示例

  • 查某节点所有子孙:WHERE ancestor_id = X AND depth > 0
  • 查某节点完整路径:WHERE descendant_id = X ORDER BY depth DESC
  • 移动节点:删除旧闭包记录 + 插入新闭包记录(事务内执行)

6.2.2 员工状态机

员工在系统内的状态须通过后端状态机严格控制:

[录入] ──► 试用期 ──► 正式 ──► 离职
               │              │
               └──────────────┘
                    复职
                     │
                     ▼
               试用期 / 正式(恢复上次状态)
状态 允许流转目标 触发方式
试用期 正式、离职 管理员手动操作
正式 离职 管理员手动操作
离职 复职 管理员手动操作
冻结 启用(需先恢复员工状态) 账号冻结操作

实现要求

  • 每次状态变更写入 StaffChangeLog(异动记录表),字段包含:变更人、变更类型、变更前后值、变更时间、备注
  • 员工离职时,系统自动:① 冻结关联登录账号 ② 解除权限角色 ③ 归属客源触发掉公检查
  • 员工状态变更失败返回明确错误码,前端展示友好提示

6.2.3 异动记录审计策略

异动记录为**只追加append-only**设计,不支持修改或删除:

异动类型枚举 触发场景
入职 员工首次录入系统
转正 试用期转为正式员工
调岗 员工所属部门变更
上级变动 直接上级变更
离职 办理离职手续
复职 离职员工重新入职
账号冻结 账号被冻结
账号启用 账号从冻结恢复
class StaffChangeLog(TenantModel):
    staff = ForeignKey(Staff)
    change_type = CharField(choices=[...])  # 见枚举表
    before_value = JSONField(null=True)     # 变更前状态快照
    after_value = JSONField(null=True)      # 变更后状态快照
    operator = ForeignKey(User)
    remark = TextField(blank=True)
    created_at = DateTimeField(auto_now_add=True)
    # 无 updated_at / deleted_at — append-only

6.2.4 敏感数据脱敏

数据 存储方式 展示方式 查看权限
手机号 AES-256-GCM 加密 + SHA-256 哈希索引 159****9696 需「查看员工手机号」权限,留操作日志
证件号码 AES-256-GCM 加密 410***********3037 需「查看员工证件」权限,留操作日志
通讯录号码 AES-256-GCM 加密 脱敏显示 点击「查看号码」后临时展示,留痕

6.3 已知风险

风险 可能性 影响 缓解措施
大型机构部门树深度超过 8 层 前端录入时限制最大深度,超出提示联系运营调整
员工大批量导入时账号创建并发冲突 批量导入走 Celery 异步任务,序列化账号创建
组织调整时历史客源/房源归属关系错乱 员工调岗不改变现有资源归属,仅更新组织关系;业务重新分配由管理员手动操作

6.4 待确认问题

  • 员工工号规则:系统自动生成还是管理员手动填写?格式约定是什么? — 待业务确认 — 开发前必须明确
  • 「复职」时是否复用原有账号?还是重新创建新账号? — 待产品/法务确认
  • 部门移动操作(将某节点及其子树挂到新父节点)是否在 MVP 范围内? — 待产品确认

7. 上线计划

阶段 时间 受众 验收门槛
内部 Alpha 开发完成后 1 周 产品+研发团队 核心流程无 P0 Bug部门 CRUD 功能完整
封闭 Beta Alpha 后 2 周 2-3 家种子客户 HR 错误率 < 5%,员工录入/异动记录功能可用
正式上线 Beta 验收通过后 全量租户 各指标达到第 2 节目标值

回滚标准:若上线后 48 小时内系统错误率超过 2% 或出现员工数据泄露事件,立即回滚并通知所有租户管理员。


8. 附录

8.1 截图来源

截图文件路径 对应功能
screenshots/组织人事/组织结构/公司组织结构.png Story 1 — 组织人员列表页
screenshots/组织人事/组织结构/员工详情.png Story 6 — 员工基本信息详情
screenshots/组织人事/组织结构/员工通讯录.png Story 9 — 员工通讯录
screenshots/组织人事/组织结构/员工详情异动记录.png Story 7 — 员工异动记录(个人维度)
screenshots/组织人事/组织结构/员工详情账号信息.png Story 8 — 员工账号信息
screenshots/组织人事/组织结构/部门新增.png Story 2 — 新增部门
screenshots/组织人事/组织结构/部门编辑.png Story 3 — 编辑部门
screenshots/组织人事/组织结构/部门详情.png Story 4 — 部门详情
screenshots/组织人事/组织结构/组织员工异动记录.png Story 10 — 全局异动记录汇总
screenshots/组织人事/组织结构/部门架构图.png Story 5 — 部门架构图
screenshots/组织人事/组织结构/员工离职.png Story 11 — 员工离职操作Modal 弹窗)
screenshots/组织人事/组织结构/员工调动.png Story 12 — 员工调动操作(右侧抽屉面板)
screenshots/组织人事/组织结构/员工奖惩记录.png Story 13 — 员工奖惩记录列表
screenshots/组织人事/组织结构/员工奖惩记录新增.png Story 14 — 新增奖惩记录Modal 弹窗)

8.2 术语表

术语 定义
异动 员工人事状态变化的统称,包含入职、离职、调岗、复职、上级变动等
店组 门店内的业务小组,是经纪人的最小管理单元
职能部门 非业务线部门,如行政、财务等后台支撑部门
直营 公司直接运营的门店/部门
加盟 加盟商运营的门店/部门
工龄 员工首次入职日期至今的天数,系统自动计算
通讯录号码 员工在通讯录中展示的联系号码,可设置隐藏
中国网络经纪人 国家级房产经纪人实名注册平台,经纪人需在此平台实名认证