fix(music-lab): cache-buster query 제거 + DALL·E prompt에 background_keyword 활용

1. video.py _container_to_nas, orchestrator.py _local_path에서 path 변환 전 ?쿼리 strip
   — 이전 commit 20c5268의 cache-buster ?v=...가 Windows path로 그대로 전달되어 input_validation 실패하던 문제 픽스
2. cover.py _generate_with_dalle가 background_keyword를 prompt에 포함
   — 사용자가 PipelineStartModal에서 '배경 키워드' 입력 시 처음부터 원하는 분위기 cover 생성
This commit is contained in:
2026-05-10 16:12:21 +09:00
parent 20c5268def
commit 755dea63f4
6 changed files with 52 additions and 2 deletions

View File

@@ -94,7 +94,8 @@ async def generate(*, pipeline_id: int, genre: str, prompt_template: str,
if api_key:
try:
await _generate_with_dalle(prompt_template, mood, feedback, out_path,
api_key=api_key, model=model)
api_key=api_key, model=model,
background_keyword=background_keyword)
except (httpx.HTTPError, httpx.TimeoutException, KeyError, ValueError, OSError) as e:
logger.warning("DALL·E 실패 — 폴백: %s", e)
error = str(e)
@@ -114,8 +115,11 @@ async def generate(*, pipeline_id: int, genre: str, prompt_template: str,
async def _generate_with_dalle(prompt_template: str, mood: str,
feedback: str, out_path: str,
*, api_key: str, model: str) -> None:
*, api_key: str, model: str,
background_keyword: str = "") -> None:
prompt = prompt_template
if background_keyword:
prompt = f"{prompt}, {background_keyword}" # 사용자 직접 지정 keyword 우선 적용
if mood:
prompt = f"{prompt}, {mood} mood"
if feedback:

View File

@@ -284,6 +284,8 @@ def _local_path(media_url: str) -> str:
"""
if not media_url:
return ""
# Strip query string (e.g., cache-buster ?v=...)
media_url = media_url.split("?", 1)[0]
base_media = os.getenv("VIDEO_MEDIA_BASE", "/media/videos")
base_data = os.getenv("VIDEO_DATA_DIR", "/app/data/videos")
if media_url.startswith(base_media):

View File

@@ -94,6 +94,10 @@ def _container_to_nas(container_path: str) -> str:
""" /app/data/videos/3/cover.jpg → /volume1/docker/webpage/data/videos/3/cover.jpg
/app/data/abc.mp3 → /volume1/docker/webpage/data/music/abc.mp3
"""
if not container_path:
return ""
# Strip query string (e.g., cache-buster ?v=...)
container_path = container_path.split("?", 1)[0]
if container_path.startswith("/app/data/videos/"):
return container_path.replace("/app/data/videos/", NAS_VIDEOS_ROOT + "/", 1)
if container_path.startswith("/app/data/"):