From bb71ef2fd13d0f123f348611c5891dcda689644e Mon Sep 17 00:00:00 2001 From: sysops Date: Sun, 10 May 2026 22:48:20 +0200 Subject: [PATCH] fix(PROJ-44): snippet + match_field in enrichedHit-Struct und JSON-Response verdrahten Die enrichedHit-Struct in search_handlers.go fehlten die PROJ-44-Felder Snippet und MatchField, sodass die vom Index berechneten Snippets in der API-Response verworfen wurden. Co-Authored-By: Claude Sonnet 4.6 --- internal/api/search_handlers.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/api/search_handlers.go b/internal/api/search_handlers.go index d7ed687..2fb858c 100644 --- a/internal/api/search_handlers.go +++ b/internal/api/search_handlers.go @@ -143,6 +143,8 @@ func (s *Server) handleSearch(w http.ResponseWriter, r *http.Request) { HasAttachments bool `json:"has_attachments"` ThreadID string `json:"thread_id,omitempty"` ThreadSize int `json:"thread_size,omitempty"` + Snippet string `json:"snippet,omitempty"` // PROJ-44: HTML excerpt with match tags + MatchField string `json:"match_field,omitempty"` // PROJ-44: subject|body|attachment_text|... } // auditor role: restrict results to mails with no tenant assignment. @@ -180,7 +182,7 @@ func (s *Server) handleSearch(w http.ResponseWriter, r *http.Request) { enriched := make([]enrichedHit, 0, len(result.Hits)) for _, h := range result.Hits { - eh := enrichedHit{ID: h.ID, Score: h.Score} + eh := enrichedHit{ID: h.ID, Score: h.Score, Snippet: h.Snippet, MatchField: h.MatchField} if raw, err := s.store.Load(h.ID); err == nil { eh.Size = int64(len(raw)) if pm, err := mailparser.Parse(raw); err == nil {