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
@@ -77,7 +77,8 @@ public static class ChatEndpoint
|
||||
res.Headers["Cache-Control"] = "no-cache";
|
||||
res.Headers["Connection"] = "keep-alive";
|
||||
|
||||
var systemPromptText = SystemPromptBuilder.Build(agent, session);
|
||||
var markedMessages = await db.GetMarkedMessages(sessionId);
|
||||
var systemPromptText = SystemPromptBuilder.Build(agent, session, markedMessages);
|
||||
|
||||
var chainId = Guid.NewGuid().ToString("N");
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ public static class HistoryEndpoint
|
||||
app.MapGet("/api/archives", HandleListArchives);
|
||||
app.MapGet("/api/archive/{archiveId}", HandleGetArchive);
|
||||
app.MapGet("/api/attachments/{messageId}", HandleGetAttachments);
|
||||
app.MapPut("/api/messages/{messageId}/mark", HandleToggleMark);
|
||||
app.MapGet("/api/chains/{chainId}", HandleGetChain);
|
||||
}
|
||||
|
||||
@@ -119,6 +120,19 @@ public static class HistoryEndpoint
|
||||
await ctx.Response.WriteAsJsonAsync(result);
|
||||
}
|
||||
|
||||
private static async Task HandleToggleMark(HttpContext ctx, DatabaseService db)
|
||||
{
|
||||
var messageIdStr = ctx.Request.RouteValues["messageId"]?.ToString();
|
||||
if (!long.TryParse(messageIdStr, out var messageId))
|
||||
{
|
||||
ctx.Response.StatusCode = 400;
|
||||
return;
|
||||
}
|
||||
|
||||
var isMarked = await db.ToggleMessageMark(messageId);
|
||||
await ctx.Response.WriteAsJsonAsync(new { messageId, isMarked });
|
||||
}
|
||||
|
||||
private static async Task HandleGetChain(HttpContext ctx, DatabaseService db)
|
||||
{
|
||||
var chainId = ctx.Request.RouteValues["chainId"]?.ToString();
|
||||
|
||||
@@ -122,7 +122,8 @@ public static class SessionEndpoint
|
||||
return;
|
||||
}
|
||||
|
||||
var systemPrompt = SystemPromptBuilder.Build(agent, session);
|
||||
var markedMessages = await db.GetMarkedMessages(sessionId);
|
||||
var systemPrompt = SystemPromptBuilder.Build(agent, session, markedMessages);
|
||||
|
||||
ctx.Response.ContentType = "text/plain; charset=utf-8";
|
||||
await ctx.Response.WriteAsync(systemPrompt);
|
||||
|
||||
Reference in new issue
Block a user