fix: Nachrichtenanzahl zählt nur text-Messages, keine tool_use/tool_result
- 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
This commit is contained in:
1 parent
4ae894304f
commit
dbeba6535a
3 files changed
+12
-11
No files matched your search
@@ -407,13 +407,13 @@ public class DatabaseService
|
||||
var activeCount = await conn.ExecuteScalarAsync<int>(@"
|
||||
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<int>(@"
|
||||
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<int>(@"
|
||||
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<int>($@"
|
||||
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<int>($@"
|
||||
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 });
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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', {
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-meta">
|
||||
${msgLabel ? `<span class="card-meta-item"><i class="fa fa-comment"></i> ${esc(msgLabel)}</span>` : ''}
|
||||
${msgLabel1 ? `<span class="card-meta-item"><i class="fa fa-comment"></i> ${esc(msgLabel1)}</span>` : ''}
|
||||
${msgLabel2 ? `<span class="card-meta-item"><i class="fa fa-archive"></i> ${esc(msgLabel2)}</span>` : ''}
|
||||
${workspaceLabel ? `<span class="card-meta-item card-workspace" title="${esc(workspaceLabel)}"><i class="fa fa-folder"></i> ${esc(workspaceLabel)}</span>` : ''}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user