From dbeba6535a6fc1760be58be5d323625f77d2f6ab Mon Sep 17 00:00:00 2001 From: Meleki Date: Thu, 5 Mar 2026 16:33:03 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20Nachrichtenanzahl=20z=C3=A4hlt=20nur=20t?= =?UTF-8?q?ext-Messages,=20keine=20tool=5Fuse/tool=5Fresult?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 5 SQL COUNT-Queries mit 'type = text' Filter versehen: - GetSessionsWithStats (activeCount + totalCount) - GetActiveMessageCount - GetActiveMessageCountBeforeId - CreateArchive (messageCount) - Dashboard: Aktive und archivierte Nachrichten separat angezeigt - ArchiveMessageCount als eigenes Feld im Session-DTO - TODO.md: Nachrichtenzählung-Bug als erledigt markiert --- Services/DatabaseService.cs | 11 ++++++----- TODO.md | 4 ++-- wwwroot/js/pages/dashboard.js | 8 ++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Services/DatabaseService.cs b/Services/DatabaseService.cs index ccbbcfd..cf05fd9 100644 --- a/Services/DatabaseService.cs +++ b/Services/DatabaseService.cs @@ -407,13 +407,13 @@ public class DatabaseService var activeCount = await conn.ExecuteScalarAsync(@" SELECT COUNT(*) FROM messages m JOIN chains c ON m.chain_id = c.chain_id - WHERE c.session_id = @sessionId AND c.archive_id IS NULL", + WHERE c.session_id = @sessionId AND c.archive_id IS NULL AND m.type = 'text'", new { sessionId = s.SessionId }); var totalCount = await conn.ExecuteScalarAsync(@" SELECT COUNT(*) FROM messages m JOIN chains c ON m.chain_id = c.chain_id - WHERE c.session_id = @sessionId", + WHERE c.session_id = @sessionId AND m.type = 'text'", new { sessionId = s.SessionId }); results.Add(new @@ -430,6 +430,7 @@ public class DatabaseService s.CreatedAt, s.UpdatedAt, MessageCount = activeCount, + ArchiveMessageCount = totalCount - activeCount, TotalMessageCount = totalCount, TelegramConfigured = !string.IsNullOrEmpty(s.TelegramBotToken), TelegramLinked = !string.IsNullOrEmpty(s.TelegramChatId) @@ -499,7 +500,7 @@ public class DatabaseService var messageCount = await conn.ExecuteScalarAsync(@" SELECT COUNT(*) FROM messages - WHERE chain_id IN (SELECT chain_id FROM chains WHERE archive_id IS NULL AND session_id = @sessionId)", + WHERE type = 'text' AND chain_id IN (SELECT chain_id FROM chains WHERE archive_id IS NULL AND session_id = @sessionId)", new { sessionId }); var archive = new ArchiveRecord @@ -671,7 +672,7 @@ public class DatabaseService return await conn.ExecuteScalarAsync($@" SELECT COUNT(*) FROM messages m JOIN chains c ON m.chain_id = c.chain_id - WHERE c.archive_id IS NULL AND c.session_id = @sessionId {deletedFilter}", + WHERE c.archive_id IS NULL AND c.session_id = @sessionId AND m.type = 'text' {deletedFilter}", new { sessionId }); } @@ -695,7 +696,7 @@ public class DatabaseService return await conn.ExecuteScalarAsync($@" SELECT COUNT(*) FROM messages m JOIN chains c ON m.chain_id = c.chain_id - WHERE m.id < @beforeId AND c.archive_id IS NULL AND c.session_id = @sessionId {deletedFilter}", + WHERE m.id < @beforeId AND c.archive_id IS NULL AND c.session_id = @sessionId AND m.type = 'text' {deletedFilter}", new { sessionId, beforeId }); } diff --git a/TODO.md b/TODO.md index ebabcbf..30f6ada 100644 --- a/TODO.md +++ b/TODO.md @@ -16,13 +16,13 @@ - [x] Weitere Tools: Glob? Search? Todo List? - [x] Settings in Datenbank speichern (users table) anstelle von localStorage - [x] Einzelne Nachicht als Link teilen -- [ ] Geteilite Links verwalten (löschen) +- [x] Geteilte Links verwalten (löschen) ## Bugs - [x] Wenn gerade gestreamt wird und man refreshed die Seite, dann verliert das Frontend den Status "Streaming..." und ich kann eine Nachricht schreiben, obwohl das nicht möglich sein sollte - [x] Größere Tasks brechen irgendwann ab, könnte an der Limitierung von Antrophic/Claude liegen. Jedoch sollte wird es scheinbar nicht behandelt: Der Status bleibt auf "Streaming..." aber es passiert nichts mehr - [x] Session -> Chat öffnen im Frontend soll nicht möglich sein, wenn kein Agent gesetzt ist -- [ ] Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat +- [x] Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat ## Backend - [x] System-Prompt anpassen. Explizit auf Workspace-Pfad hinweisen, weil Model halluziniert oft und will in den nicht vorhandenen Pfad /workspace wechseln diff --git a/wwwroot/js/pages/dashboard.js b/wwwroot/js/pages/dashboard.js index 5054ff6..f2b70bd 100644 --- a/wwwroot/js/pages/dashboard.js +++ b/wwwroot/js/pages/dashboard.js @@ -32,9 +32,8 @@ registerPage('dashboard', { const agent = s.agentId ? agentMap[s.agentId] : null; const card = document.createElement('div'); card.className = 'card'; - const msgLabel = s.messageCount !== undefined - ? `${s.messageCount}${s.totalMessageCount !== s.messageCount ? ` (${s.totalMessageCount})` : ''} Nachrichten` - : ''; + const msgLabel1 = s.messageCount ? `${s.messageCount} Nachrichten` : ''; + const msgLabel2 = s.archiveMessageCount ? `${s.archiveMessageCount} Nachrichten archiviert` : ''; const workspaceLabel = s.workspace ? s.workspace : ''; const sessionBadges = []; @@ -57,7 +56,8 @@ registerPage('dashboard', {
- ${msgLabel ? ` ${esc(msgLabel)}` : ''} + ${msgLabel1 ? ` ${esc(msgLabel1)}` : ''} + ${msgLabel2 ? ` ${esc(msgLabel2)}` : ''} ${workspaceLabel ? ` ${esc(workspaceLabel)}` : ''}