From 0c1a8544e8e63e486d6706990e65d3b2e455e701 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Mon, 22 Jun 2026 18:05:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B9=B3=E5=8F=B0=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?-=20=E6=A8=A1=E5=9E=8B=E6=8F=90=E4=BE=9B=E5=95=86=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=B5=8B=E8=AF=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 前端:添加"测试连接"按钮,支持实时测试 provider 可用性 - 后端:新增 TestProvider 接口,发送测试请求验证配置 - 路由:注册 POST /providers/{id}/test 端点 - 初始化:LLM Manager 优先从数据库加载 providers,失败时回退到环境变量 - .gitignore:忽略构建产物 server/bin/、server-* 和 test-* 目录 --- .gitignore | 3 + apps/web/src/app/platform/providers/page.tsx | 38 ++++- server/cmd/server/router.go | 24 ++- server/internal/handler/platform.go | 150 +++++++++++++++---- 4 files changed, 175 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index 053df37..752a6bd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,10 @@ # ===== Go ===== server/server +server/server-* server/tmp/ +server/bin/ +server/cmd/test-*/ *.exe *.exe~ *.dll diff --git a/apps/web/src/app/platform/providers/page.tsx b/apps/web/src/app/platform/providers/page.tsx index d9ac792..1d55de0 100644 --- a/apps/web/src/app/platform/providers/page.tsx +++ b/apps/web/src/app/platform/providers/page.tsx @@ -26,7 +26,7 @@ import { AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { toast } from "sonner"; -import { Plus, Pencil, Power, Trash2, Cpu, CheckCircle2, XCircle } from "lucide-react"; +import { Plus, Pencil, Power, Trash2, Cpu, CheckCircle2, XCircle, Wifi } from "lucide-react"; import { Pagination } from "@/components/ui/pagination"; interface ProviderForm { @@ -55,6 +55,7 @@ export default function PlatformProvidersPage() { const [editing, setEditing] = useState(null); const [deleteTarget, setDeleteTarget] = useState(null); const [page, setPage] = useState(1); + const [testingId, setTestingId] = useState(null); const { data: providers } = useQuery({ queryKey: ["platformProviders"], @@ -126,6 +127,31 @@ export default function PlatformProvidersPage() { onError: (e: Error) => toast.error(e.message), }); + const testConnection = useMutation({ + mutationFn: (id: string) => api.post(`/api/v1/platform/providers/${id}/test`), + onSuccess: (data: any) => { + if (data.success) { + toast.success("连接测试成功", { + description: data.response || "Provider 响应正常", + }); + } else { + toast.error("连接测试失败", { + description: data.message || "未知错误", + }); + } + setTestingId(null); + }, + onError: (e: Error) => { + toast.error("连接测试失败", { description: e.message }); + setTestingId(null); + }, + }); + + const handleTest = (id: string) => { + setTestingId(id); + testConnection.mutate(id); + }; + const handleSubmit = () => { if (!editing) return; if (!editing.name || !editing.base_url) { @@ -222,6 +248,16 @@ export default function PlatformProvidersPage() { > 编辑 +