Merge branch 'main' of https://gitea.o2o.kr/castad/o2o-castad-backend into feature-dashboard

subtitle
김성경 2026-02-26 16:06:38 +09:00
commit a1192193e5
4 changed files with 8 additions and 2 deletions

View File

@ -95,7 +95,7 @@ async def make_youtube_seo_description(
"language" : project.language, "language" : project.language,
"target_keywords" : hashtags "target_keywords" : hashtags
} }
chatgpt = ChatgptService() chatgpt = ChatgptService(timeout = 180)
yt_seo_output = await chatgpt.generate_structured_output(yt_upload_prompt, yt_seo_input_data) yt_seo_output = await chatgpt.generate_structured_output(yt_upload_prompt, yt_seo_input_data)
result_dict = { result_dict = {
"title" : yt_seo_output.title, "title" : yt_seo_output.title,

View File

@ -43,6 +43,7 @@ class ChatgptService:
text_format=output_format text_format=output_format
) )
# Response 디버그 로깅 # Response 디버그 로깅
logger.debug(f"[ChatgptService] attempt: {attempt}")
logger.debug(f"[ChatgptService] Response ID: {response.id}") logger.debug(f"[ChatgptService] Response ID: {response.id}")
logger.debug(f"[ChatgptService] Response status: {response.status}") logger.debug(f"[ChatgptService] Response status: {response.status}")
logger.debug(f"[ChatgptService] Response model: {response.model}") logger.debug(f"[ChatgptService] Response model: {response.model}")

View File

@ -550,6 +550,7 @@ async def get_video_status(
} }
message = status_messages.get(status, f"상태: {status}") message = status_messages.get(status, f"상태: {status}")
video_id = None
# succeeded 상태인 경우 백그라운드 태스크 실행 # succeeded 상태인 경우 백그라운드 태스크 실행
if status == "succeeded" and video_url: if status == "succeeded" and video_url:
# creatomate_render_id로 Video 조회하여 task_id 가져오기 # creatomate_render_id로 Video 조회하여 task_id 가져오기
@ -561,6 +562,8 @@ async def get_video_status(
) )
video = video_result.scalar_one_or_none() video = video_result.scalar_one_or_none()
video_id = video.id
if video and video.status != "completed": if video and video.status != "completed":
# 이미 완료된 경우 백그라운드 작업 중복 실행 방지 # 이미 완료된 경우 백그라운드 작업 중복 실행 방지
# 백그라운드 태스크로 MP4 다운로드 → Blob 업로드 → DB 업데이트 → 임시 파일 삭제 # 백그라운드 태스크로 MP4 다운로드 → Blob 업로드 → DB 업데이트 → 임시 파일 삭제
@ -584,6 +587,7 @@ async def get_video_status(
status=status, status=status,
url=video_url, url=video_url,
snapshot_url=result.get("snapshot_url"), snapshot_url=result.get("snapshot_url"),
video_id = video_id if video_id else None
) )
logger.info( logger.info(

View File

@ -49,6 +49,7 @@ class VideoRenderData(BaseModel):
status: Optional[str] = Field(None, description="렌더 상태") status: Optional[str] = Field(None, description="렌더 상태")
url: Optional[str] = Field(None, description="영상 URL") url: Optional[str] = Field(None, description="영상 URL")
snapshot_url: Optional[str] = Field(None, description="스냅샷 URL") snapshot_url: Optional[str] = Field(None, description="스냅샷 URL")
video_id: Optional[int] = Field(None, description="Video id(DB)")
class PollingVideoResponse(BaseModel): class PollingVideoResponse(BaseModel):