refactor: Sanitize log inputs in agent and session handlers to enhance security

This commit is contained in:
wizardchen
2025-11-26 19:08:19 +08:00
parent d41f8afe55
commit 85caee044a
4 changed files with 5 additions and 7 deletions
@@ -14,6 +14,7 @@ import (
"github.com/Tencent/WeKnora/internal/models/rerank"
"github.com/Tencent/WeKnora/internal/types"
"github.com/Tencent/WeKnora/internal/types/interfaces"
secutils "github.com/Tencent/WeKnora/internal/utils"
"gorm.io/gorm"
)
@@ -267,7 +268,7 @@ func (s *agentService) getKnowledgeBaseInfos(ctx context.Context, kbIDs []string
// Get knowledge base details
kb, err := s.knowledgeBaseService.GetKnowledgeBaseByID(ctx, kbID)
if err != nil {
logger.Warnf(ctx, "Failed to get knowledge base %s: %v", kbID, err)
logger.Warnf(ctx, "Failed to get knowledge base %s: %v", secutils.SanitizeForLog(kbID), err)
// Add fallback info
kbInfos = append(kbInfos, &agent.KnowledgeBaseInfo{
ID: kbID,
-2
View File
@@ -87,7 +87,6 @@ func (s *chunkService) GetChunkByID(ctx context.Context, id string) (*types.Chun
chunk, err := s.chunkRepository.GetChunkByID(ctx, tenantID, id)
if err != nil {
logger.ErrorWithFields(ctx, err, map[string]interface{}{
"chunk_id": id,
"tenant_id": tenantID,
})
return nil, err
@@ -213,7 +212,6 @@ func (s *chunkService) DeleteChunk(ctx context.Context, id string) error {
err := s.chunkRepository.DeleteChunk(ctx, tenantID, id)
if err != nil {
logger.ErrorWithFields(ctx, err, map[string]interface{}{
"chunk_id": id,
"tenant_id": tenantID,
})
return err
@@ -546,8 +546,7 @@ func (s *knowledgeBaseService) HybridSearch(ctx context.Context,
needsIterativeRetrieval := len(deduplicatedChunks) < params.MatchCount &&
kb.Type == types.KnowledgeBaseTypeFAQ && len(matchResults) == matchCount
if needsIterativeRetrieval {
logger.Infof(ctx, "Not enough unique chunks (%d < %d), using iterative retrieval for FAQ",
len(deduplicatedChunks), params.MatchCount)
logger.Info(ctx, "Not enough unique chunks, using iterative retrieval for FAQ")
// Use iterative retrieval to get more unique chunks (with negative question filtering inside)
deduplicatedChunks = s.iterativeRetrieveWithDeduplication(ctx, retrieveEngine, retrieveParams, params.MatchCount, params.QueryText)
} else if kb.Type == types.KnowledgeBaseTypeFAQ {
+2 -2
View File
@@ -606,13 +606,13 @@ func (s *sessionService) selectChatModelID(ctx context.Context, session *types.S
for _, kbID := range knowledgeBaseIDs {
kb, err := s.knowledgeBaseService.GetKnowledgeBaseByID(ctx, kbID)
if err != nil {
logger.Warnf(ctx, "Failed to get knowledge base %s: %v", kbID, err)
logger.Warnf(ctx, "Failed to get knowledge base: %v", err)
continue
}
if kb != nil && kb.SummaryModelID != "" {
model, err := s.modelService.GetModelByID(ctx, kb.SummaryModelID)
if err == nil && model != nil && model.Source == types.ModelSourceRemote {
logger.Infof(ctx, "Using Remote summary model from knowledge base %s: %s", kbID, kb.SummaryModelID)
logger.Info(ctx, "Using Remote summary model from knowledge base")
return kb.SummaryModelID, nil
}
}