仪表板智能洞察的元数据存在哪些表里?一文看懂配置、结果和日志的分工摘要排查仪表板智能洞察问题时,最容易混淆的就是:页面上明明能正常看到洞察内容,但到了订阅推送、历史记录定位或异常分析阶段,却不知道该查哪张表。本文结合代码和表结构,梳理智能洞察相关的 4 张核心表,帮助你快速区分订阅配置、洞察结果、执行日志和页面映射的职责边界。 正文在排查仪表板智能洞察问题时,很多同学都会遇到一个很典型的场景:页面里手动点击“智能洞察”能够正常看到结果,但到了订阅推送、历史记录排查或者异常定位阶段,却不知道应该先查哪张表。 造成这种困惑的一个关键原因是,智能洞察相关数据并不是集中存放在一张表里,而是分散在“订阅配置”“洞察结果”“执行日志”等不同层面。不同问题,关注的表也不一样。如果一开始就查错方向,排查效率会明显下降。 这篇文章结合实际代码和表结构,梳理仪表板智能洞察涉及的几张核心元数据表,帮助大家快速回答这几个常见问题:
一、核心表总览先看整体分工。
如果只想先建立一个整体认知,可以记住这三句话:
二、
|
| 枚举名 | 值 | 含义 |
|---|---|---|
CARD | 0 | 卡片订阅 |
PAGE | 1 | 页面订阅 |
MULTI_CARD | 2 | 多卡片订阅 |
DATASET | 3 | 数据集订阅 |
TEMPLATE_INFO | 4 | 模板信息订阅 |
INTELLIGENT_INSIGHT | 5 | 智能洞察订阅 |
也就是说,查智能洞察订阅时,核心过滤条件通常就是:
sc_type = 5
schedule 常用字段| 字段名 | 含义 |
|---|---|
sc_id | 订阅 ID |
resource_id | 关联资源 ID |
sc_type | 订阅类型 |
name | 订阅名称 |
trigger_type | 触发方式 |
cron | 定时表达式 |
receiver_list | 接收人列表 |
receiver_list_with_filters | 带筛选条件的接收人配置 |
title | 推送标题 |
content | 推送内容 |
enabled | 是否启用 |
last_send_time | 最近发送时间 |
last_send_status | 最近发送状态 |
ctime | 创建时间 |
utime | 更新时间 |
is_del | 是否删除 |
这张表回答的是:这条智能洞察订阅是怎么定义出来的。
SELECT sc_id, resource_id, name, trigger_type, cron, enabled, ctime, utime
FROM schedule
WHERE is_del = 0
AND sc_type = 5
ORDER BY utime DESC
LIMIT 20;
intelligent_insight_report:智能洞察结果内容表如果你关心的是“智能洞察到底生成了什么内容”,重点要看 intelligent_insight_report。
这张表不是订阅配置表,而是智能洞察的结果表,主要保存洞察生成后的报告内容,供页面展示、历史查看和后续复用。
intelligent_insight_report 核心字段| 字段名 | 含义 |
|---|---|
report_id | 报告唯一标识 |
dom_id | 租户 ID |
resource_id | 关联资源 ID |
resource_type | 资源类型 |
content | 智能洞察正文内容 |
init_messages | 初始化上下文信息 |
analysis_id | 关联分析任务 ID |
u_id | 创建人/操作人 |
ctime | 创建时间 |
utime | 更新时间 |
这张表解决的是下面这些问题:
| 关注点 | 说明 |
|---|---|
| 是否成功生成 | 洞察报告是否真正落库 |
| 生成了什么 | 最终正文内容是什么 |
| 关联到哪里 | 对应哪个页面、资源或分析任务 |
如果页面右侧已经能正常展示智能洞察内容,那么通常最终结果会落到这张表中。
SELECT report_id, resource_id, resource_type, analysis_id, u_id, ctime, utime
FROM intelligent_insight_report
ORDER BY utime DESC
LIMIT 20;
schedule_log:智能洞察订阅执行日志表很多“页面正常、推送失败”的问题,真正的关键不在配置表,也不一定在结果表,而是在执行日志里。
这时要重点看 schedule_log。
schedule_log 常用字段| 字段名 | 含义 |
|---|---|
sc_id | 关联订阅 ID |
task_id | 调度任务 ID |
resource_id | 关联资源 ID |
status | 执行状态 |
error_message | 错误信息 |
retry_times | 重试次数 |
first_send_time | 首次发送时间 |
last_send_time | 最后发送时间 |
trigger_type | 触发方式 |
cron | 执行时对应的 cron 信息 |
这张表回答的是:这次推送执行过程中到底发生了什么。
例如出现类似下面的报错时:
page.waitForFunction: Timeout 300000ms exceeded
通常更应该优先从执行链路和等待条件角度排查,而不是直接怀疑洞察结果内容本身。
SELECT l.sc_id, l.task_id, l.status, l.error_message, l.first_send_time, l.last_send_time
FROM schedule_log l
JOIN schedule s ON l.sc_id = s.sc_id
WHERE s.is_del = 0
AND s.sc_type = 5
ORDER BY l.last_send_time DESC
LIMIT 20;
schedule_multicards_mapping:订阅和页面对象的关联关系除了上面三张核心表外,智能洞察订阅还经常会涉及 schedule_multicards_mapping。
这张表更偏映射关系,适合处理“订阅到底挂在哪个页面上”这一类问题。
| 关注点 | 说明 |
|---|---|
| 页面关联 | 这条订阅挂在哪个页面上 |
| 卡片关联 | 这条订阅关联了哪些卡片 |
| 多对象场景 | 多卡片、多对象订阅的关系映射 |
当需要把订阅配置和实际页面对象串起来时,这张表通常会派上用场。
这是实际排查里非常常见的一种现象:
| 现象 | 表现 |
|---|---|
| 页面手动查看正常 | 打开页面后可以正常看到智能洞察内容 |
| 订阅推送失败 | 定时触发时报错或超时 |
| 错误偏执行链路 | 常见为等待条件、异步加载或自动化执行问题 |
这通常说明:
常见原因可以概括为:
| 原因方向 | 说明 |
|---|---|
| 页面加载更慢 | 调度环境下页面渲染耗时更长 |
| 等待条件不匹配 | 自动化等待逻辑和真实页面状态不一致 |
| 异步请求未完成 | 某些前端请求或渲染未在超时前完成 |
| 环境差异 | 人工访问与调度执行环境不同 |
实际定位问题时,建议按这个顺序查:
| 步骤 | 查看表 | 排查目标 |
|---|---|---|
| 1 | schedule | 确认订阅是否存在、是否启用、类型是否正确 |
| 2 | intelligent_insight_report | 确认洞察结果是否已经成功生成并落库 |
| 3 | schedule_log | 确认推送在哪一步失败、具体报了什么错 |
| 4 | schedule_multicards_mapping | 必要时补充确认订阅和页面/卡片的映射关系 |
这个顺序的好处是,可以先判断“配置有没有问题”,再判断“结果有没有产出”,最后再聚焦“执行为什么失败”。
仪表板智能洞察相关元数据并不是只存在一张表里,而是分成了几个职责明确的层次:
| 层次 | 对应表 | 作用 |
|---|---|---|
| 订阅配置层 | schedule | 管订阅规则 |
| 洞察结果层 | intelligent_insight_report | 管生成内容 |
| 执行日志层 | schedule_log | 管执行过程和异常 |
| 对象映射层 | schedule_multicards_mapping | 管订阅与页面/卡片关系 |
所以在实际排查时,可以优先记住这一组对应关系:
scheduleintelligent_insight_reportschedule_logschedule_multicards_mapping理解了这几张表的分工之后,智能洞察相关问题的定位路径通常会清晰很多,尤其是在“页面能看、订阅却失败”这类场景下,会更容易判断问题究竟落在配置、结果还是执行链路上。