wanghanlin
|
d6a20f228a
|
feat: 支持图片/附件 SFTP 上传、多模态对话与 FAQ Markdown 编辑器
后端:
- 新增 SFTP 附件上传服务与 /attachment/upload 接口
- 新增 StorageProperties 集中化存储配置(支持 DataSize 50MB)
- ChatContext 新增 imageUrls,AI 调用链路透传多模态图片
- AssistantApp 构造 UserMessage(text, Media) 实现视觉输入
- ContentSafetyAdvisor MASK 脱敏时保留原消息图片 Media
- 配置拆分到 application-dev.yml / application-prod.yml(对齐参考项目)
前端:
- 对话面板支持图片/附件上传与缩略图/下载链接展示
- chat.ts 透传 imageUrls,chatAdapter 增加 Attachment 模型
- FAQ 编辑器替换为 md-editor-v3,支持粘贴图片自动上传
- FAQ 表格答案摘要去除 markdown 语法
- UI-DEV-GUIDE 补充 FormDrawer 使用规范
|
2 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
|
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
|
61b0ae5639
|
feat(sensitive-word): 敏感词管理页布局与交互优化
- 工具栏新增级别筛选、统计提示,表格新增备注/更新时间列
- 状态列改为 t-switch 一键启用/禁用(失败自动回滚)
- 编辑弹窗加宽并新增启用开关、保存 loading、必填校验
- 批量导入提示成功/跳过重复数,删除确认带词内容
- 后端 list 接口新增 level 级别过滤参数
|
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
|
7ce8028d73
|
重构客服角色管理页面排版
|
2 weeks ago |
wanghanlin
|
1dc9cc9fe6
|
修复保存faq报错问题
|
2 weeks ago |
wanghanlin
|
d5585206cf
|
新增反馈运营看板删除功能
|
2 weeks ago |
wanghanlin
|
1ed6c8fb43
|
新增反馈运营看板
|
2 weeks ago |
wanghanlin
|
bfb5a66393
|
AI回复增加推荐问题功能
|
3 weeks ago |
wanghanlin
|
149dc3270c
|
新增日志查看功能
|
3 weeks ago |
wanghanlin
|
5caebfb20f
|
API Key 管理页面编辑功能
|
3 weeks ago |
wanghanlin
|
527d9e71b7
|
AI 对话执行链路流程图
|
4 weeks ago |
wanghanlin
|
4eb726a056
|
SDK 聊天窗口底部的保密声明
|
1 month ago |
wanghanlin
|
91c4c185b3
|
重构(AI对话): 统一对话管道,收敛接口形态,补齐Open API能力
|
1 month ago |
wanghanlin
|
14c5ccf6ab
|
、API Key 绑定客服角色、编写 SDK 集成文档
|
2 months ago |
wanghanlin
|
631398833a
|
添加文件存储和下载功能
|
2 months ago |
wanghanlin
|
8c02a3f054
|
为客服角色管理页面的字段添加 label
并移除排序字段
|
2 months ago |
wanghanlin
|
747a9ab558
|
支持mcp服务加入对话链
|
2 months ago |
wanghanlin
|
d95c921227
|
重构配置页面,对标cc-switch三要素设计,新增动态模型列表获取
|
2 months ago |
wanghanlin
|
f8e5a1b59c
|
fix(安全): 修复多个安全漏洞和功能问题
安全修复:
- 修复会话管理 API 安全限制被完全解除的问题
- 移除 SecurityConfig 中会话接口的 permitAll() 配置
- 为 ConversationController 所有方法添加 @PreAuthorize 注解
- 新增 SDK 安全会话端点,内置账户归属校验
- 修复 verifyConversationOwnership 所有权绕过漏洞
- 强制要求至少提供 accountId 或 roleId 一个有效参数
- 防止通过空参数绕过归属校验
功能修复:
- 修复 Webhook 创建时 user_id 违反非空约束
- 从 SecurityContext 获取当前登录用户 ID
- 同步修复 ApiKeyController 的相同问题
- 修复 SDK 会话接口安全问题
- 新增 /ai/sdk/conversation/* 端点
- 实现 conversation_session 表归属校验
- SDK 前端代码迁移到新端点
影响范围:
- 会话管理接口现在需要 JWT 认证
- Webhook 和 API Key 创建功能恢复正常
- SDK 会话功能通过归属校验保证安全
安全等级:高危漏洞修复
涉及文件:8 个 Java 文件 + 3 个 SDK 文件
|
2 months ago |
wanghanlin
|
43449bc59a
|
fix(model-config): AI 大模型配置管理全面排查修复(20 项)
后端修复:
- 修复 updateConfig 激活逻辑竞态条件:appType 变更时只停用目标类型的活跃配置
- 修复 getConfigDetail 直接修改 MyBatis 缓存实体的安全隐患,改为防御性拷贝
- 修复 persistExtraConfig 异常被静默吞掉的问题,改为抛出异常触发事务回滚
- 修复 deleteConfig 缺失 @Transactional 注解
- 修复 updatePriority 未校验配置存在性
- 修复 updateConfig 空 apiKey(trim 后)会覆盖已有值的问题
- createConfig 增加 provider 字段非空校验
- 导入接口增加 100 条数据量限制,导出接口移除 maskApiKey 参数强制脱敏
- ChatModelFactory.testConnection 使用专用线程池替代 ForkJoinPool.commonPool
- EmbeddingModelFactory RetryTemplate 显式设置最大重试次数
- ModelConfigLoader 增加 RERANK 类型启动校验
- RERANK 健康状态从误报 ONLINE 改为 UNKNOWN
- listConfigs 从原生 SQL 重构为 MyBatis Plus LambdaQueryWrapper
前端修复:
- 新建模式切换提供商时始终重置 model_name 为新提供商默认模型
- 编辑模式切换提供商时清理不属于新提供商的无效 model_name
- extraConfig 始终发送(含空对象),确保后端能清空已废弃的高级参数
- 关闭导入弹窗时重置预览和结果状态
- 健康看板支持 UNKNOWN 状态(🟡 未检测)展示
|
2 months ago |
wanghanlin
|
c70d96c00d
|
修复文档列表移动分类功能的 bug
|
2 months ago |
wanghanlin
|
0414e209cb
|
大模型配置管理功能增强
|
2 months ago |
wanghanlin
|
e5cf51c507
|
知识库文档管理 P0 阶段功能完善与体验优化
- 新增文档关键词搜索(title + source_name LIKE 查询,前端 300ms 防抖)
- 文档列表增加文件大小(formatBytes)和分类名称列
- 分类管理支持编辑弹窗、树形层级展示(最多3级)、创建时选择父分类
- 新建 DocumentProcessingService 异步处理服务,上传/重处理改为同步插入
PROCESSING 记录 + 异步执行,前端自动轮询状态
- 修复分页参数越界、LIKE 通配符未转义、异步删除竞态条件等安全问题
- 修复全选 checkbox 始终选中、分类排序方向不一致、文本上传缺少认证头等缺陷
- 移除 DocUpload.js 遗留调试日志
|
2 months ago |
pyx
|
1e0c9a7f11
|
智能客服支持角色知识库并修复 SDK 历史会话隔离
|
2 months ago |
wanghanlin
|
dec3d19f3c
|
用户认证/运营看板/API开放平台
|
2 months ago |
wanghanlin
|
f7eb0bfaf1
|
feat(P0): 完成阶段一全部需求 — 混合检索/内容安全/用户反馈/FAQ精准匹配
P0-001 混合检索+重排序引擎:
- HybridSearchService 支持 VECTOR/KEYWORD/HYBRID 三种检索模式
- RrfFusion RRF 融合算法 (k=60)
- RerankerService 支持 DashScope + OpenAI 兼容多提供商
- vector_store 新增 content_tsvector 列 + GIN 索引 + 触发器
- DocSearch.js 增加检索模式下拉选择
P0-004 内容安全过滤:
- ContentSafetyService DFA 字典树引擎(volatile + copy-on-write 线程安全)
- ContentSafetyAdvisor BaseAdvisor 实现,输入/输出双向审核
- SensitiveWordService 敏感词 CRUD + 批量导入 + 字典树热加载
- SensitiveWordManager.js 前端管理组件
P0-002 用户反馈系统:
- MessageFeedbackService upsert 语义反馈提交 + 统计 API
- ChatPanel.js 添加 👍/👎 反馈按钮
- Chat SDK handleFeedback() 对接后端 POST /feedback
- ConversationService 导出集成反馈信息
P0-003 意图识别+FAQ精准匹配:
- IntentRouter LLM 意图分类(FAQ/RAG/CHITCHAT)
- FaqMatchEngine 三级匹配(精确→关键词→向量语义,阈值 0.85)
- FaqService FAQ CRUD + 异步向量化
- FaqManager.js 前端管理(CRUD + 批量导入/导出 + 启用/禁用)
共享变更:
- DatabaseInitConfig 新增 5 张表 + 全文检索初始化
- api.js 新增反馈/敏感词/FAQ API 封装
- app.js 注册 SensitiveWordManager + FaqManager 组件
- application.yml 新增 knowledge.faq.semantic-threshold 配置
|
2 months ago |
wanghanlin
|
8e586a8c35
|
求移除未使用的 PRODUCT_EXTRACT(商品信息抽取)类型配置
|
2 months ago |
pyx
|
3e128ff5ff
|
聊天接口支持外部账号自动创建并修复会话按账号隔离
|
2 months ago |
pyx
|
b11d3f7ad7
|
聊天接口传入外部账号时自动创建客户账号
|
2 months ago |
wanghanlin
|
c4af6699cf
|
把嵌入模型支持从仅千问扩展到多厂商。前端限制、后端自动覆盖
|
2 months ago |
pyx
|
93a7291040
|
RAG选择补充为多路
|
2 months ago |
pyx
|
d3ed72f62b
|
fix: restore model config flow and make RAG optional
|
2 months ago |
pyx
|
9482a9e573
|
样式调整,角色账号权限初始化提交
|
2 months ago |
wanghanlin
|
f79350c363
|
完成了模型配置管理页面(5家AI提供商集成+运行时动态切换)
|
2 months ago |
pyx
|
dd103639f8
|
初次提交
|
2 months ago |
wanghanlin
|
4a69fa047f
|
三期- 前端会话管理功能
- 统计卡片:展示总会话数、总消息数、今日会话、今日消息
- 搜索栏:支持按会话ID或消息内容模糊搜索
- 会话列表表格:展示会话ID、消息数、最后消息时间、预览
- 消息详情弹窗:分类展示用户/AI/系统消息,带时间戳
- 导出功能:一键下载 .txt 格式的会话记录
- 删除功能:逻辑删除整会话的所有消息
|
2 months ago |
wanghanlin
|
6f861fcf79
|
二期-文档列表完善批量操作、上传校验、去重、分块配置与上传进度功能
|
2 months ago |
wanghanlin
|
95a54f3c87
|
一期
|
2 months ago |
hygl
|
f49e186f8a
|
支持多种文件格式的上传和解析, 实现自定义知识库的功能
|
1 year ago |
hygl
|
dc5a6deb02
|
调整项目结构
|
1 year ago |
hygl
|
f937ea2756
|
AI 应用接口开发, 支持流式输出
|
1 year ago |
hygl
|
0c8ba9d270
|
初始化spring boot项目,测试spring ai框架是否能正常调用ai大模型
|
1 year ago |