feat: 添加语言参数支持以处理多语言场景

在播客生成流程中添加 lang 参数,用于支持多语言场景。修改包括:
- 在请求接口中添加 lang 字段
- 在 API 调用中传递 lang 参数
- 在服务端处理中接收并使用 lang 参数
- 简化客户端请求参数结构
This commit is contained in:
hex2077
2025-08-27 14:59:23 +08:00
parent 11de31a78b
commit 280647a66f
4 changed files with 8 additions and 5 deletions

View File

@@ -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}

View File

@@ -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') {

View File

@@ -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<ApiResponse<PodcastGenerationResponse>> {
body.lang = lang;
try {
const response = await fetch(`${API_BASE_URL}/generate-podcast`, {
method: 'POST',

View File

@@ -10,6 +10,7 @@ export interface PodcastGenerationRequest {
callback_url?: string; // 固定值
usetime?: string; // 时长 来自选择
output_language?: string; // 语言 来自设置
lang?: string; // 子路径表示语言
}
export interface PodcastGenerationResponse {