From 69f3c2a29b1df9d96abda08714dc3eaae83b00ff Mon Sep 17 00:00:00 2001 From: Yaojia Wang Date: Mon, 29 Jun 2026 16:52:43 +0200 Subject: [PATCH] =?UTF-8?q?fix(web):=20=E6=8A=80=E8=83=BD=E9=A1=B5=20bg-pa?= =?UTF-8?q?per/=E5=88=A0=E9=99=A4=E8=99=9A=E6=9E=84=E5=88=9B=E4=BD=9C?= =?UTF-8?q?=E4=B8=AD=E5=BE=BD=E6=A0=87/=E8=AE=BE=E7=BD=AE=E9=A1=B5=20try-f?= =?UTF-8?q?inally/=E6=96=87=E9=A3=8E=E9=A1=B5=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E5=AE=9A=E9=AB=98=20grid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/components/ProjectCard.tsx | 8 +- .../components/settings/ProvidersSettings.tsx | 88 +++++++++++-------- apps/web/components/skills/SkillsPage.tsx | 6 +- apps/web/components/style/StylePage.tsx | 6 +- 4 files changed, 60 insertions(+), 48 deletions(-) diff --git a/apps/web/components/ProjectCard.tsx b/apps/web/components/ProjectCard.tsx index 8f03b4f..1fa3fe7 100644 --- a/apps/web/components/ProjectCard.tsx +++ b/apps/web/components/ProjectCard.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { BookOpen, ChevronRight, Clock3, Sparkles } from "lucide-react"; +import { BookOpen, ChevronRight, Clock3 } from "lucide-react"; import { Badge } from "@/components/ui/Badge"; import type { ProjectResponse } from "@/lib/api/types"; @@ -67,12 +67,8 @@ export function ProjectCard({ project, compact = false }: ProjectCardProps) {
{project.genre ? {project.genre} : null} - - {pendingCount > 0 ? ( - {pendingCount} 待审稿 + {pendingCount} 待审 ) : null}
diff --git a/apps/web/components/settings/ProvidersSettings.tsx b/apps/web/components/settings/ProvidersSettings.tsx index 00996fb..4c3a56f 100644 --- a/apps/web/components/settings/ProvidersSettings.tsx +++ b/apps/web/components/settings/ProvidersSettings.tsx @@ -21,6 +21,7 @@ import { Select } from "@/components/ui/Select"; import { StatusNote } from "@/components/ui/StatusNote"; import { TextInput } from "@/components/ui/TextInput"; import { api } from "@/lib/api/client"; +import { cardClass } from "@/lib/ui/variants"; import { API_KEY_PROVIDERS, KNOWN_PROVIDERS, @@ -91,17 +92,22 @@ export function ProvidersSettings({ const saveRouting = async (): Promise => { setSavingRouting(true); - const { data, error } = await api.PUT("/settings/providers", { - body: { tier_routing: draftsToRoutingInput(routing) }, - }); - setSavingRouting(false); - if (error || !data) { - toast("保存档位路由失败,请重试", "error"); - return; + try { + const { data, error } = await api.PUT("/settings/providers", { + body: { tier_routing: draftsToRoutingInput(routing) }, + }); + if (error || !data) { + toast("保存档位路由失败,请重试", "error"); + return; + } + setProviders(data.providers ?? []); + setRouting(toRoutingDrafts(data.tier_routing ?? [])); + toast("档位路由已保存", "success"); + } catch { + toast("保存档位路由失败,请检查后端连接", "error"); + } finally { + setSavingRouting(false); } - setProviders(data.providers ?? []); - setRouting(toRoutingDrafts(data.tier_routing ?? [])); - toast("档位路由已保存", "success"); }; const saveCredential = async (providerId: string): Promise => { @@ -111,43 +117,53 @@ export function ProvidersSettings({ return; } setSavingId(providerId); - const { data, error } = await api.PUT("/settings/providers", { - body: { credentials: [{ provider: providerId, api_key: apiKey }] }, - }); - setSavingId(null); - if (error || !data) { - toast("保存凭据失败,请重试", "error"); - return; + try { + const { data, error } = await api.PUT("/settings/providers", { + body: { credentials: [{ provider: providerId, api_key: apiKey }] }, + }); + if (error || !data) { + toast("保存凭据失败,请重试", "error"); + return; + } + setProviders(data.providers ?? []); + setDrafts((prev) => ({ ...prev, [providerId]: "" })); + toast("凭据已保存", "success"); + } catch { + toast("保存凭据失败,请检查后端连接", "error"); + } finally { + setSavingId(null); } - setProviders(data.providers ?? []); - setDrafts((prev) => ({ ...prev, [providerId]: "" })); - toast("凭据已保存", "success"); }; const testConnection = async (providerId: string): Promise => { setTestingId(providerId); - const { data, error } = await api.POST("/settings/providers/test", { - body: { provider: providerId }, - }); - setTestingId(null); - if (error || !data) { - toast("测试连接失败", "error"); - return; + try { + const { data, error } = await api.POST("/settings/providers/test", { + body: { provider: providerId }, + }); + if (error || !data) { + toast("测试连接失败", "error"); + return; + } + setResults((prev) => ({ + ...prev, + [providerId]: { ok: data.ok, capabilities: data.capabilities }, + })); + toast( + data.ok ? "连接成功" : "连接未通过", + data.ok ? "success" : "error", + ); + } catch { + toast("测试连接失败,请检查后端连接", "error"); + } finally { + setTestingId(null); } - setResults((prev) => ({ - ...prev, - [providerId]: { ok: data.ok, capabilities: data.capabilities }, - })); - toast(data.ok ? "连接成功" : "连接未通过", data.ok ? "success" : "error"); }; return (