This commit is contained in:
1 parent
b5e7f4d2ce
commit
d41c9e0f49
2 files changed
+21
-9
No files matched your search
@@ -1,3 +1,5 @@
|
|||||||
|
import { addToast } from '$lib/stores/toast.svelte';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送请求至后台 /api/slugify 接口生成英文 Slug
|
* 发送请求至后台 /api/slugify 接口生成英文 Slug
|
||||||
*/
|
*/
|
||||||
@@ -13,12 +15,17 @@ export async function fetchSlug(text: string): Promise<string> {
|
|||||||
body: JSON.stringify({ text })
|
body: JSON.stringify({ text })
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.ok) {
|
const data = (await res.json()) as { slug?: string; error?: string };
|
||||||
const data = (await res.json()) as { slug?: string };
|
|
||||||
return data.slug || '';
|
if (!res.ok || data.error) {
|
||||||
|
addToast(data.error || '获取 Slug 失败', 'error');
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return data.slug || '';
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('获取 Slug 错误:', err);
|
console.error('获取 Slug 错误:', err);
|
||||||
|
addToast('网络请求异常,无法获取 Slug', 'error');
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,24 +27,29 @@ export const POST: RequestHandler = async ({ request, platform }) => {
|
|||||||
|
|
||||||
let translatedText = '';
|
let translatedText = '';
|
||||||
|
|
||||||
// 优先调用 Cloudflare Workers AI (@cf/meta/m2m100_418m 翻译模型)
|
// 优先调用 Cloudflare Workers AI (@cf/meta/m2m100-1.2b 翻译模型)
|
||||||
if (platform?.env?.AI) {
|
if (platform?.env?.AI) {
|
||||||
try {
|
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,
|
text,
|
||||||
source_lang: 'zh',
|
source_lang: 'chinese',
|
||||||
target_lang: 'en'
|
target_lang: 'english'
|
||||||
})) as { translated_text?: string };
|
})) as { translated_text?: string };
|
||||||
|
|
||||||
if (res?.translated_text) {
|
if (res?.translated_text) {
|
||||||
translatedText = res.translated_text;
|
translatedText = res.translated_text;
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} 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
|
// 如果得到了英文翻译,格式化为 kebab-case Slug
|
||||||
if (translatedText) {
|
if (translatedText) {
|
||||||
|
|||||||
Reference in new issue
Block a user