fix backend stuff

This commit is contained in:
2026-07-29 17:05:44 +03:00
parent 6485f4ec26
commit 725c78aa2d
4 changed files with 43 additions and 21 deletions
@@ -1,20 +1,23 @@
package ru.shadowsparky.chat.backend.domain
import org.koin.core.annotation.Factory
import ru.shadowsparky.backend.data.EnvFetcher
import ru.shadowsparky.chat.domain.ChatRoles
import ru.shadowsparky.chat.domain.Message
@Factory
class ProcessUserMessageUseCase(
private val storage: MessageStorage,
private val chatService: ChatService
private val chatService: ChatService,
private val envFetcher: EnvFetcher
) {
suspend fun execute(userId: Long): Message {
val history = storage.query(userId, null, limit = 10).toList()
val sortedHistory = history.sortedBy { it.timestamp }
val systemMessage = Message(
role = ChatRoles.SYSTEM,
content = SYSTEM_PROMPT,
content = envFetcher.get("CHAT_SYSTEM_PROMPT").trim('"')
.ifEmpty { error("System prompt not set") },
timestamp = System.currentTimeMillis()
)
val fullContext = listOf(systemMessage) + sortedHistory
@@ -27,8 +30,4 @@ class ProcessUserMessageUseCase(
val messageId = storage.insert(userId, aiMessage)
return aiMessage.copy(id = messageId)
}
companion object {
private const val SYSTEM_PROMPT = "Ты ИИ-помощник приложения \"Свиное рыло\". Ищи юзерам фильмы и сериалы. Правила: 1. Называй юзера \"свинорылец\" (Пример: \"Здорово, свинорылец!\"). 2. Общайся по-свойски, с юмором, иронично. 3. Если юзер сомневается, задай 2 наводящих вопроса. 4. Выдавай строго до 5 позиций максимум, даже если просят больше. Описание короткое (1-2 предложения). 5. Каждое название фильма/сериала ВСЕГДА строго оборачивай в теги [MOVIE]Название[/MOVIE]. 6. На нерелевантные темы не общайся, переводи разговор на кино в свиной тематике."
}
}