mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-17 17:27:35 +08:00
🐛 fix(ai/query-editor/mac-window): 修复模型兼容性并优化即时执行与窗口交互
- AI 兼容性:为 Anthropic Provider 补齐 tools/tool_use/tool_result 协议转换,支持工具调用与流式工具结果解析 - 降级策略:OpenAI 兼容接口在 tools 请求返回 400/422/404 时自动回退为纯文本模式 - 配置修复:调整 MiniMax 预设为 Anthropic 兼容端点并更新默认模型列表 - 状态隔离:AI 聊天面板停止将动态模型列表写回供应商配置,避免污染静态 models 数据 - 编辑器修复:QueryEditor 在 runImmediately 场景下避免重复追加 SQL,改为直接选中并执行 - 交互优化:修复 macOS 原生窗口控制切换与标题栏点击行为,避免窗口按钮状态异常
This commit is contained in:
@@ -2040,11 +2040,25 @@ const QueryEditor: React.FC<{ tab: TabData }> = ({ tab }) => {
|
||||
setCurrentDb(dbName);
|
||||
}
|
||||
|
||||
|
||||
const editor = editorRef.current;
|
||||
const monaco = monacoRef.current;
|
||||
if (editor && monaco) {
|
||||
let position = editor.getPosition();
|
||||
const model = editor.getModel();
|
||||
const existingContent = editor.getValue?.() || '';
|
||||
|
||||
// runImmediately 模式下,如果编辑器内容已是待注入的 SQL(TabManager 创建时已传入),
|
||||
// 跳过追加,直接选中全部内容并执行
|
||||
if (e.detail.runImmediately && existingContent.trim() === sqlText.trim()) {
|
||||
if (model) {
|
||||
const lineCount = model.getLineCount();
|
||||
const maxCol = model.getLineMaxColumn(lineCount);
|
||||
editor.setSelection(new monaco.Range(1, 1, lineCount, maxCol));
|
||||
editor.focus();
|
||||
setTimeout(() => handleRun(), 500);
|
||||
}
|
||||
} else {
|
||||
let position = editor.getPosition();
|
||||
if (!position && model) {
|
||||
const lineCount = model.getLineCount();
|
||||
const maxCol = model.getLineMaxColumn(lineCount);
|
||||
@@ -2081,6 +2095,7 @@ const QueryEditor: React.FC<{ tab: TabData }> = ({ tab }) => {
|
||||
setTimeout(() => handleRun(), 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
setQuery((prev: string) => prev ? prev + '\n' + sqlText : sqlText);
|
||||
message.success('代码已追加');
|
||||
|
||||
Reference in New Issue
Block a user