From 79b931575822c560ec42187d234b2ea60d8e282e Mon Sep 17 00:00:00 2001 From: begoniezhao Date: Wed, 10 Sep 2025 18:14:05 +0800 Subject: [PATCH] feat: Added knowledge base column value update method and optimized logging --- internal/application/repository/knowledge.go | 5 +++++ internal/application/service/knowledge.go | 8 +++++--- internal/types/interfaces/knowledge.go | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/application/repository/knowledge.go b/internal/application/repository/knowledge.go index 4c7623f3d..946b5d5de 100644 --- a/internal/application/repository/knowledge.go +++ b/internal/application/repository/knowledge.go @@ -197,3 +197,8 @@ func (r *knowledgeRepository) AminusB( } return knowledgeIDs, err } + +func (r *knowledgeRepository) UpdateKnowledgeColumn(ctx context.Context, id string, column string, value interface{}) error { + err := r.db.WithContext(ctx).Model(&types.Knowledge{}).Where("id = ?", id).Update(column, value).Error + return err +} diff --git a/internal/application/service/knowledge.go b/internal/application/service/knowledge.go index 2283322a3..ea5e4ff93 100644 --- a/internal/application/service/knowledge.go +++ b/internal/application/service/knowledge.go @@ -166,9 +166,7 @@ func (s *knowledgeService) CreateKnowledgeFromFile(ctx context.Context, if exists { logger.Infof(ctx, "File already exists: %s", file.Filename) // Update creation time for existing knowledge - existingKnowledge.CreatedAt = time.Now() - existingKnowledge.UpdatedAt = time.Now() - if err := s.repo.UpdateKnowledge(ctx, existingKnowledge); err != nil { + if err := s.repo.UpdateKnowledgeColumn(ctx, existingKnowledge.ID, "created_at", time.Now()); err != nil { logger.Errorf(ctx, "Failed to update existing knowledge: %v", err) return nil, err } @@ -627,6 +625,8 @@ func (s *knowledgeService) processDocument(ctx context.Context, attribute.String("embedding_model", knowledge.EmbeddingModelID), attribute.Bool("enable_multimodal", enableMultimodel), ) + logger.GetLogger(ctx).Infof("processDocument trace id: %s", span.SpanContext().TraceID().String()) + if !enableMultimodel && IsImageType(knowledge.FileType) { logger.GetLogger(ctx).WithField("knowledge_id", knowledge.ID). WithField("error", ErrImageNotParse).Errorf("processDocument image without enable multimodel") @@ -1137,6 +1137,7 @@ func (s *knowledgeService) processChunks(ctx context.Context, span.RecordError(err) return } + logger.GetLogger(ctx).Infof("processChunks batch index successfully, with %d index", len(indexInfoList)) // Update knowledge status to completed knowledge.ParseStatus = "completed" @@ -1154,6 +1155,7 @@ func (s *knowledgeService) processChunks(ctx context.Context, if err := s.tenantRepo.AdjustStorageUsed(ctx, tenantInfo.ID, totalStorageSize); err != nil { logger.GetLogger(ctx).WithField("error", err).Errorf("processChunks update tenant storage used failed") } + logger.GetLogger(ctx).Infof("processChunks successfully") } // GetSummary generates a summary for knowledge content using an AI model diff --git a/internal/types/interfaces/knowledge.go b/internal/types/interfaces/knowledge.go index 621385bbe..db798e69c 100644 --- a/internal/types/interfaces/knowledge.go +++ b/internal/types/interfaces/knowledge.go @@ -70,4 +70,5 @@ type KnowledgeRepository interface { ) (bool, *types.Knowledge, error) // AminusB returns the difference set of A and B. AminusB(ctx context.Context, Atenant uint, A string, Btenant uint, B string) ([]string, error) + UpdateKnowledgeColumn(ctx context.Context, id string, column string, value interface{}) error }