feat(ai-character): 오디오 콘텐츠 관리자 계약을 보강한다

This commit is contained in:
2026-07-30 00:30:53 +09:00
parent 4479c192c9
commit 7b652400b7
14 changed files with 1693 additions and 603 deletions

View File

@@ -220,9 +220,6 @@ class AudioContentService(
// request 내용 파싱
val request = objectMapper.readValue(requestString, CreateAudioContentRequest::class.java)
// 미리듣기 시간 체크
validatePreviewTime(request.previewStartTime, request.previewEndTime)
val releaseDate = if (request.releaseDate != null) {
request.releaseDate.convertLocalDateTime("yyyy-MM-dd HH:mm")
.atZone(ZoneId.of(request.timezone))
@@ -232,11 +229,26 @@ class AudioContentService(
LocalDateTime.now()
}
return createAudioContent(contentFile, coverImage, request, releaseDate, member)
}
@Transactional
fun createAudioContent(
contentFile: MultipartFile?,
coverImage: MultipartFile?,
request: CreateAudioContentRequest,
releaseDate: LocalDateTime,
member: Member
): CreateAudioContentResponse {
if (coverImage == null) throw SodaException(messageKey = "content.error.cover_image_required")
// contentFile 체크
if (contentFile == null) {
throw SodaException(messageKey = "content.error.content_required")
}
validatePreviewTime(request.previewStartTime, request.previewEndTime)
// 테마 체크
val theme = themeQueryRepository.findThemeByIdAndActive(id = request.themeId)
?: throw SodaException(messageKey = "content.error.invalid_theme")