wanghanlin
|
08fdc2e82d
|
修改样式
|
4 days ago |
wanghanlin
|
321bee93ff
|
fix(mcp): 修复 SSE 端点带路径前缀时连接 404
HttpClientSseClientTransport 内部用 URI.resolve 拼接端点,对以 / 开头的
sseEndpoint 会整体替换 path,导致 /mcp-cdw/sse 被解析成 /sse 丢失前缀。
改为显式拆分 origin 与 path,分别作为 baseUri 与 sseEndpoint 传入,
并兼容用户填 base 或完整 SSE URL 两种写法。
|
4 days ago |
wanghanlin
|
11572a7023
|
修改样式
|
4 days ago |
wanghanlin
|
83964afcfc
|
refactor(client): 外围组件原生化并清理死代码,缩小 SDK 体积
- t-select/t-dialog/t-alert/t-tag/t-button 替换为原生 DOM,删 5 条组件 import 与 omi 直接依赖,min 版缩小约 212KB
- 清理死代码:images.d.ts、失效测试、dist 残留、getMessages、死类型、showAdminPanel、未用 i18n key、t-tag 死 CSS
- 修复 i18n 缺失 confirm/cancel 翻译与自绘确认框 ESC 冲突
|
4 days ago |
wanghanlin
|
a2971ba2c2
|
修改样式
|
4 days ago |
wanghanlin
|
b56cea0c8c
|
fix(client): 历史会话时间智能分档显示并修复操作栏按钮 tooltip
历史会话列表时间由原始 ISO 字符串改为智能分档:今天/昨天显示 HH:mm,同年显示 MM-DD HH:mm,跨年显示 YYYY-MM-DD HH:mm。
操作栏按钮(重新生成/复制/点赞/点踩)补齐 hover 文字说明:修复 tooltip 浮层 z-index 低于聊天窗(9999)被遮挡,及 .t-tooltip 深色背景样式在 light DOM 浮层缺失的问题(globalCSS 只对 shadow DOM 生效)。
|
4 days ago |
wanghanlin
|
431b1f2b1d
|
fix(client): 修复第三方接入 SDK 后 markdown 排版与标签样式缺失
根因:tdesign-web-components 的聊天/markdown 变量(--td-chat-*/--td-chat-md-*/--td-chat-input-*)
定义在 globalCSS 的 constructable stylesheet 中,选择器为 :root;但 adoptedStyleSheets 里的
:root 不匹配 shadow root,导致这些变量无法进入渲染 markdown 的 shadow DOM,标题/列表/引用/
代码块回退为初始值。t-tag 是 light DOM 组件,其 .t-tag 样式同样只在 globalCSS 中、进不了 light DOM。
改动:
- styles.ts 新增 tdChatVars(),将聊天/markdown/input 变量自包含声明在 .csk-root 上
- styles.ts 补注入 .csk-root .t-tag 系列 light DOM 样式
- 配合此前 tdThemeVars() 的主题变量,SDK 样式完全自包含,不再依赖宿主页面
|
5 days ago |
wanghanlin
|
da031c6ff0
|
fix(client): 修复重新生成清空历史,优化引用来源/推荐问题与历史滚动
- 重新生成改为调用后端会话截断接口,同步前后端数据,避免历史回复被清空
- 引用来源折叠开关与推荐问题改用 t-button,风格对齐 ChatActionbar 操作栏
- 历史消息渲染后延迟滚动到底部,修复停在滚动条中间的问题
|
5 days ago |
wanghanlin
|
021dfa9199
|
回复内容自适应 SDK 弹窗宽度
|
5 days ago |
wanghanlin
|
a1328994a5
|
feat(mcp): MCP 服务配置支持自定义请求头鉴权
- mcp_server_config 新增 headers JSONB 字段,SSE 模式通过 customizeRequest 注入请求头
- 敏感头(Authorization 等)返回前脱敏,更新时未改动保留原值
- DatabaseInitConfig 与 init-database.sql 同步新增 headers 列迁移
- McpClientManager 增加 @DependsOn(databaseInitConfig) 保证列迁移先于客户端加载
- 前端 MCP 配置弹窗新增请求头输入框
|
5 days ago |
wanghanlin
|
97f8f1a8f0
|
回复内容自适应 SDK 弹窗宽度
|
5 days ago |
wanghanlin
|
e23b70ffca
|
feat(client): SDK 界面重构改用 TDesign Web Components 组件
- 聊天核心:消息气泡/输入框/操作栏/加载态改用 t-chat-message/t-chat-sender/t-chat-action/t-chat-loading
- 外围 UI:知识库下拉/推荐问题/离线横幅改用 t-select/t-tag/t-alert
- Markdown 渲染由 t-chat-item 内置 cherry-markdown 承担,移除自研 marked 渲染器与 marked.min.js
- 构建管线:引入 tdesign-web-components@1.2.10 按需打包,mermaid 用本地 stub 替换省约 1.2MB
- 清理重构后死代码与死样式(escapeHtml/getLocale/appendStreamingCaret/offlineBannerEl 等)
- 同步更新测试面板断言(T3/T6/T10 适配 t-chat-sender)与 README/CLAUDE.md
|
6 days ago |
wanghanlin
|
b9f91d0903
|
fix(sse): 修复 SSE 鉴权头覆盖问题并同步测试用例文档
- sse.ts authHeaders 仅当调用方未显式提供 Authorization 时才注入管理后台 token,避免覆盖测试面板传入的 SDK Token
- client/README.md、client/CLAUDE.md 同步测试用例数量 22 → 10
|
6 days ago |
wanghanlin
|
8132f26891
|
feat(sdk-test): 测试面板重构为 Vue 3 + TDesign Chat 应用
- 新增 Vite 多页入口 sdk-test.html 与 SdkTestPanel.vue,用 TDesign Chat(ChatList/ChatSender/ChatActionbar)渲染对话演示
- 对话演示直调 GET /ai/chat/stream(OpenAI 格式),复用 readSSEStream 解析 delta.content,支持同步/流式、RAG 开关与来源展示
- SDK 集成验证区精简为 10 个核心用例,接口统一迁到新路径 /ai/chat*
- cp-to-static.mjs 构建后将 sdk-test.html 移动到 static/sdk/test.html
|
6 days ago |
wanghanlin
|
2f09b3fabf
|
feat(client): SDK 悬浮窗口对话视觉对齐 TDesign Chat 规范
- styles.ts 对齐气泡圆角/头像/时间戳/输入框/发送按钮/加载态/操作栏/来源卡片/快捷芯片视觉
- dom.ts 微调时间戳与操作栏相对位置
- 保持零依赖 IIFE、csk-* 类名零增删改、主色变量与暗色模式同步
|
6 days ago |
wanghanlin
|
940caedea8
|
feat(部署): 前端静态资源免认证访问与打包配置
- pom.xml 将 static/** 单独作为资源目录,关闭 filtering 并指定 targetPath 避免平铺到 classes 根目录
- JwtAuthFilter 跳过首页与静态资源路径,避免管理后台密钥误校验产生 WARN 日志
- SecurityConfig 放行 /、/index.html、/assets/**、/sdk/** 等静态资源与首页
|
6 days ago |
wanghanlin
|
60d336d384
|
fix(前端): 反馈看板时间列统一 formatDate 格式化
- 反馈看板「时间」列改用 formatDate 输出 YYYY-MM-DD HH:mm:ss,空值显示 -
- 提示词追踪移除重复的 fmtDateTime 内联实现,复用统一 formatDate
- 反馈看板新增「补充说明」列及消息详情补充说明展示
|
6 days ago |
wanghanlin
|
6be019082e
|
docs: 同步对话接口迁移与 OpenAI SSE 格式说明
- README.md、SDK-INTEGRATION.md、client/README.md、client/CLAUDE.md 四处接口表更新为新路径 /ai/chat、/ai/chat/stream、/ai/chat/sources
- 补充流式接口 OpenAI Chat Completions SSE 格式说明(data: JSON chunk + data: [DONE])
- 删除废弃的 /ai/assistant_app/* 路径与 rag/sync 描述
|
6 days ago |
wanghanlin
|
b0319392a2
|
feat(client): 前端与 SDK 迁移新对话接口并支持 OpenAI SSE 解析
- 前端 chat.ts 合并为 chatSync/chatSSEUrl/ragSources 三个函数,统一走 /ai/chat、/ai/chat/stream、/ai/chat/sources,用 ChatOptions + enableRag 布尔参数统一普通/RAG 路径
- 前端 sse.ts 新增 extractOpenAIDelta 解析 choices[0].delta.content,识别 error chunk,JSON 解析失败回退纯文本,旧纯文本流向后兼容
- ChatPanel.vue 将 RAG sync/SSE/普通 sync/SSE 四分支合并为 sync/SSE 两分支
- SDK api.ts 迁移 URL 至 /ai/chat 系列,chatSSERequest 抽取 emitRawChunk 解析 OpenAI delta 与 error,正确处理 data: [DONE]
|
6 days ago |
wanghanlin
|
1cd8ed1248
|
feat(chat): 流式对话输出对齐 OpenAI Chat Completions 标准 SSE 格式
- 新增 AssistantApp.chatStreamOpenAi,复用 chatStream 编排逻辑,将流式文本分片包装为 data: {"choices":[{"delta":{"content":"..."}}]} 标准 JSON chunk
- 首片 delta 携带 role=assistant,流结束时追加 finish_reason=stop chunk 与 data: [DONE];熔断降级、FAQ 命中、错误兜底统一走 openAiFallbackStream
- AiController、OpenApiController 的流式接口改调 chatStreamOpenAi,旧路径保留纯文本输出向后兼容
|
6 days ago |
wanghanlin
|
953a3c96ab
|
fix(chat): 修复 ChatList 消息显示为骨架屏的问题
ChatList 内部会把任何 truthy 的 status 强制重写为 "pending",
导致所有历史消息都显示为骨架屏。移除 chatAdapter 中的 status 字段,
由 ChatPanel.vue 的 #content slot 自行控制流式/错误态渲染。
|
6 days ago |
wanghanlin
|
7f6b696885
|
refactor(chat): 使用 TDesign Chat 组件重构聊天面板
安装 @tdesign-vue-next/chat@0.6.0 并新增 chatAdapter.ts 统一消息格式适配;
将 ChatPanel.vue 的手写消息列表、输入框与操作栏替换为 ChatList/ChatSender/ChatActionbar,保留 SSE、RAG、MCP、反馈、推荐问题、编辑及重新生成等业务逻辑;
同步优化 vite.config.ts 的 manualChunks,将 tdesign-chat、tdesign-web-components 与 tdesign 拆分为独立 chunk。
|
7 days ago |
wanghanlin
|
23f195326d
|
feat(llm-trace): 提示词追踪增强与缺陷修复
新增追踪字段与落库链路:
- FAQ 命中详情(faqId/faqQuestion/faqMatchType/faqScore)
- 错误分类(errorType/errorMessage)与 Token 用量三档
- MCP 工具调用事件(toolCallsJson)、多轮历史(historyMessagesJson/historyTurns)
- RAG 命中片段(ragHitsJson)、检索模式(searchMode)、账户/API Key
- 数据库迁移新增 13 列 + 3 索引,同步 init-database.sql
前端增强:
- 筛选新增 API Key / 错误类型下拉,列表新增 RAG 列与刷新按钮
- 详情 Tab 扩展 FAQ / 工具调用 / 对话上下文,Prompt 关键词搜索高亮
- 新增会话时间线抽屉、调用趋势图(Chart.js 双轴折线)
缺陷修复:
- MCP 工具事件采集改用 ToolContext 显式收集器,修复 Reactor 流式跨线程丢 ThreadLocal 导致 toolCallsJson 为空
- 趋势统计 GROUP BY 别名改为 date_trunc 表达式,修复 PostgreSQL 语法错误
- 详情表格移除重复 row-key,新增 /error-types 与 /trend 接口
|
1 week ago |
wanghanlin
|
2fe322aa7d
|
完成「LLM 调用追踪面板」开发
|
1 week ago |
wanghanlin
|
4438545693
|
TDesign 术语对齐
|
1 week ago |
wanghanlin
|
61fc637992
|
TDesign 术语对齐
|
1 week ago |
wanghanlin
|
394c49591c
|
Merge pull request 'chore(deps): 升级 TDesign UI 组件库至最新版' (#2) from TDesign-Vue-Next-1.20.6 into master
Reviewed-on: #2
|
1 week ago |
wanghanlin
|
add8b3fd05
|
chore(deps): 升级 TDesign UI 组件库至最新版
- tdesign-vue-next: ^1.10.6 → ^1.20.6
- tdesign-icons-vue-next: ^0.3.6 → ^0.4.9
|
1 week ago |
wanghanlin
|
45d34e76d1
|
优化前端配色
|
1 week ago |
wanghanlin
|
d6be720965
|
按 ui-ux.md 规范重设计「系统配置」页
|
1 week ago |
wanghanlin
|
61b0ae5639
|
feat(sensitive-word): 敏感词管理页布局与交互优化
- 工具栏新增级别筛选、统计提示,表格新增备注/更新时间列
- 状态列改为 t-switch 一键启用/禁用(失败自动回滚)
- 编辑弹窗加宽并新增启用开关、保存 loading、必填校验
- 批量导入提示成功/跳过重复数,删除确认带词内容
- 后端 list 接口新增 level 级别过滤参数
|
1 week ago |
wanghanlin
|
27d17e2af8
|
chore: 忽略 frontend/.claude 目录
|
1 week ago |
wanghanlin
|
a8cb53b171
|
fix(mcp): MCP 客户端服务端重启后自动重连
|
1 week ago |
wanghanlin
|
7222893120
|
feat(role): 客服角色管理页布局优化并支持 MCP 工具全选
|
1 week ago |
wanghanlin
|
6590ac762d
|
feat(role): 客服角色 MCP 工具授权
- 修正 allowedMcpTools 空列表语义:仅无角色(null)回退为全部,空列表=严格禁止
- 三个对话入口区分「无角色」与「角色无授权」,无角色向后兼容允许全部
- 工具注册名引入 configId 命名空间(mcp_<configId>_<name>),避免跨 Server 同名工具冲突
- 新增 GET /mcp-server/tools 接口,返回按 Server 分组的可用工具清单
- 更新角色 MCP 授权后清理 AssistantApp ChatClient 缓存,改动即时生效
- listRoles 解析 allowed_mcp_tools JSONB 为 string[],避免 PGobject 原样返回
- 前端 RoleManager 新增「MCP 工具授权」区块,接入保存/脏检测/全部授权
|
1 week ago |
wanghanlin
|
c22d044e5c
|
fix(sdk): 修复 marked 列表渲染异常导致回复挤成一行
marked v15 的 Parser.parse 按 token.type 做 switch 分发、无 list_item 分支,list(token) 用 this.parser.parse([item]) 会抛异常,被 renderMarkdown 降级为纯文本,导致换行折叠成一行、Markdown 全部失效。改为官方写法 this.listitem(item)。
- 修正 marked 版本注释 v18 → v15.0.12(与部署产物实际版本一致)
- 同步更新 client/CLAUDE.md 与 README.md 的 Markdown 模块说明与部署依赖
- .gitignore 忽略 sdk 构建产物目录
|
2 weeks ago |
wanghanlin
|
0205af7b72
|
fix(app): SSE 流式输出保留行尾空白避免 Markdown 标题损坏
新增 preserveTrailingWhitespace 方法,缓冲以空白结尾的 chunk 与下一 chunk 合并后发出,规避前端 SSE 逐行 trim 导致的行尾空格丢失(如 "## " 标题标记被拼成 "##标题")。
- 捕获内部订阅并注册 onCancel/onDispose,下游取消时同步取消上游,避免资源泄漏
- 尾部空白缓冲设 256 上限,防止纯空白输出导致 buffer 无界增长
- onError 先 flush 已缓冲内容再传播,避免已生成文本丢失
- 空白判定改用 Character.isWhitespace,对齐前端 trim 语义
|
2 weeks ago |
wanghanlin
|
0953e9481b
|
chatsdk 对markdown解析器进行重构
|
2 weeks ago |
wanghanlin
|
7ce8028d73
|
重构客服角色管理页面排版
|
2 weeks ago |
wanghanlin
|
1dc9cc9fe6
|
修复保存faq报错问题
|
2 weeks ago |
wanghanlin
|
d5585206cf
|
新增反馈运营看板删除功能
|
2 weeks ago |
wanghanlin
|
1ed6c8fb43
|
新增反馈运营看板
|
2 weeks ago |
wanghanlin
|
b5abf32530
|
迁移到 TDesign 架构时漏掉了文档上传路由和菜单入口
|
2 weeks ago |
wanghanlin
|
1fe6a19366
|
修复:TDesign <t-space> 内部 v-if 导致按钮动作错位
|
3 weeks ago |
wanghanlin
|
fc1193c4f3
|
完成了 AI 执行链流程图的 5 项差异修正,并建立了三层持续同步机制(CLAUDE.md 规则 + Stop Hook + JavaDoc 标记)
|
3 weeks ago |
wanghanlin
|
fe49bebadb
|
优化界面排版
|
3 weeks ago |
wanghanlin
|
bfb5a66393
|
AI回复增加推荐问题功能
|
3 weeks ago |
wanghanlin
|
7a44abed78
|
logo瘦身
|
3 weeks ago |
wanghanlin
|
03dd0ab557
|
chatsdk窗口增加水印功能
ChatbotSDK瘦身
|
3 weeks ago |
wanghanlin
|
532994ba20
|
chatsdk清空对话按钮改为新对话
|
3 weeks ago |