feat: Nachrichten als wichtig markieren (Stern-Button)
- MessageRecord: neues Property IsMarked
- DatabaseService: Migration is_marked, ToggleMessageMark(), GetMarkedMessages()
- HistoryEndpoint: PUT /api/messages/{id}/mark (Toggle)
- SystemPromptBuilder: markierte Nachrichten als Referenz im System-Prompt
- ChatEndpoint + SessionEndpoint: markierte Nachrichten laden und an Builder übergeben
- Frontend: Stern-Button (☆/★) auf jeder Nachricht, Toggle per API
- CSS: .marked-Klasse mit gelbem Seitenrand, Button-Styling
This commit is contained in:
1 parent
21ca3a451b
commit
19f32442b1
11 files changed
+124
-13
No files matched your search
@@ -128,6 +128,7 @@ public class DatabaseService
|
||||
TryAddColumn(conn, "messages", "attachment_names", "TEXT");
|
||||
TryAddColumn(conn, "agents", "tool_choice", "TEXT DEFAULT 'any'");
|
||||
TryAddColumn(conn, "agents", "custom_commands", "TEXT");
|
||||
TryAddColumn(conn, "messages", "is_marked", "INTEGER NOT NULL DEFAULT 0");
|
||||
}
|
||||
|
||||
private void TryAddColumn(SqliteConnection conn, string table, string column, string type)
|
||||
@@ -494,4 +495,28 @@ public class DatabaseService
|
||||
ORDER BY m.id LIMIT @limit",
|
||||
new { sessionId, afterId, limit });
|
||||
}
|
||||
|
||||
// ── Message Marking ──
|
||||
|
||||
public async Task<bool> ToggleMessageMark(long messageId)
|
||||
{
|
||||
using var conn = CreateConnection();
|
||||
await conn.ExecuteAsync(
|
||||
"UPDATE messages SET is_marked = CASE WHEN is_marked = 1 THEN 0 ELSE 1 END WHERE id = @messageId",
|
||||
new { messageId });
|
||||
return await conn.ExecuteScalarAsync<bool>(
|
||||
"SELECT is_marked FROM messages WHERE id = @messageId",
|
||||
new { messageId });
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<MessageRecord>> GetMarkedMessages(string sessionId)
|
||||
{
|
||||
using var conn = CreateConnection();
|
||||
return await conn.QueryAsync<MessageRecord>(@"
|
||||
SELECT m.* FROM messages m
|
||||
JOIN chains c ON m.chain_id = c.chain_id
|
||||
WHERE c.session_id = @sessionId AND m.is_marked = 1
|
||||
ORDER BY m.id",
|
||||
new { sessionId });
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user