数睿通2.0更新:添加AI助手、提供BI接口案例、优化现有功能

引言

小伙伴们,大家好,数睿通 2.0 迎来了 12 月份的更新,本次更新添加了全新模块:AI 助手,并且在数据库兼容性、稳定性、数据血缘能力以及任务执行性能等方面进行了修复与优化,同时在后台 BI 可视化模块提供了 BI 大屏的接口案例,帮助大家能够更好的去了解和配置 BI 大屏,下面我们来一起看一下吧。

AI 助手

模块定位:

  • 面向通用场景的会话式助手,支持解释、知识问答与常规交互;右侧浮动入口随时调起,不改变既有页面结构。

模型与能力:

  • 采用通用型模型,并结合业务语料进行适度微调。
  • 在知识问答场景中,回答倾向于直接与精炼,减少不必要的赘述。
  • 面对复杂问题保留必要的推理与分步说明,以兼顾可读性与可操作性。

适用场景:

  • 快速提问与获取解释(如概念解释、步骤说明)。
  • 长对话回溯与逐步阅读,便于复制片段或总结记录。
  • 希望以流式输出降低等待感、提升连续性阅读体验的场景。

操作流程:

  • 打开入口后选择或创建会话,支持搜索、重命名、删除与分页浏览。
  • 在输入框中键入消息并回车发送;Shift + Enter 换行。
  • 流式回复期间可随时点击“停止”;需要清理上下文时使用“清空消息”。

历史消息:

  • 当消息较多时,上拉到列表顶部会显示“加载更早的消息”,分页按需加载以降低渲染与内存压力。

呈现与可读性:

  • 支持 Markdown 与代码高亮;表格、图片、链接等常见富文本可直接展示。
  • 时间显示策略:用户消息均显示时间;AI 流式消息在完成后显示时间,避免干扰阅读。

交互与体验:

  • 智能滚动:接近底部自动跟随,用户上拉则暂停自动跟随;流式期间保持底部以保证连续可读性。
  • 分页与截断:按页保留消息,兼顾性能与可用性;减少长对话下的重绘成本。

技术实现:

  • 前端:Vue 3 + Element Plus + Vite;SSE(EventSource)实现流式输出;Markdown-it + highlight.js 完成 Markdown/代码渲染。
  • 性能控制:requestAnimationFrame、MutationObserver、ResizeObserver 协同布局与滚动更新,尽量减少抖动与不必要重绘。
  • 后端:提供流式推送、停止与清空接口、分页查询;采用鉴权令牌保障基础合规;多语言能力由模型原生支持。AI 框架采用 langchain4j,利于后续扩展,跨平台兼容性强。

SQLServer 下 INSERT INTO SELECT 仅插入最大行数问题

现象:在 SQLServer 中执行 INSERT INTO t SELECT * FROM src 场景时,仅插入到连接/会话所设置的最大行数;MySQL 不受影响。

原因分析:

  • SQLServer 的 SET ROWCOUNT 会影响 DML 语句(包括 INSERT/UPDATE/DELETE),若会话存在非零的 ROWCOUNT 设置,则语句在达到该行数后提前停止。
  • 部分工具链或先前逻辑可能在同一连接上设置了行数限制,导致后续 DML 被无意限制。

处理方案:

  • SQLServer 场景下不设置会话级最大行数(不使用 SET ROWCOUNT 非零值)。
  • 如需控制导入规模,采用分页批处理(OFFSET … FETCH NEXT …TOP n 循环),避免通过会话限制控制行数,并配合合理的事务边界与失败重试策略。

示例(思路片段):

-- 解除会话行数限制
SET ROWCOUNT 0;

-- 分批插入(示意,实际由任务驱动器循环执行)
INSERT INTO target(col1, col2, ...)
SELECT col1, col2, ...
FROM source
ORDER BY id
OFFSET @offset ROWS FETCH NEXT @batchSize ROWS ONLY;

验证码图形绘制以规避服务器字体缺失

背景:某些服务器环境缺少特定字体文件,使用 Font.createFont 或依赖系统字体时可能产生异常,导致验证码生成失败。

方案:

  • 使用 BufferedImage + Graphics2D 进行图形绘制,统一走内置通用字体家族(如 SansSerif),避免对系统字体的强依赖。
  • 启用抗锯齿与随机扰动线条/噪点,保持识别难度与清晰度平衡。
  • 字体不可用时落入安全回退路径,不影响验证码生成链路。

要点:

  • 通过 RenderingHints 开启抗锯齿,采用固定宽度字符集或受控字符集减少布局不确定性。
  • 避免在服务端加载自定义字体文件。

数据血缘 SQL 解析优化

目标:在复杂 SQL 下(CTE、嵌套子查询、派生表、复杂 JOIN、UNION/UNION ALL)稳定构建字段级血缘映射。

改进点:

  • 解析器增强:补充对 CTE(WITH)、子查询别名解析与多层投影展开的支持。
  • 别名映射:规范化 SELECT expr AS alias 的表达式归因,忽略不影响血缘的函数包装(如简单 CAST/COALESCE)。
  • 列追踪:对聚合与窗口函数进行特殊处理,明确来源列集合与派生列标注。
  • 容错:在语法无法完全解析时提供降级策略(例如按照片段抽取与启发式匹配),避免整体失败。

效果:复杂 SQL 的血缘关系更完整、稳定,支持更多生产场景的血缘可视化与校验。

定时任务断连稳定性与重试

问题:定时任务在网络波动或服务重启场景下可能断连,导致任务执行失败或停滞。

方案:

  • 增加连接重试:采用指数退避(示例范围:100ms → 10s),最大重试次数与总时长受控。

效果:连接抖动下任务更易恢复,整体稳定性提升。

BI 大屏测试接口

内容:提供用于 BI 大屏联调的测试数据接口,覆盖常见图表的数据结构示例,便于参考接口配置方式与返回格式,帮助更好地使用 BI 大屏。

要点:

  • 示例返回统一采用 dataset 结构(dimensions + source,或图表特定字段)。
  • 涵盖表格、柱状图、折线图、饼图、雷达图、热力图、散点图、漏斗图、桑基图、Treemap 等常见图表的数据格式示例。
  • 适用于快速联调与演示,无需依赖真实业务数据。

数据接入任务卡死优化:自定义线程池替代 ForkJoinPool 公共池

背景:使用 ForkJoinPool.commonPool() 的场景中,若存在同步阻塞或任务互相等待,容易出现公共池饥饿与卡住。

方案:

  • 引入自定义 ThreadPoolExecutor(区分 IO 密集与 CPU 密集场景),配置核心/最大线程数、队列与拒绝策略。
  • 使用命名线程工厂与监控指标,便于排查与容量评估。
  • CompletableFuture 等并发工具中显式传入自定义执行器,避免隐式落入公共池。

示例(Java 配置思路):

ExecutorService ioExecutor = new ThreadPoolExecutor(
    8, // core
    32, // max
    60L, TimeUnit.SECONDS,
    new LinkedBlockingQueue<>(1000),
    new ThreadFactory() {
        private final AtomicInteger idx = new AtomicInteger(1);
        @Override public Thread newThread(Runnable r) {
            Thread t = new Thread(r, "io-exec-" + idx.getAndIncrement());
            t.setDaemon(true);
            return t;
        }
    },
    new ThreadPoolExecutor.CallerRunsPolicy() // 高峰期降级,保障任务不丢
);

CompletableFuture.supplyAsync(() -> loadChunk(), ioExecutor)
                 .thenApplyAsync(this::transform, ioExecutor)
                 .thenAcceptAsync(this::persist, ioExecutor);

总结

本次与上述修复/优化相关的产品能力汇总:

  • AI 助手:通用会话助手上线;支持流式输出与智能滚动,历史消息顶部加载,停止与清空消息等;后端采用 langchain4j 便于后续扩展。
  • 数据库兼容性:SQLServer 导入禁用会话行数限制(ROWCOUNT);大批量导入建议分页批处理。
  • 运维与稳定性:定时任务新增连接重试;验证码改用图形绘制避免字体缺失报错。
  • 数据工程:复杂 SQL 的血缘解析增强(CTE/子查询/别名/窗口函数等),提升完整性与稳健性。
  • BI:提供测试数据接口,覆盖常见图表类型,便于联调与演示。

结语

以上便是本次更新的主要内容了,这些改进都来源于用户的实际需求和反馈。我们希望通过持续的产品优化,为企业提供更加实用、稳定的数据中台解决方案。

目前源码,部署指南,讲解视频等相关资料是付费加入知识星球获取的,加入星球通过填写商用授权表可获取商用授权资格,对于目前实现的功能来说,价格可以说是非常便宜了,再次感谢大家的关注与支持。源码可用于二开商用,但不可直接或经过修改后公开销售源码,数睿通 2.0 数据中台版权归天津数睿通科技有限公司所有,违规者将追究其法律责任!

感兴趣的朋友请关注公众号 螺旋编程极客 加入星球,我们一起成长,一起进步。

发表评论