Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#️⃣ 연관된 이슈
📝 작업 내용
기획자가 구글독스에 쓴 배틀 대본을 어드민에 붙여넣으면 서버가 파싱해 배틀/시나리오 등록 페이로드를 만들어 돌려준다(DB 저장 X, 미리보기용). #455 인프라(Tone / philosopher_voice) 위에서 진행.
✨ Feat
battlePayload/scenarioPayload/speakerNames/warnings)AdminBattleParseRequest,AdminBattleParseResponse,ParseWarning👉 [선택의 시간]A/B 옵션·발화자,[분기 …]→분기_A/분기_B, 메타데이터 표)BattleScriptDocument,BattleScriptDocumentParserScriptToneExtractor,TtsTextNormalizer#normalizeEffectTagsopenai.emotion.model기본gpt-4o-mini,response_format: json_object, 실패 시 전부 NEUTRAL + warning)EmotionClassifier,OpenAiEmotionClassifier,application.ymlTagRepository), 철학자→보이스(PhilosopherVoiceService), 성향 지표 12문자열 검증(ValueAxis), 철학자 키워드 10인 검증(PhilosopherType), 노드 autoNext 체인/분기 연결,voiceSettings채움,POST /api/v1/admin/battles/parseBattleScriptParseService,AdminBattleService,AdminBattleController🐛 Fix — 실제 기획자 대본 포맷 보정
샘플 외에 실제 대본(
008 — 첫 데이트 국밥…)으로 검증하니 포맷이 꽤 달라 파서를 보정함:008 — 제목(분기 O/X 버전없음){라벨} — {제목}도 허용.interactive는 본문에 선택/분기가 있으면 자동 승격BattleScriptDocumentParser사전 투표+"유죄다 (플라톤)" vs "무죄다 (마르크스)"OptionMeta.primarySpeaker로 저장 → A/B 발화자 바인딩 힌트(선택의 시간 명시가 없을 때 LLM 앞단계로 사용)BattleScriptDocument,BattleScriptDocumentParser,BattleScriptParseService1라운드: "부제" vs "부제":부제허용BattleScriptDocumentParser플라톤 (유죄): "…"(…)주석 제거 →플라톤BattleScriptDocumentParser"…"BattleScriptDocumentParser👉 [선택의 시간: 당신의…](콜론 포함)A:/B:옵션 줄만 예외 처리BattleScriptDocumentParser[분기 시나리오 A / B]+[A 선택 시] 플라톤: "…"[A 선택 시]인라인 프리픽스를분기_A노드 전환 신호로, 나머지는 대사로BattleScriptDocumentParser철학자 키워드 #플라톤 #칸트 #아리스토텔레스(공백 구분)BattleScriptDocumentParser📌 공유 사항
✅ 체크리스트
dev)📸 스크린샷
샘플 3건(
sample-linear.txt,sample-interactive.txt,sample-real-1.txt) 파싱 →BattleScriptDocumentParserTest(9) +BattleScriptParseServiceTest(8) 통과.Tone/ScriptToneExtractor/TtsTextNormalizer단위 테스트 포함.💬 리뷰 요구사항