Контекст диалога отдельно от архива чата
- Новая таблица dialog_messages: последние DIALOG_LIMIT пар «вопрос — ответ», подкладываются в каждый запрос - /clear сбрасывает только контекст диалога, архив (включая импорт) не трогает; без подтверждения - /context показывает контекст и архив по отдельности Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -44,7 +44,6 @@ export const createMessageRepository = (db: Db) => {
|
||||
),
|
||||
findById: db.prepare("SELECT * FROM messages WHERE chat_id = ? AND message_id = ?"),
|
||||
statsByChat: db.prepare("SELECT COUNT(*) AS count, MIN(date) AS oldest FROM messages WHERE chat_id = ?"),
|
||||
deleteByChat: db.prepare("DELETE FROM messages WHERE chat_id = ?"),
|
||||
};
|
||||
|
||||
const toChronological = (rows: unknown[]): ChatMessage[] => (rows as MessageRow[]).reverse().map(toMessage);
|
||||
@@ -85,10 +84,7 @@ export const createMessageRepository = (db: Db) => {
|
||||
const statsByChat = (chatId: number): { count: number; oldest: number | null } =>
|
||||
statements.statsByChat.get(chatId) as { count: number; oldest: number | null };
|
||||
|
||||
/** Удаляет всю сохранённую историю чата; возвращает, сколько сообщений удалено. */
|
||||
const deleteByChat = (chatId: number): number => statements.deleteByChat.run(chatId).changes;
|
||||
|
||||
return { upsertAndPrune, insertManyAndPrune, latest, latestByUser, findById, statsByChat, deleteByChat };
|
||||
return { upsertAndPrune, insertManyAndPrune, latest, latestByUser, findById, statsByChat };
|
||||
};
|
||||
|
||||
export type MessageRepository = ReturnType<typeof createMessageRepository>;
|
||||
|
||||
Reference in New Issue
Block a user