unis_crm/docs/business-schema-design.md

14 KiB
Raw Permalink Blame History

CRM业务表设计

1. 设计依据

本设计根据当前前端页面反推业务模型,涉及页面如下:

  • src/pages/Opportunities.tsx:商机储备、商机详情、跟进记录
  • src/pages/Expansion.tsx:销售人员拓展、渠道拓展、跟进记录
  • src/pages/Work.tsx:外勤打卡、日报、历史记录、主管点评
  • src/pages/Profile.tsx:个人资料、统计信息
  • src/pages/Dashboard.tsx:首页统计、待办、动态

当前前端是展示型页面,未接入真实接口,因此以下设计属于“按现有前端信息推导出的第一版业务库设计”。


2. 业务模块拆分

建议按以下模块建表:

  1. 组织与人员
  2. 客户与商机
  3. 拓展管理
  4. 工作管理
  5. 待办与动态(可选增强)

3. 核心实体关系

部门 department
  └─< 用户 user

客户 customer
  └─< 商机 opportunity
         └─< 商机跟进记录 opportunity_followup

用户 user
  └─< 销售拓展 sales_expansion
         └─< 拓展跟进记录 expansion_followup

用户 user
  └─< 渠道拓展 channel_expansion
         └─< 拓展跟进记录 expansion_followup

用户 user
  └─< 外勤打卡 work_checkin
         └─< 打卡附件 work_checkin_attachment

用户 user
  └─< 日报 work_daily_report
         └─< 日报点评 work_daily_report_comment

4. 表设计

4.1 sys_department 部门表

用于承接“华东大区、华北大区”等组织信息。

字段 类型 说明
id bigint PK 主键
dept_code varchar(50) 部门编码
dept_name varchar(100) 部门名称
parent_id bigint 上级部门ID
manager_user_id bigint 部门负责人
status tinyint 1启用 0停用
created_at datetime 创建时间
updated_at datetime 更新时间

4.2 sys_user 用户表

承接“张三、李四、王五”等销售人员,以及个人页中的员工资料。

字段 类型 说明
id bigint PK 主键
user_code varchar(50) 工号/员工编号
username varchar(50) 登录账号
real_name varchar(50) 姓名
mobile varchar(20) 手机号
email varchar(100) 邮箱
dept_id bigint 所属部门
job_title varchar(100) 职位,如高级销售
status tinyint 1在职 0离职
hire_date date 入职日期
avatar_url varchar(255) 头像地址
password_hash varchar(255) 登录密码摘要
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_user_dept_id(dept_id)
  • uk_user_username(username)
  • uk_user_mobile(mobile)

4.3 crm_customer 客户表

来源于商机页面中的“客户名称”,如医院、学校、集团。

字段 类型 说明
id bigint PK 主键
customer_code varchar(50) 客户编码
customer_name varchar(200) 客户名称
customer_type varchar(50) 客户类型,如医院/高校/企业
industry varchar(50) 行业
province varchar(50) 省份
city varchar(50) 城市
address varchar(255) 地址
owner_user_id bigint 当前负责人
source varchar(50) 来源,如渠道推荐/市场活动
status varchar(30) 潜在/跟进中/成交/流失
remark text 备注
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_customer_owner(owner_user_id)
  • idx_customer_name(customer_name)

4.4 crm_opportunity 商机表

这是前端最核心业务表,对应“商机储备”页面。

字段 类型 说明
id bigint PK 主键
opportunity_code varchar(50) 商机编号,如 HD-20231024-001
opportunity_name varchar(200) 商机名称
customer_id bigint 关联客户
owner_user_id bigint 商机负责人
amount decimal(18,2) 商机金额
expected_close_date date 预计结单日期
confidence_pct tinyint 把握度0-100
stage varchar(50) 阶段,如初步沟通/方案交流/招投标/商务谈判/已成交
opportunity_type varchar(50) 类型,如新建/扩容
product_type varchar(100) 产品类别如VDI/VOI/IDV云桌面
source varchar(50) 商机来源
pushed_to_oms tinyint 是否已推送OMS
oms_push_time datetime 推送OMS时间
description text 商机说明/备注
status varchar(30) 正常/赢单/输单/关闭
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • uk_opportunity_code(opportunity_code)
  • idx_opportunity_customer(customer_id)
  • idx_opportunity_owner(owner_user_id)
  • idx_opportunity_stage(stage)
  • idx_opportunity_expected_close(expected_close_date)

4.5 crm_opportunity_followup 商机跟进记录表

对应商机详情里的“跟进记录”时间线。

字段 类型 说明
id bigint PK 主键
opportunity_id bigint 商机ID
followup_time datetime 跟进时间
followup_type varchar(50) 跟进方式,如电话沟通/现场拜访/微信沟通
content text 跟进内容
next_action varchar(255) 下一步动作
followup_user_id bigint 跟进人
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_opp_followup_opportunity(opportunity_id, followup_time desc)
  • idx_opp_followup_user(followup_user_id)

4.6 crm_sales_expansion 销售拓展表

对应“销售人员拓展”。

字段 类型 说明
id bigint PK 主键
candidate_name varchar(50) 候选人姓名
mobile varchar(20) 手机号
email varchar(100) 邮箱
target_dept_id bigint 目标归属部门
industry varchar(50) 擅长行业
title varchar(100) 当前或目标职位
intent_level varchar(20) 意向度,高/中/低
stage varchar(50) 阶段,如初步沟通/方案交流
has_desktop_exp tinyint 是否有云桌面经验
in_progress tinyint 是否持续跟进中
employment_status varchar(20) 在职/离职/已入职/已放弃
expected_join_date date 预计入职日期,可为空
owner_user_id bigint 负责人
remark text 备注
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_sales_expansion_owner(owner_user_id)
  • idx_sales_expansion_stage(stage)
  • idx_sales_expansion_mobile(mobile)

4.7 crm_channel_expansion 渠道拓展表

对应“渠道拓展”。

字段 类型 说明
id bigint PK 主键
channel_name varchar(200) 渠道名称
province varchar(50) 所在省份
industry varchar(50) 主要行业
annual_revenue decimal(18,2) 年营收规模
staff_size int 公司人数
contact_name varchar(50) 联系人
contact_title varchar(100) 联系人职务
contact_mobile varchar(20) 联系电话
stage varchar(50) 阶段,如初步接触/合作洽谈
landed_flag tinyint 是否已落地
expected_sign_date date 预计签约日期
owner_user_id bigint 负责人
remark text 备注
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_channel_expansion_owner(owner_user_id)
  • idx_channel_expansion_stage(stage)
  • idx_channel_expansion_name(channel_name)

4.8 crm_expansion_followup 拓展跟进记录表

销售拓展和渠道拓展都存在“跟进记录”,建议共用一张表,通过对象类型区分。

字段 类型 说明
id bigint PK 主键
biz_type varchar(20) sales / channel
biz_id bigint 对应拓展对象ID
followup_time datetime 跟进时间
followup_type varchar(50) 电话/微信/面谈等
content text 跟进内容
next_action varchar(255) 下一步动作
followup_user_id bigint 跟进人
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_exp_followup_biz(biz_type, biz_id, followup_time desc)
  • idx_exp_followup_user(followup_user_id)

4.9 work_checkin 外勤打卡表

对应工作台里的“外勤打卡”。

字段 类型 说明
id bigint PK 主键
user_id bigint 打卡人
checkin_date date 打卡日期
checkin_time datetime 打卡时间
longitude decimal(10,6) 经度
latitude decimal(10,6) 纬度
location_text varchar(255) 地址文本
remark varchar(500) 备注说明
status varchar(30) 正常/异常/补卡
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_checkin_user_date(user_id, checkin_date desc)

4.10 work_checkin_attachment 打卡附件表

前端要求“现场照片必填”,建议单独拆附件表。

字段 类型 说明
id bigint PK 主键
checkin_id bigint 打卡ID
file_url varchar(255) 文件地址
file_type varchar(30) image/audio/video
file_name varchar(255) 原始文件名
file_size bigint 文件大小
created_at datetime 创建时间

索引建议:

  • idx_checkin_attachment_checkin(checkin_id)

4.11 work_daily_report 日报表

对应“每日表”和右侧历史日报。

字段 类型 说明
id bigint PK 主键
user_id bigint 提交人
report_date date 日报日期
work_content text 今日工作内容
tomorrow_plan text 明日工作计划
source_type varchar(30) manual/voice
submit_time datetime 提交时间
status varchar(30) 待提交/已提交/已阅/已点评
score int 评分
created_at datetime 创建时间
updated_at datetime 更新时间

索引建议:

  • idx_daily_report_user_date(user_id, report_date desc)
  • idx_daily_report_status(status)
  • uk_daily_report_user_date(user_id, report_date)

4.12 work_daily_report_comment 日报点评表

对应历史记录中的“主管点评”。

字段 类型 说明
id bigint PK 主键
report_id bigint 日报ID
reviewer_user_id bigint 点评人
score int 评分
comment_content text 点评内容
reviewed_at datetime 点评时间
created_at datetime 创建时间

索引建议:

  • idx_report_comment_report(report_id)

4.13 work_todo 待办表(建议补充)

首页有“待办事项”,虽然现在是静态数据,但真实业务通常需要。

字段 类型 说明
id bigint PK 主键
user_id bigint 所属用户
title varchar(200) 待办标题
biz_type varchar(30) opportunity / expansion / report / other
biz_id bigint 业务对象ID
due_date datetime 截止时间
status varchar(20) todo / done / canceled
priority varchar(20) high / medium / low
created_at datetime 创建时间
updated_at datetime 更新时间

4.14 sys_activity_log 动态日志表(建议补充)

首页“最新动态”适合由统一动态表驱动。

字段 类型 说明
id bigint PK 主键
biz_type varchar(30) 业务类型
biz_id bigint 业务ID
action_type varchar(50) 如商机阶段更新/日报点评/新增渠道
title varchar(200) 动态标题
content varchar(500) 动态描述
operator_user_id bigint 操作人
created_at datetime 创建时间

索引建议:

  • idx_activity_created(created_at desc)
  • idx_activity_biz(biz_type, biz_id)

5. 推荐枚举值

为了避免硬编码中文状态,建议状态字段统一使用编码值,前端再做字典映射。

商机阶段 opportunity.stage

  • initial_contact 初步沟通
  • solution_discussion 方案交流
  • bidding 招投标
  • business_negotiation 商务谈判
  • won 已成交
  • lost 已丢单

商机状态 opportunity.status

  • active
  • won
  • lost
  • closed

销售拓展意向 sales_expansion.intent_level

  • high
  • medium
  • low

外勤打卡状态 work_checkin.status

  • normal
  • abnormal
  • reissue

日报状态 work_daily_report.status

  • draft
  • submitted
  • read
  • reviewed

6. 第一版最小可落地表

如果先做 MVP建议优先落以下 8 张:

  1. sys_department
  2. sys_user
  3. crm_customer
  4. crm_opportunity
  5. crm_opportunity_followup
  6. crm_channel_expansion
  7. work_checkin
  8. work_daily_report

这 8 张就能支撑目前前端大部分核心展示。

如果要把“拓展管理”做完整,再补:

  1. crm_sales_expansion
  2. crm_expansion_followup
  3. work_checkin_attachment
  4. work_daily_report_comment

7. 建表原则建议

  1. 所有业务表统一保留 created_atupdated_at
  2. 负责人、创建人、点评人等人员字段统一关联 sys_user.id
  3. 跟进记录建议独立建表,不要直接塞进主表。
  4. 金额统一用 decimal(18,2),不要用字符串。
  5. 时间类字段区分清楚 datedatetime
  6. 中文状态不要直接写死在数据库,建议存编码值。
  7. 如果后续要对接 OMS商机表中保留 pushed_to_oms 和外部系统单号字段会更稳妥。

8. 与前端页面的映射关系

商机页

  • 列表:crm_opportunity
  • 客户名称:crm_customer
  • 详情跟进:crm_opportunity_followup

拓展页

  • 销售拓展:crm_sales_expansion
  • 渠道拓展:crm_channel_expansion
  • 跟进记录:crm_expansion_followup

工作页

  • 外勤打卡:work_checkin
  • 打卡照片:work_checkin_attachment
  • 日报:work_daily_report
  • 主管点评:work_daily_report_comment

首页/我的

  • 统计看板:由商机、拓展、打卡、日报聚合生成
  • 待办事项:work_todo
  • 最新动态:sys_activity_log
  • 个人信息:sys_user + sys_department

9. 下一步建议

如果要继续往后端落地,建议按以下顺序推进:

  1. 先定字段字典和状态流转
  2. 再输出 MySQL DDL
  3. 再补接口文档
  4. 最后和前端页面一一对齐新增/编辑/详情接口

如果需要,我下一步可以直接继续帮你补一版 MySQL 建表 SQL。