From 280647a66fdfebe2f53033bf6e32bd016923212c Mon Sep 17 00:00:00 2001 From: hex2077 Date: Wed, 27 Aug 2025 14:59:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=94=AF=E6=8C=81=E4=BB=A5=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在播客生成流程中添加 lang 参数,用于支持多语言场景。修改包括: - 在请求接口中添加 lang 字段 - 在 API 调用中传递 lang 参数 - 在服务端处理中接收并使用 lang 参数 - 简化客户端请求参数结构 --- server/main.py | 7 +++++-- web/src/app/api/points/route.ts | 3 +-- web/src/lib/podcastApi.ts | 2 +- web/src/types/index.ts | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/main.py b/server/main.py index 3473746..59dd967 100644 --- a/server/main.py +++ b/server/main.py @@ -212,6 +212,7 @@ async def _generate_podcast_task( callback_url: Optional[str] = None, # 新增回调地址参数 output_language: Optional[str] = None, usetime: Optional[str] = None, + lang: Optional[str] = None, ): task_results[auth_id][task_id]["status"] = TaskStatus.RUNNING try: @@ -266,6 +267,7 @@ async def _generate_podcast_task( "timestamp": int(time.time()), "status": task_results[auth_id][task_id]["status"], "usetime": usetime, + "lang": lang, } MAX_RETRIES = 3 # 定义最大重试次数 @@ -307,6 +309,7 @@ async def generate_podcast_submission( callback_url: Optional[str] = Form(None), output_language: Optional[str] = Form(None), usetime: Optional[str] = Form(None), + lang: Optional[str] = Form(None), ): # 1. 验证 tts_provider if tts_provider not in tts_provider_map: @@ -327,7 +330,6 @@ async def generate_podcast_submission( "timestamp": time.time(), "callback_url": callback_url, # 存储回调地址 "auth_id": auth_id, # 存储 auth_id - "usetime": usetime, } background_tasks.add_task( @@ -344,7 +346,8 @@ async def generate_podcast_submission( tts_provider, callback_url, output_language, - usetime + usetime, + lang, ) return {"message": "Podcast generation started.", "task_id": task_id} diff --git a/web/src/app/api/points/route.ts b/web/src/app/api/points/route.ts index cb0da8a..f0c638e 100644 --- a/web/src/app/api/points/route.ts +++ b/web/src/app/api/points/route.ts @@ -30,8 +30,7 @@ export async function GET(request: NextRequest) { // GET 函数接收 request } export async function PUT(request: NextRequest) { - const { task_id, auth_id, timestamp, status, usetime } = await request.json(); - const lang = getLanguageFromRequest(request); // 获取语言 + const { task_id, auth_id, timestamp, status, usetime, lang } = await request.json(); const { t } = await getTranslation(lang, 'errors'); // 初始化翻译 try { if(status !== 'completed') { diff --git a/web/src/lib/podcastApi.ts b/web/src/lib/podcastApi.ts index 9351fa2..2fbf7ff 100644 --- a/web/src/lib/podcastApi.ts +++ b/web/src/lib/podcastApi.ts @@ -10,7 +10,7 @@ const API_BASE_URL = process.env.NEXT_PUBLIC_PODCAST_API_BASE_URL || 'http://192 * 启动播客生成任务 */ export async function startPodcastGenerationTask(body: PodcastGenerationRequest, userId: string, lang: string): Promise> { - + body.lang = lang; try { const response = await fetch(`${API_BASE_URL}/generate-podcast`, { method: 'POST', diff --git a/web/src/types/index.ts b/web/src/types/index.ts index e928a66..1374ff6 100644 --- a/web/src/types/index.ts +++ b/web/src/types/index.ts @@ -10,6 +10,7 @@ export interface PodcastGenerationRequest { callback_url?: string; // 固定值 usetime?: string; // 时长 来自选择 output_language?: string; // 语言 来自设置 + lang?: string; // 子路径表示语言 } export interface PodcastGenerationResponse {