From 51049d56a82876bebb58ebee5a54a52b79516881 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sun, 23 Aug 2026 17:40:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B0=D1=82:=20=D0=B0=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=B5=D1=81=D1=81=D0=B8=D0=B8=20=D0=B8=D0=B7=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BE=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Assistant.processInSession: безымянная сессия получает имя из первого сообщения (обреза 30 симв.), «беседка» — пустое - ChatScreen: периодическая перезагрузка подхватывает и список сессий — шапка обновляет название без ручного переключения --- .../main/kotlin/pw/binom/viewmate/phone/agent/Assistant.kt | 6 ++++++ .../main/kotlin/pw/binom/viewmate/phone/ui/ChatScreen.kt | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app-phone/src/main/kotlin/pw/binom/viewmate/phone/agent/Assistant.kt b/app-phone/src/main/kotlin/pw/binom/viewmate/phone/agent/Assistant.kt index 6988b54..103b6bd 100644 --- a/app-phone/src/main/kotlin/pw/binom/viewmate/phone/agent/Assistant.kt +++ b/app-phone/src/main/kotlin/pw/binom/viewmate/phone/agent/Assistant.kt @@ -39,6 +39,12 @@ class Assistant( /** Обработать фразу в КОНКРЕТНОЙ сессии [sessionId] (переключение сессий). */ suspend fun processInSession(sessionId: Long, text: String): String { chatDao.addMessage(sessionId, role = ChatRole.USER, content = text) + // Сессия безымянная (создана кнопкой «новая сессия») — имя из первого сообщения. + val s = chatDao.getSession(sessionId) + if (s != null && s.title.isBlank()) { + val t = text.trim().take(30) + chatDao.renameSession(sessionId, if (t.isEmpty()) "беседка" else t) + } return processInSession(sessionId) } diff --git a/app-phone/src/main/kotlin/pw/binom/viewmate/phone/ui/ChatScreen.kt b/app-phone/src/main/kotlin/pw/binom/viewmate/phone/ui/ChatScreen.kt index 0cf8547..9714d59 100644 --- a/app-phone/src/main/kotlin/pw/binom/viewmate/phone/ui/ChatScreen.kt +++ b/app-phone/src/main/kotlin/pw/binom/viewmate/phone/ui/ChatScreen.kt @@ -90,7 +90,8 @@ fun ChatScreen() { } // Периодическая перезагрузка сообщений из БД (ответ ассистента приходит - // асинхронно — лента должна подхватывать его без ручного обновления). + // асинхронно — лента должна подхватывать его без ручного обновления) + // + списка сессий (автоименование: имя проставляется при первом сообщении). LaunchedEffect(activeId) { while (true) { delay(2_000) @@ -99,6 +100,7 @@ fun ChatScreen() { val fresh = withContext(Dispatchers.IO) { app.chatDao.messagesForSession(id).map { it.role to it.content } } if (fresh != messages) messages = fresh } + withContext(Dispatchers.IO) { app.chatDao.listSessions() }.let { s -> if (s != sessions) sessions = s } } }