Skip to content

weberp-call 数据库表功能说明(梳理版)

本文档基于项目代码与原始说明整理,补充了字段说明、数据来源、表间关系及使用场景,供开发参考。


一、整体数据架构概览

263 呼叫中心平台

    ├─ 拉取员工数据 ──► tb_call_employee(坐席映射)

    └─ 拉取话单数据 ──► tb_call_history(通话原始记录)

                             ├─ 前端保存 ──► tb_call_work_order(工单)

                             ├─ 预汇总 ──► tb_call_pre_sum(每日每坐席通话统计)
                             │         └─► tb_call_pre_sum_agent(每日活跃坐席)
                             │         └─► tb_call_pre_sum_cust(每日客户联系去重)

                             └─ 任务对比 ──► tb_call_target(月度目标)
                                         └─► tb_call_target_day(日度目标)

中台(T+1)
    └─ 开票数据 ──► tb_call_day_kpi(日 KPI)
                └─► tb_call_month_kpi(月 KPI)

辅助表
    ├─ tb_call_work_calendar(工作日历)
    ├─ tb_call_task_failed(失败任务重试)
    └─ tb_call_warn_record(预警记录)

二、表详细说明


2.1 tb_call_employee —— 263 平台坐席信息

属性说明
数据来源263 平台接口拉取,主键直接使用平台 ID(IdType.INPUT
更新方式定时同步,ON DUPLICATE KEY UPDATE 全量覆盖
核心作用将云 ERP 用户(branch_id + hr_staff_id)映射到 263 坐席账号(username

字段分类:

字段类型说明
idString(平台主键)263 平台员工 ID,直接作为主键
usernameString坐席账号(企业号+账号),其他表中 agent 字段即对应此值
real_nameString员工姓名
agent_idString分机号
agent_queue_id_inString技能组
default_queueString默认技能组
statusString状态:0 停用,1 正常
grp_nameString班组名称
update_dateDate平台数据修改时间(用于核对是否最新)
人工维护字段
branch_idString分公司标识(手动维护,关联云 ERP)
hr_staff_idStringHR 员工 ID(手动维护,关联云 ERP)
passwordString业务平台密码(不配置则取 nacos 默认)
extension_passwordStringSIP 话机密码(不配置则取 nacos 默认)

关键关联:

  • username 是其他所有表中 agent 字段的来源(话单、预汇总、工单等)
  • 通过 branch_id + hr_staff_idtb_call_target / tb_call_target_day 关联,找到任务对应坐席

使用场景: 登录云 ERP 时,用当前用户的 branch_id + hr_staff_id 查此表,若查到坐席信息则允许打开电话条。


2.2 tb_call_history —— 通话历史记录(话单)

属性说明
数据来源263 平台接口拉取,主键直接使用平台 ID(IdType.INPUT
更新方式定时同步,ON DUPLICATE KEY UPDATE 全量覆盖
核心作用存储所有通话原始记录,是所有汇总统计的源数据

主要字段:

字段说明
id平台主键
call_id话单 ID(与工单表关联的关键字段)
agent坐席账号(对应 tb_call_employee.username
customer呼叫号码
phone_last_four号码后四位(自行截取,用于检索)
call_direction呼叫方向:呼入 / 呼出
call_result呼叫结果:0 未接通,1 已接通
call_type呼叫方式(1:内部通话, 2:客户呼入, 3:手动呼出 等)
c_start_time呼叫开始时间(时间范围查询的主要条件)
c_answer_time通话接通时间
c_end_time通话结束时间
talksec人工通话时长(秒),汇总时使用 CEIL(talksec/60) 转分钟
billsec通话总时长(秒)
ringsec振铃时长(秒)
call_data随路数据,实际存储 branch_id(分公司标识),是数据归属分公司的关键字段
org_id部门 ID(下载时根据坐席查找当前所属部门写入)
satisfaction满意度:1满意, 2一般, 3不满意, 0未评价, -1未触发
c_hangup_cause挂机原因(NORMAL_CLEARING 正常挂断 等)
filename录音文件路径

注意: call_data 字段存储的是 branch_id,是查询时过滤分公司数据的核心条件;agent IS NULL 的记录表示呼入未接通且未分配坐席的话单(公司级数据)。


2.3 tb_call_work_order —— 通话工单

属性说明
数据来源前端在通话过程中手动保存
核心作用记录每通电话的业务信息(客户、用途、备注等),与话单关联

关联方式:

tb_call_work_order.call_id    = tb_call_history.call_id
tb_call_work_order.username   = tb_call_history.agent
(双字段联合关联)

主要字段:

字段说明
id前端传入(需与埋点行为关联,先后顺序不确定)
call_id话单 ID
username坐席账号
agent_id坐席工号(对应 tb_call_employee.agent_id,即分机号)
branch_id分公司标识
cust_id / cust_no / cust_name客户内码 / 编号 / 名称
new_group_cust_no客户标准码(用于客户数去重统计,非常关键)
ou_id / ou_name业务实体
usage_id / usage_name用途
phone_num电话号码
event_names埋点拼接字段(开票/退补/退回/议价/对账)
note备注(最多 1000 字)
content待办事项(最多 1000 字)
main_op_id / main_op_name责任开票员

2.4 tb_call_pre_sum —— 每日通话预汇总

属性说明
数据来源tb_call_historybranch_id + 日期 + agent + org_id 分组汇总计算写入
更新方式upsertBatchON DUPLICATE KEY UPDATE),支持实时/夜间重算
核心作用存储每天每个坐席的通话次数和时长,供话务大盘和坐席汇总使用

字段说明:

字段说明
id主键(IdType.INPUT,由代码生成)
branch_id分公司标识(来自 tb_call_history.call_data
stat_date统计日期
agent坐席账号;agent 为 NULL 的记录表示公司级呼入未接通数据(263 部分呼入未接通话单,未分配坐席就挂断)
call_out_count呼出次数(已接通)
call_out_missed_count呼出次数(未接通)
call_out_duration呼出时长(已接通,分钟,CEIL(talksec/60)
call_in_count呼入次数(已接通)
call_in_missed_count呼入次数(未接通)
call_in_duration呼入时长(已接通,分钟)
total_count总次数(全部,含接通与未接通)
org_id部门 ID

汇总 SQL 逻辑(来自 CallPreSumMapper.xml):

  • 呼出次数call_result = 1 AND call_direction = '呼出'
  • 呼入次数call_result = 1 AND call_direction = '呼入'
  • 时长CEIL(talksec/60) 向上取整转分钟,仅计算已接通
  • call_data(branch_id)+ DATE(c_start_time) + agent + org_id 分组

2.5 tb_call_pre_sum_agent —— 每日活跃坐席记录

属性说明
数据来源当日有已接通话单的坐席,写入此表
核心作用记录每日活跃坐席,话务大盘中的"开票员数量"来源于此(COUNT(DISTINCT agent)

字段说明:

字段说明
id主键
branch_id分公司标识
stat_date统计日期
agent坐席账号

查询示例(来自 CallBranchSumMapper.xml):统计分公司活跃坐席数 COUNT(DISTINCT agent) FROM tb_call_pre_sum_agent WHERE stat_date BETWEEN ...


2.6 tb_call_pre_sum_cust —— 每日客户联系记录(客户数去重用)

属性说明
数据来源tb_call_history INNER JOIN tb_call_work_order,按 branch_id + 日期 + agent + 客户标准码 + org_id 分组汇总
更新方式upsertBatch,支持实时/夜间重算
核心作用记录每日每坐席联系的客户标准码,用于客户数去重统计

字段说明:

字段说明
id主键
branch_id分公司标识
stat_date统计日期
agent坐席账号
new_group_cust_no客户标准码(来自工单表)
cust_count与此客户的总通话次数(不去重)
out_cust_count与此客户的呼出通话次数(不去重)
org_id部门 ID

重要说明:

  • 统计任务里的"客户数"需要 out_cust_count > 0 来过滤,只计算有呼出行为的客户
  • 客户数去重使用 COUNT(DISTINCT new_group_cust_no) 实现
  • 汇总前提:call_result = 1(已接通)且 new_group_cust_no IS NOT NULL

2.7 tb_call_target —— 月度目标

属性说明
数据来源云 ERP 导入(Excel),实际数由系统自动计算更新
核心作用管理每月每人的通话目标及实际完成情况

关联逻辑(任务实际数计算):

tb_call_target.branch_id + hr_staff_id
    └─► tb_call_employee(找到对应坐席 username/agent)
            └─► tb_call_history + tb_call_work_order(统计实际完成情况)

主要字段:

字段说明
id主键(IdType.ASSIGN_ID,雪花算法)
branch_id分公司标识
hr_staff_idHR 员工 ID(与 branch_id 联合定位员工)
staff_name员工名称
target_year目标年份
target_month目标月份
target_count目标外呼客户数(手动设置)
actual_count实际外呼客户数(系统自动计算:COUNT(DISTINCT new_group_cust_no) ,条件:已接通 + 呼出)
day_target_count日目标客户数(手动设置)
day_target_duration日目标通话时长(手动设置)
day_target_type日目标覆盖方式(工作日 / 全部 / 自定义日期)
day_description日目标覆盖日期描述(如 1,2,3,4,5 代表周一至周五)

注意: 任务数据本身不含团队信息,导入时也不含;界面展示的"团队"只是显示当前用户所属团队。


2.8 tb_call_target_day —— 日度目标

属性说明
数据来源由月度目标的日目标配置自动生成,实际数由系统自动计算(实时 + 夜间重算)
核心作用管理每日每人的目标与实际完成情况
关联父表target_id 指向 tb_call_target.id

主要字段:

字段说明
id主键(IdType.INPUT,由代码生成)
target_id关联月度目标 ID
branch_id分公司标识
hr_staff_idHR 员工 ID
stat_date具体日期
day_target_count日目标客户数
day_actual_count日实际客户数(系统计算,逻辑同月度:已接通 + 呼出 + COUNT(DISTINCT new_group_cust_no)
day_target_duration日目标通话时长(分钟)
day_actual_duration日实际通话时长(分钟,系统计算 CEIL(talksec/60)
delete_flag逻辑删除:0 正常,1 删除

实际数更新时机:

  • 实时: 通话结束后触发单坐席重算
  • 夜间: 定时任务批量重算当日全部数据

2.9 tb_call_work_calendar —— 工作日历

属性说明
数据来源系统维护(支持法定节假日、补班等)
核心作用判断某日是否为工作日,供日目标生成及完成率计算使用

字段说明:

字段说明
id主键,值 = 对应日期的数字格式,如 20260629
stat_date日期
year_value / month_value / day_value年 / 月 / 日
week_value星期
workday_flag是否工作日:1 工作日,0 休息日
note备注(如"端午节"、"国庆补班"等)

2.10 tb_call_day_kpi —— 日 KPI(开票金额等)

属性说明
数据来源每晚从中台获取(T+1 数据,中台已按日汇总)
核心作用话务大盘展示每日开票金额、销售金额、品规数

字段说明:

字段说明
id主键
branch_id分公司标识
agent坐席账号
hr_staff_idHR 员工 ID
stat_date统计日期
sale_amt销售金额(BigDecimal
invoice_amt实际开票金额(BigDecimal
prod_cnt开票品规数(Integer
delete_flag逻辑删除:0 正常,1 删除

2.11 tb_call_month_kpi —— 月 KPI(开票金额等)

属性说明
数据来源每晚从中台获取(T+1 数据,中台已按月汇总)
核心作用话务大盘展示月度开票金额、销售金额、品规数

字段说明:

字段说明
id主键
branch_id分公司标识
agent坐席账号
hr_staff_idHR 员工 ID
year_value / month_value年 / 月
sale_amt销售金额(BigDecimal
invoice_amt实际开票金额(BigDecimal
prod_cnt开票品规数(Integer
delete_flag逻辑删除:0 正常,1 删除

2.12 tb_call_task_failed —— 失败任务记录(辅助表)

属性说明
数据来源系统自动写入(定时任务或接口调用失败时)
核心作用记录失败任务,支持重试机制

字段说明:

字段说明
task_type任务类型(区分业务逻辑)
task_param入参 JSON 报文
error_code / error_msg错误编码 / 错误信息
status状态
retry_count已重试次数
next_retry_time下次重试时间

2.13 tb_call_warn_record —— 预警记录(辅助表)

属性说明
数据来源系统自动写入(异常触发预警时)
核心作用记录预警信息及钉钉推送状态

字段说明:

字段说明
error_code / error_msg错误码 / 错误消息
title预警标题
content预警内容
supplement补充信息
warn_time预警时间
warn_status钉钉发送状态:1 已成功,0 未发送
warn_fail_reason钉钉发送失败原因

三、核心表关系汇总

关系关联字段
tb_call_historytb_call_work_ordercall_id + agent = call_id + username
tb_call_historytb_call_employeeagent = username
tb_call_targettb_call_employeebranch_id + hr_staff_id
tb_call_target_daytb_call_targettarget_id = id
tb_call_target_daytb_call_employeebranch_id + hr_staff_id
tb_call_pre_sum 来源于 tb_call_historycall_data(branch_id) + 日期 + agent + org_id 分组汇总
tb_call_pre_sum_cust 来源于 history JOIN work_orderbranch_id + 日期 + agent + 客户标准码 分组
tb_call_pre_sum_agent当日有已接话单的坐席写入

四、关键统计口径说明

指标计算方式
呼出次数(已接通)call_result = 1 AND call_direction = '呼出' 的 COUNT
呼入次数(已接通)call_result = 1 AND call_direction = '呼入' 的 COUNT
通话时长(分钟)CEIL(talksec / 60),仅统计已接通
外呼客户数(任务实际数)COUNT(DISTINCT new_group_cust_no) FROM history JOIN work_order,条件:call_result=1, call_direction='呼出', new_group_cust_no IS NOT NULL
活跃坐席数COUNT(DISTINCT agent) FROM tb_call_pre_sum_agent
公司级呼入未接通tb_call_pre_sumagent IS NULL 的记录

页脚:版权前显示的信息