From d41c9e0f495e59e012f41b19dfb79fc18b66f4f2 Mon Sep 17 00:00:00 2001 From: seaHi Date: Sat, 8 Aug 2026 08:52:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=20Slug=20=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=80=BB=E8=BE=91=E5=B9=B6=E6=B7=BB=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA=E4=B8=8E=20AI=20=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/utils/slugify.ts | 13 ++++++++++--- src/routes/api/slugify/+server.ts | 17 +++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/lib/utils/slugify.ts b/src/lib/utils/slugify.ts index 2817444..cb5abd3 100644 --- a/src/lib/utils/slugify.ts +++ b/src/lib/utils/slugify.ts @@ -1,3 +1,5 @@ +import { addToast } from '$lib/stores/toast.svelte'; + /** * 发送请求至后台 /api/slugify 接口生成英文 Slug */ @@ -13,12 +15,17 @@ export async function fetchSlug(text: string): Promise { body: JSON.stringify({ text }) }); - if (res.ok) { - const data = (await res.json()) as { slug?: string }; - return data.slug || ''; + const data = (await res.json()) as { slug?: string; error?: string }; + + if (!res.ok || data.error) { + addToast(data.error || '获取 Slug 失败', 'error'); + return ''; } + + return data.slug || ''; } catch (err) { console.error('获取 Slug 错误:', err); + addToast('网络请求异常,无法获取 Slug', 'error'); } return ''; } diff --git a/src/routes/api/slugify/+server.ts b/src/routes/api/slugify/+server.ts index 7ec103a..a728206 100644 --- a/src/routes/api/slugify/+server.ts +++ b/src/routes/api/slugify/+server.ts @@ -27,24 +27,29 @@ export const POST: RequestHandler = async ({ request, platform }) => { let translatedText = ''; - // 优先调用 Cloudflare Workers AI (@cf/meta/m2m100_418m 翻译模型) + // 优先调用 Cloudflare Workers AI (@cf/meta/m2m100-1.2b 翻译模型) if (platform?.env?.AI) { try { - const res = (await platform.env.AI.run('@cf/meta/m2m100_418m', { + const res = (await platform.env.AI.run('@cf/meta/m2m100-1.2b', { text, - source_lang: 'zh', - target_lang: 'en' + source_lang: 'chinese', + target_lang: 'english' })) as { translated_text?: string }; if (res?.translated_text) { translatedText = res.translated_text; } } catch (err) { - console.warn('Workers AI 翻译异常,启动安全降级:', err); + const errorMsg = err instanceof Error ? err.message : String(err); + console.warn('Workers AI 翻译异常:', err); + return json({ error: `AI 翻译异常: ${errorMsg}` }, { status: 500 }); } + } else { + // 没有找到 AI 绑定 + return json({ error: '本地开发未绑定 Cloudflare AI 或环境缺失' }, { status: 500 }); } - // 若没有获取到英文翻译结果(平台未绑定 AI 或 AI 调用异常),将自动进入最底层的安全兜底 + // 若没有获取到英文翻译结果(AI 调用异常),将自动进入最底层的安全兜底 // 如果得到了英文翻译,格式化为 kebab-case Slug if (translatedText) {