From 46ecb2f13b6873b5a3af3dc7bf42620aef0cad88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Thu, 9 Jul 2026 14:34:23 +0800 Subject: [PATCH] Add files via upload --- internal/database/conversation.go | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/internal/database/conversation.go b/internal/database/conversation.go index 9c6c43d1..5dbb4a64 100644 --- a/internal/database/conversation.go +++ b/internal/database/conversation.go @@ -1144,6 +1144,12 @@ ORDER BY created_at ASC, rowid ASC`, assistantMessageID) // AddProcessDetail 添加过程详情事件 func (db *DB) AddProcessDetail(messageID, conversationID, eventType, message string, data interface{}) error { + _, err := db.AddProcessDetailWithID(messageID, conversationID, eventType, message, data) + return err +} + +// AddProcessDetailWithID 添加过程详情事件并返回记录 ID。 +func (db *DB) AddProcessDetailWithID(messageID, conversationID, eventType, message string, data interface{}) (string, error) { id := uuid.New().String() var dataJSON string @@ -1161,10 +1167,10 @@ func (db *DB) AddProcessDetail(messageID, conversationID, eventType, message str id, messageID, conversationID, eventType, message, dataJSON, time.Now(), ) if err != nil { - return fmt.Errorf("添加过程详情失败: %w", err) + return "", fmt.Errorf("添加过程详情失败: %w", err) } - return nil + return id, nil } // GetProcessDetails 获取消息的过程详情 @@ -1203,6 +1209,29 @@ func (db *DB) GetProcessDetails(messageID string) ([]ProcessDetail, error) { return details, nil } +// GetProcessDetailByID 获取单条过程详情。 +func (db *DB) GetProcessDetailByID(id string) (*ProcessDetail, error) { + var detail ProcessDetail + var createdAt string + err := db.QueryRow( + "SELECT id, message_id, conversation_id, event_type, message, data, created_at FROM process_details WHERE id = ?", + id, + ).Scan(&detail.ID, &detail.MessageID, &detail.ConversationID, &detail.EventType, &detail.Message, &detail.Data, &createdAt) + if err != nil { + return nil, fmt.Errorf("查询过程详情失败: %w", err) + } + + var parseErr error + detail.CreatedAt, parseErr = time.Parse("2006-01-02 15:04:05.999999999-07:00", createdAt) + if parseErr != nil { + detail.CreatedAt, parseErr = time.Parse("2006-01-02 15:04:05", createdAt) + } + if parseErr != nil { + detail.CreatedAt, _ = time.Parse(time.RFC3339, createdAt) + } + return &detail, nil +} + // ProcessDetailsSummary 过程详情摘要(用于折叠态展示,避免全量加载)。 type ProcessDetailsSummary struct { Total int `json:"total"`