From 1596de45273535d4d00bf7757cc73d97f97d9130 Mon Sep 17 00:00:00 2001 From: Codex Date: Tue, 16 Jun 2026 16:23:49 +0800 Subject: [PATCH] feat: localize optimizer interface --- src/app/page.tsx | 24 ++++++++++----------- src/components/article-input-form.tsx | 22 ++++++++++---------- src/components/fact-card-editor.tsx | 30 ++++++++++++++++++--------- src/components/optimized-preview.tsx | 10 ++++----- src/components/qa-report-panel.tsx | 14 +++++++++---- tests/e2e/mvp.spec.ts | 28 ++++++++++++------------- 6 files changed, 72 insertions(+), 56 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 34e98eb..4c31f4b 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -55,12 +55,12 @@ export default function Home() { body: JSON.stringify(input), }); const body = await response.json(); - if (!response.ok) throw new Error(body.error ?? "Analyze failed"); + if (!response.ok) throw new Error(body.error ?? "分析失败"); setJobId(body.job.id); setFactCard(body.candidateFactCard); - setMessage("Candidate fact card created."); + setMessage("候选事实卡已生成。"); } catch (error) { - setMessage(error instanceof Error ? error.message : "Analyze failed"); + setMessage(error instanceof Error ? error.message : "分析失败"); } finally { setBusyAction(null); } @@ -77,11 +77,11 @@ export default function Home() { body: JSON.stringify(toConfirmedFactCard(factCard)), }); const body = await response.json(); - if (!response.ok) throw new Error(body.error ?? "Confirm failed"); + if (!response.ok) throw new Error(body.error ?? "确认失败"); setFactCard(body.factCard); - setMessage("Fact card confirmed."); + setMessage("事实卡已确认。"); } catch (error) { - setMessage(error instanceof Error ? error.message : "Confirm failed"); + setMessage(error instanceof Error ? error.message : "确认失败"); } finally { setBusyAction(null); } @@ -96,16 +96,16 @@ export default function Home() { method: "POST", }); const body = await response.json(); - if (!response.ok) throw new Error(body.error ?? "Optimize failed"); + if (!response.ok) throw new Error(body.error ?? "优化失败"); setOptimizedArticle(body.optimizedArticle); setQaReport(body.qaReport); setMessage( body.qaReport.overall_status === "fail" - ? "QA found hard failures; export is blocked." - : "Optimization complete.", + ? "质检发现硬性失败,已阻止导出。" + : "优化完成。", ); } catch (error) { - setMessage(error instanceof Error ? error.message : "Optimize failed"); + setMessage(error instanceof Error ? error.message : "优化失败"); } finally { setBusyAction(null); } @@ -115,7 +115,7 @@ export default function Home() {
-

GEO Agent Article Optimizer

+

GEO 智能文章优化器

{message &&

{message}

}
diff --git a/src/components/article-input-form.tsx b/src/components/article-input-form.tsx index 9506ede..97698fa 100644 --- a/src/components/article-input-form.tsx +++ b/src/components/article-input-form.tsx @@ -20,10 +20,10 @@ interface ArticleInputFormProps { } const platforms: { value: PublishPlatform; label: string }[] = [ - { value: "official_site", label: "Official site" }, - { value: "media_article", label: "Media article" }, - { value: "comparison_review", label: "Comparison review" }, - { value: "recommendation_list", label: "Recommendation list" }, + { value: "official_site", label: "官网文章" }, + { value: "media_article", label: "媒体稿" }, + { value: "comparison_review", label: "对比评测" }, + { value: "recommendation_list", label: "推荐榜单" }, ]; export function ArticleInputForm({ @@ -47,13 +47,13 @@ export function ArticleInputForm({ return (
- Article Input + 文章输入