Skip to content

Releases: strugglerx/gf-mate

v0.6.1 — 修复 Shadow DOM 面板拖拽缩放与重复思考状态

Choose a tag to compare

@strugglerx strugglerx released this 28 Oct 15:27

Bug 修复

  • Shadow DOM 浮动面板缩放与最大化失效:原缩放手柄挂载在 Shadow Host 的 Light DOM 下且无 <slot>,导致浏览器未渲染缩放热区;现将左上角、上边缘、左边缘三向拖拽热区挂载至 Shadow DOM 内部,并补齐最大化(.dq-maximized)与关闭回调联动。
  • 回答时出现两个思考中提示:移除 sendChat 中重复追加的 .thinking 节点与顶栏重复文案,统一由气泡内单一思考占位与深度思考折叠条承接,同时修复异常分支未定义的 renderSegments 调用。

v0.6.0 — 自定义提示词与浮动面板缩放

Choose a tag to compare

@strugglerx strugglerx released this 28 Oct 15:14

gf-mate v0.6.0

本版本核心:宿主自定义提示词注入(SystemPromptAppend)与浮动气泡面板自由拖拽缩放。

新特性

  • 📝 自定义提示词(Assistant.SystemPromptAppend):宿主可将自定义提示词拼到内置 system prompt 末尾,用于声明数据库方言语法(如 DM8 的 TO_CHAR/SYSDATE)、业务口径、字段约定,减少模型试错、加快响应速度
  • 📐 浮动面板拖拽缩放:浮动气泡模式下,面板左上角新增拖拽手柄,可向左上自由调整宽高(锚定右下角,最小尺寸 320×360)

用法

Assistant: mate.AssistantConfig{
    SystemPromptAppend: "数据库为达梦 DM8:按天分组用 TO_CHAR(col,'YYYY-MM-DD')," +
        "近 N 天过滤用 col >= SYSDATE - N;created_at 为记录创建时间。",
},

安装

go get github.com/strugglerx/gf-mate@v0.6.0

v0.5.0 — 动态凭据、敏感列门禁与宿主鉴权集成

Choose a tag to compare

@strugglerx strugglerx released this 28 Oct 14:41

gf-mate v0.5.0

本版本核心:宿主深度集成能力 —— 支持动态 LLM 凭据(配置中心热更新)、敏感列 SQL 门禁、单二进制内嵌前端脚本与 Bearer Token 鉴权注入。

新特性

  • 🔑 动态 LLM 凭据(Assistant.Resolver):每次对话前按需从宿主配置中心读取 LLMEndpoint{BaseURL, APIKey, Model},后台改配置即时生效无需重启;BaseURL 同时兼容根路径与完整 .../chat/completions
  • 🛡️ 敏感列门禁(DenyColumns):数据集/结构体反射声明手机号、证件号等敏感列后,自动从 AI Schema 隐藏,且 SQL 门禁拒绝任何提及这些列的语句及对该表的 SELECT * / alias.*
  • 📦 内嵌 Widget 脚本(go:embed + BindWidget):dq-widget.js 随 Go 二进制打包发布(带内容 ETag 协商缓存),宿主无需拷贝 frontend/ 目录;BindWidget 与 Bind 分离挂载,满足 <script> 公开加载 + API 分组鉴权场景
  • 🔐 前端动态请求头(<gf-mate>.headers):支持对象、函数或 Promise,每次发送对话前动态求值(Token 续期自动生效),并兼容宿主 {code, msg} 格式鉴权错误提示
  • 🔧 更广的宿主版本兼容:go.mod 最低版本下调至 Go 1.21 + GoFrame v2.8.2

用法

// 1. 公开挂载脚本 + 鉴权挂载接口
s.Group("/api/admin/mate", func(g *ghttp.RouterGroup) { mate.BindWidget(g) })
s.Group("/api/admin/mate", func(g *ghttp.RouterGroup) { g.Middleware(auth); mate.Bind(ctx, g) })

// 2. 敏感列声明
ds, _ := mate.FromStruct(&entity.Project{}, func(o *mate.FromStructOptions) {
    o.DenyColumns = []string{"client_phone", "id_card_no"}
})

安装

go get github.com/strugglerx/gf-mate@v0.5.0

v0.4.0 — 多数据源支持

Choose a tag to compare

@strugglerx strugglerx released this 21 Oct 15:57

gf-mate v0.4.0

本版本核心:多数据源支持 —— 一个插件实例接入宿主的多个数据库。

新特性

  • 🗄️ 多数据源路由:dq.AddSource("go", g.DB("go")) 注册命名源,数据集声明 Source: "go" 即自动路由;SQL 引擎按 FROM/JOIN 引用的表选择目标库
  • 🛡️ 跨源 JOIN 拦截:一条 SQL 混用两个库的表直接拒绝,错误信息指引 AI 拆成多次单源查询
  • 🗣️ 逐源方言提示:MySQL + DM8 混布时各自提示语法要点(DialectDescAll)
  • ⏱️ LLM 请求超时加长:默认 60s → 180s(复杂分析题多轮工具调用不再中途断流)

用法

dq.Init(g.DB(), cfg)                    // 默认源
dq.AddSource("go", g.DB("go"))          // 命名源
dq.Register(model.Dataset{Name: "curtain", Table: "c_curtain", Source: "go"})

安装

go get github.com/strugglerx/gf-mate@v0.4.0

v0.3.0: 声明式 <gf-mate> Web Component 与内嵌工作台双模渲染

Choose a tag to compare

@strugglerx strugglerx released this 21 Oct 15:00

🌟 gf-mate v0.3.0 重磅发布:原生声明式 Web Component 与双模态渲染

本次版本迎来了全新的前端组件体系升级,全面拥抱 Web Component 标准规范,为 Vue、React、Angular 及传统页面提供极其优雅的声明式使用体验。


1. 🧩 原生 <gf-mate> 自定义标签

无需编写多余的 JS 挂载代码,直接在任何页面、JSX 或 Vue 模板中声明:

<script src="/mate/dist/dq-widget.js"></script>

<!-- 浮动助手模式 -->
<gf-mate 
  base="/mate" 
  title="业务数据智囊" 
  color="#4f46e5">
</gf-mate>
  • Shadow DOM 样式隔离:完全不受宿主全局 CSS 污染,也不影响宿主系统排版。
  • 声明式属性支持:支持 base / api、title、color、examples、open。
  • 向下兼容:兼顾支持 <dq-assistant> 别名标签与标准 <script> 属性驱动模式。

2. 🖥️ 全新「内嵌工作台(Inline Mode)」

不仅可以作为右下角悬浮气泡,现在只需加上 inline 属性,即可将 AI 对话小窗像原生普通组件一样平铺嵌入在侧边栏、中台看板或抽屉容器内:

<div style="width: 480px; height: 600px; border-radius: 12px; overflow: hidden;">
  <gf-mate 
    inline 
    base="/mate" 
    title="分析工作台" 
    color="#059669">
  </gf-mate>
</div>
  • 自动 100% 撑满宿主容器尺寸;
  • 智能精简控制栏,自动隐藏窗口最大化与关闭按钮,仅保留轻巧的「新对话」操作。

3. 🎨 品牌色彩与个性化定制

  • 支持自定义主题色(HEX / RGB),动态注入并完美适配气泡、操作按钮与交互高亮。
  • 支持自定义助手标题与场景化欢迎推荐词。

4. 📊 严守 40KB 单文件体积红线

  • 零依赖单文件 Bundle frontend/dist/dq-widget.js gzip 体积严格控制在 37KB。
  • 内置零依赖手写 SVG 图表引擎(柱状图、折线图、饼图、数据表格、指标卡),自带海量数据截断与自动防爆防御机制。

Full Changelog: v0.2.0...v0.3.0

v0.2.1: 原生支持 <gf-mate> 自定义标签与内嵌双模渲染

Choose a tag to compare

@strugglerx strugglerx released this 21 Oct 14:59

🚀 What's New in v0.2.1

  • 🧩 原生 Web Component 自定义标签:支持在 React / Vue / 原生 HTML 中直接声明写 <gf-mate></gf-mate>,无需额外 JS 初始化代码。
  • 📦 内嵌工作台(Inline Mode)支持:添加 inline 属性即可将 AI 对话面板直接嵌入任意宿主容器、侧边栏或主看板中,自动充满父容器并隐藏多余窗口级按钮。
  • 🎨 完整属性控制:支持通过标签属性声明 base/api、title、color、examples、open。
  • 🖼️ 中英双语文档升级:README 增加视网膜级双模渲染效果图与清晰的参数指南。

v0.2.0: 图表海量数据防爆、自定义主题与富渲染生态

Choose a tag to compare

@strugglerx strugglerx released this 21 Oct 14:46

🚀 What's New in v0.2.0

1. 📊 SVG 图表海量数据防爆与视觉容错

针对自然语言查数返回数十上百条聚合项的场景,轻量 SVG 图表新增自动防御与防爆裁剪机制:

  • 饼图 / 环形图:自动将数据按占比降序截取 Top 6 + 其他,彻底解决超多图例溢出容器、切片过于拥挤重叠的问题。
  • 柱状图:数据量过大时自动截断展示 Top 24 并标注提示,保证柱体宽度与数值标签清晰可读,避免发丝级拥挤。
  • 折线图:点位密集时(>48 个)自动隐藏数据圆点转为纯平滑曲线,大幅降低 SVG DOM 节点数量与渲染抖动。
  • 数据表格:增加 max-height: 280px 纵向滚动与表头吸顶(sticky),避免大表格撑破小窗面板。

2. 🎨 小窗极简外观与全面自定义

  • 视觉去繁就简:移除左上角多余图标与右下角缩放伪标记,呈现克制精致的 Editorial 极简风格。
  • 自定义助手名称:支持通过 data-dq-title / mount({ title: '...' }) 或 URL 参数 ?title=... 自定义标题(默认为「AI 数据助手」)。
  • 自定义品牌主题色:支持通过 data-dq-color / mount({ color: '...' }) 或 URL 参数 ?color=... 动态注入品牌主色,自动无缝适配按钮、高亮与光标。
  • 自定义快捷推荐词:支持通过 data-dq-examples 或 examples 数组传入场景化推荐问题。

3. 🧩 生态集成与推荐

  • 官方在中英文文档中正式推荐 Vue 3 生态富渲染组件库 @struggler/smart-ai-renderer,支持直接复用 POST /dq/assistant/chat SSE 接口渲染更丰富的交互式图表与多模态面板。

4. 🧹 命名与文档彻底规范

  • 全量清理旧包名与遗留配置,统一收敛为单包命名 github.com/strugglerx/gf-mate。
  • 快捷问题全面采用通用订单/电商示例,移除所有敏感业务字段。
  • 单文件嵌入 Bundle dist/dq-widget.js gzip 体积严格控制在 37KB(红线 ≤ 40KB)。

Full Changelog: v0.1.0...v0.2.0

v0.1.0 — 首个开源版本

Choose a tag to compare

@strugglerx strugglerx released this 21 Oct 14:15

gf-mate v0.1.0

GoFrame v2 AI 数据查询插件首个开源版本。

核心能力

  • 🗣️ 自然语言查数:AI 直接写只读 SQL(批量提交),JOIN/窗口函数/CTE/UNION 任意复杂度
  • 🛡️ 五道只读门禁:单语句 / SELECT-WITH 开头 / 写关键字黑名单 / 表白名单 / 强制 LIMIT + 超时
  • 📊 智能图表:AI 根据数据形态自动选表格/柱状/折线/饼图/指标卡(零依赖 SVG 渲染)
  • 🧩 一行嵌入:<script src="/dq/dist/dq-widget.js"> 悬浮小窗,React/Vue/原生通吃
  • 🔄 多轮对话:上下文连续,服务端保留最新 10 条
  • 🗄️ 多数据库:MySQL / DM8(达梦)开箱即用,方言自动探测注入提示词
  • ⚡ 标准协议:OpenAI 兼容 SSE 流式输出,任何 OpenAI SDK 客户端可直接对接

安装

go get github.com/strugglerx/gf-mate@v0.1.0