From eb4064279bec741859c7071b70c2b14b4b983e52 Mon Sep 17 00:00:00 2001 From: jwkim Date: Thu, 27 Aug 2026 10:18:20 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=80=EC=82=AC=20=ED=91=9C=EA=B8=B0=C2=B7?= =?UTF-8?q?=EB=B0=9C=EC=9D=8C=20=EB=B6=84=EB=A6=AC=20=E2=80=94=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=97=94=2013:1=20=EC=9B=90=EB=AC=B8,=20Suno=20?= =?UTF-8?q?=EC=A0=84=EC=86=A1=EB=B3=B8=EB=A7=8C=20=ED=95=9C=EA=B8=80=20?= =?UTF-8?q?=EB=B0=9C=EC=9D=8C=20=EC=B9=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- backend/app/services/songs.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/app/services/songs.py b/backend/app/services/songs.py index 05f5ef2..24557d9 100644 --- a/backend/app/services/songs.py +++ b/backend/app/services/songs.py @@ -466,9 +466,7 @@ def _lyrics_prompt(team_name: str, context: str, league: str = "kbo") -> str: "- 경기장에서 수만 관중이 떼창하는 웅장한 스타디움 앤섬\n" "- 오늘 경기 맥락(어제/최근 결과 설욕·기세, 순위 싸움, 연전 차수, 선발·라인업)을 " "가사에 구체적으로 녹일 것 — 선수 실명 사용 가능\n" - "- 가사에 아라비아 숫자를 절대 쓰지 말 것 — 모두 한글 발음으로 표기 " - "(1승→일승, 1위→일위, 78승→칠십팔승, 2차전→이차전, 1번→일번, " - "7게임→일곱 게임, 15호→십오호, 5:3→오 대 삼)\n" + "- 숫자는 자연스럽게 표기 (13:1, 78승, 2차전 등 — 발음 변환은 시스템이 처리)\n" "- 괄호로 관중 콜앤리스폰스 파트 표기, 섹션 태그에 연주 지시 포함\n" "- 분량은 1분 30초~2분 (Verse 2개 + Chorus 반복 + Bridge + Final Chorus)\n\n" f"[가사 형식 레퍼런스 — 구조와 톤만 참고, 내용은 오늘 경기에 맞게 새로 쓸 것]\n{_REFERENCE}\n\n" @@ -608,10 +606,11 @@ async def _start_one(db, m: Match, side: str, lineups: dict | None) -> bool: lyrics = str(piece.get("lyrics") or "").strip() if not lyrics: raise RuntimeError("LLM 가사 비어있음") - lyrics = hangulize_numbers(lyrics) # 프롬프트를 뚫고 남은 숫자 안전망 - title = hangulize_numbers(title) # 제목도 Suno 가 부르는 경우 대비 + # 표기용(화면 '가사 보기')은 원문 그대로 저장하고, + # Suno 전송본만 숫자를 한글 발음으로 치환 (13:1 → 십삼 대 일) + sung_lyrics = hangulize_numbers(lyrics) - task_id = await suno.start_generation(title, style, lyrics) + task_id = await suno.start_generation(title, style, sung_lyrics) upgrade = bool(row and row.status == "complete") if row is None: row = Song(match_id=m.match_id, team_code=code)