Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SBL-225] AI 초안 생성 로그를 저장하도록 수정 #107

Merged
merged 4 commits into from
Nov 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import org.springframework.stereotype.Component
import java.util.UUID

@Component
class AILogAdapter(
class AIEditLogAdapter(
private val aiEditLogRepository: AIEditLogRepository,
) {
fun saveEditLog(aiEditLog: AIEditLog) =
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.sbl.sulmun2yong.ai.adapter

import com.sbl.sulmun2yong.ai.domain.AIGenerateLog
import com.sbl.sulmun2yong.ai.entity.AIGenerateLogDocument
import com.sbl.sulmun2yong.ai.repository.AIGenerateLogRepository
import org.springframework.stereotype.Component

@Component
class AIGenerateLogAdapter(
private val aiGenerateLogRepository: AIGenerateLogRepository,
) {
fun saveGenerateLog(aiGenerateLog: AIGenerateLog) =
aiGenerateLogRepository.save(
AIGenerateLogDocument.from(
aiGenerateLog,
),
)
}
15 changes: 15 additions & 0 deletions src/main/kotlin/com/sbl/sulmun2yong/ai/domain/AIGenerateLog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.sbl.sulmun2yong.ai.domain

import java.util.UUID

class AIGenerateLog(
val id: UUID,
val surveyId: UUID,
val makerId: UUID?,
val userPrompt: String,
val fileUrl: String?,
val target: String,
val groupName: String,
val generatedSurvey: AIGeneratedSurvey,
val visitorId: String?,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.sbl.sulmun2yong.ai.entity

import com.sbl.sulmun2yong.ai.domain.AIGenerateLog
import com.sbl.sulmun2yong.ai.domain.AIGeneratedSurvey
import com.sbl.sulmun2yong.global.entity.BaseTimeDocument
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
import java.util.UUID

@Document(collection = "aiGenerateLogs")
data class AIGenerateLogDocument(
@Id
val id: UUID,
val surveyId: UUID,
val makerId: UUID?,
val userPrompt: String,
val fileUrl: String?,
val target: String,
val groupName: String,
val generatedSurvey: AIGeneratedSurvey,
val visitorId: String?,
) : BaseTimeDocument() {
companion object {
fun from(aIGenerateLog: AIGenerateLog) =
AIGenerateLogDocument(
id = aIGenerateLog.id,
surveyId = aIGenerateLog.surveyId,
makerId = aIGenerateLog.makerId,
userPrompt = aIGenerateLog.userPrompt,
fileUrl = aIGenerateLog.fileUrl,
target = aIGenerateLog.target,
groupName = aIGenerateLog.groupName,
generatedSurvey = aIGenerateLog.generatedSurvey,
visitorId = aIGenerateLog.visitorId,
)
}

fun toDomain() =
AIGenerateLog(
id = this.id,
surveyId = this.surveyId,
makerId = this.makerId,
userPrompt = this.userPrompt,
fileUrl = this.fileUrl,
target = this.target,
groupName = this.groupName,
generatedSurvey = this.generatedSurvey,
visitorId = this.visitorId,
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.sbl.sulmun2yong.ai.repository

import com.sbl.sulmun2yong.ai.entity.AIGenerateLogDocument
import org.springframework.data.mongodb.repository.MongoRepository
import org.springframework.stereotype.Component
import java.util.UUID

@Component
interface AIGenerateLogRepository : MongoRepository<AIGenerateLogDocument, UUID>
4 changes: 2 additions & 2 deletions src/main/kotlin/com/sbl/sulmun2yong/ai/service/ChatService.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.sbl.sulmun2yong.ai.service

import com.sbl.sulmun2yong.ai.adapter.AILogAdapter
import com.sbl.sulmun2yong.ai.adapter.AIEditLogAdapter
import com.sbl.sulmun2yong.ai.adapter.ChatAdapter
import com.sbl.sulmun2yong.ai.domain.AIEditLog
import com.sbl.sulmun2yong.ai.dto.request.EditSurveyDataWithChatRequest
Expand All @@ -15,7 +15,7 @@ import java.util.UUID
class ChatService(
private val surveyAdapter: SurveyAdapter,
private val chatAdapter: ChatAdapter,
private val aiLogAdapter: AILogAdapter,
private val aiLogAdapter: AIEditLogAdapter,
) {
fun editSurveyDataWithChat(
makerId: UUID,
Expand Down
41 changes: 37 additions & 4 deletions src/main/kotlin/com/sbl/sulmun2yong/ai/service/GenerateService.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.sbl.sulmun2yong.ai.service

import com.sbl.sulmun2yong.ai.adapter.AIDemoCountRedisAdapter
import com.sbl.sulmun2yong.ai.adapter.AIGenerateLogAdapter
import com.sbl.sulmun2yong.ai.adapter.GenerateAdapter
import com.sbl.sulmun2yong.ai.domain.AIGenerateLog
import com.sbl.sulmun2yong.ai.dto.request.DemoSurveyGenerationWithFileUrlRequest
import com.sbl.sulmun2yong.ai.dto.request.SurveyGenerationWithFileUrlRequest
import com.sbl.sulmun2yong.ai.dto.response.AISurveyGenerationResponse
Expand All @@ -18,6 +20,7 @@ class GenerateService(
private val generateAdapter: GenerateAdapter,
private val surveyAdapter: SurveyAdapter,
private val aiDemoCountRedisAdapter: AIDemoCountRedisAdapter,
private val aiGenerateLogAdapter: AIGenerateLogAdapter,
val fingerprintApi: FingerprintApi,
) {
fun generateSurveyWithFileUrl(
Expand All @@ -34,16 +37,31 @@ class GenerateService(

val survey = surveyAdapter.getByIdAndMakerId(surveyId, makerId)

return AISurveyGenerationResponse.from(
val generatedSurvey =
generateAdapter.requestSurveyGenerationWithFileUrl(
surveyId,
target,
groupName,
fileUrl,
userPrompt,
survey,
)

aiGenerateLogAdapter.saveGenerateLog(
AIGenerateLog(
id = UUID.randomUUID(),
surveyId = surveyId,
makerId = makerId,
userPrompt = userPrompt,
fileUrl = fileUrl,
target = target,
groupName = groupName,
generatedSurvey = generatedSurvey,
visitorId = null,
),
)

return AISurveyGenerationResponse.from(generatedSurvey)
}

fun generateDemoSurveyWithFileUrl(
Expand All @@ -59,11 +77,26 @@ class GenerateService(
fingerprintApi.validateVisitorId(visitorId)
aiDemoCountRedisAdapter.incrementOrCreate(visitorId)

val survey = Survey.create(UUID.randomUUID())
val surveyId = UUID.randomUUID()
val survey = Survey.create(surveyId)

val generatedSurvey = generateAdapter.requestSurveyGenerationWithFileUrl(null, target, groupName, fileUrl, userPrompt, survey)

return AISurveyGenerationResponse.from(
generateAdapter.requestSurveyGenerationWithFileUrl(null, target, groupName, fileUrl, userPrompt, survey),
aiGenerateLogAdapter.saveGenerateLog(
AIGenerateLog(
id = UUID.randomUUID(),
surveyId = surveyId,
makerId = null,
userPrompt = userPrompt,
fileUrl = fileUrl,
target = target,
groupName = groupName,
generatedSurvey = generatedSurvey,
visitorId = visitorId,
),
)

return AISurveyGenerationResponse.from(generatedSurvey)
}

private fun validateFileUrl(fileUrl: String?) {
Expand Down
Loading