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>(@"
|
var activeCount = await conn.ExecuteScalarAsync<int>(@"
|
||||||
SELECT COUNT(*) FROM messages m
|
SELECT COUNT(*) FROM messages m
|
||||||
JOIN chains c ON m.chain_id = c.chain_id
|
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 });
|
new { sessionId = s.SessionId });
|
||||||
|
|
||||||
var totalCount = await conn.ExecuteScalarAsync<int>(@"
|
var totalCount = await conn.ExecuteScalarAsync<int>(@"
|
||||||
SELECT COUNT(*) FROM messages m
|
SELECT COUNT(*) FROM messages m
|
||||||
JOIN chains c ON m.chain_id = c.chain_id
|
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 });
|
new { sessionId = s.SessionId });
|
||||||
|
|
||||||
results.Add(new
|
results.Add(new
|
||||||
@@ -430,6 +430,7 @@ public class DatabaseService
|
|||||||
s.CreatedAt,
|
s.CreatedAt,
|
||||||
s.UpdatedAt,
|
s.UpdatedAt,
|
||||||
MessageCount = activeCount,
|
MessageCount = activeCount,
|
||||||
|
ArchiveMessageCount = totalCount - activeCount,
|
||||||
TotalMessageCount = totalCount,
|
TotalMessageCount = totalCount,
|
||||||
TelegramConfigured = !string.IsNullOrEmpty(s.TelegramBotToken),
|
TelegramConfigured = !string.IsNullOrEmpty(s.TelegramBotToken),
|
||||||
TelegramLinked = !string.IsNullOrEmpty(s.TelegramChatId)
|
TelegramLinked = !string.IsNullOrEmpty(s.TelegramChatId)
|
||||||
@@ -499,7 +500,7 @@ public class DatabaseService
|
|||||||
|
|
||||||
var messageCount = await conn.ExecuteScalarAsync<int>(@"
|
var messageCount = await conn.ExecuteScalarAsync<int>(@"
|
||||||
SELECT COUNT(*) FROM messages
|
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 });
|
new { sessionId });
|
||||||
|
|
||||||
var archive = new ArchiveRecord
|
var archive = new ArchiveRecord
|
||||||
@@ -671,7 +672,7 @@ public class DatabaseService
|
|||||||
return await conn.ExecuteScalarAsync<int>($@"
|
return await conn.ExecuteScalarAsync<int>($@"
|
||||||
SELECT COUNT(*) FROM messages m
|
SELECT COUNT(*) FROM messages m
|
||||||
JOIN chains c ON m.chain_id = c.chain_id
|
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 });
|
new { sessionId });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -695,7 +696,7 @@ public class DatabaseService
|
|||||||
return await conn.ExecuteScalarAsync<int>($@"
|
return await conn.ExecuteScalarAsync<int>($@"
|
||||||
SELECT COUNT(*) FROM messages m
|
SELECT COUNT(*) FROM messages m
|
||||||
JOIN chains c ON m.chain_id = c.chain_id
|
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 });
|
new { sessionId, beforeId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,13 +16,13 @@
|
|||||||
- [x] Weitere Tools: Glob? Search? Todo List?
|
- [x] Weitere Tools: Glob? Search? Todo List?
|
||||||
- [x] Settings in Datenbank speichern (users table) anstelle von localStorage
|
- [x] Settings in Datenbank speichern (users table) anstelle von localStorage
|
||||||
- [x] Einzelne Nachicht als Link teilen
|
- [x] Einzelne Nachicht als Link teilen
|
||||||
- [ ] Geteilite Links verwalten (löschen)
|
- [x] Geteilte Links verwalten (löschen)
|
||||||
|
|
||||||
## Bugs
|
## 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] 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] 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
|
- [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
|
## Backend
|
||||||
- [x] System-Prompt anpassen. Explizit auf Workspace-Pfad hinweisen, weil Model halluziniert oft und will in den nicht vorhandenen Pfad /workspace wechseln
|
- [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 agent = s.agentId ? agentMap[s.agentId] : null;
|
||||||
const card = document.createElement('div');
|
const card = document.createElement('div');
|
||||||
card.className = 'card';
|
card.className = 'card';
|
||||||
const msgLabel = s.messageCount !== undefined
|
const msgLabel1 = s.messageCount ? `${s.messageCount} Nachrichten` : '';
|
||||||
? `${s.messageCount}${s.totalMessageCount !== s.messageCount ? ` (${s.totalMessageCount})` : ''} Nachrichten`
|
const msgLabel2 = s.archiveMessageCount ? `${s.archiveMessageCount} Nachrichten archiviert` : '';
|
||||||
: '';
|
|
||||||
const workspaceLabel = s.workspace ? s.workspace : '';
|
const workspaceLabel = s.workspace ? s.workspace : '';
|
||||||
|
|
||||||
const sessionBadges = [];
|
const sessionBadges = [];
|
||||||
@@ -57,7 +56,8 @@ registerPage('dashboard', {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-meta">
|
<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>` : ''}
|
${workspaceLabel ? `<span class="card-meta-item card-workspace" title="${esc(workspaceLabel)}"><i class="fa fa-folder"></i> ${esc(workspaceLabel)}</span>` : ''}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user