feat: add AI serving status to conversation management and update related components

This commit is contained in:
mlogclub
2026-04-11 13:55:11 +08:00
parent 97f0df17b6
commit fb4078fc75
13 changed files with 85 additions and 41 deletions
+11 -2
View File
@@ -34,7 +34,10 @@ func (s *dashboardService) GetOverview(rangeValue string) response.DashboardOver
return tx.Where("created_at >= ?", todayStart)
})
processingConversationCount := repositories.DashboardRepository.CountConversations(db, func(tx *gorm.DB) *gorm.DB {
return tx.Where("status = ?", enums.IMConversationStatusActive)
return tx.Where("status IN ?", []enums.IMConversationStatus{
enums.IMConversationStatusAIServing,
enums.IMConversationStatusActive,
})
})
pendingConversationCount := repositories.DashboardRepository.CountConversations(db, func(tx *gorm.DB) *gorm.DB {
return tx.Where("status = ?", enums.IMConversationStatusPending)
@@ -45,6 +48,7 @@ func (s *dashboardService) GetOverview(rangeValue string) response.DashboardOver
activeSchedules := repositories.DashboardRepository.ListActiveTeamSchedules(db, now, now)
activeConversations := repositories.DashboardRepository.ListConversations(db, func(tx *gorm.DB) *gorm.DB {
return tx.Where("status IN ?", []enums.IMConversationStatus{
enums.IMConversationStatusAIServing,
enums.IMConversationStatusPending,
enums.IMConversationStatusActive,
})
@@ -168,6 +172,8 @@ func (s *dashboardService) buildAgentStats(now time.Time, teams []models.AgentTe
teamCounters[item.CurrentTeamID] = counter
}
switch item.Status {
case enums.IMConversationStatusAIServing:
counter.processingConversations++
case enums.IMConversationStatusPending:
counter.waitingConversations++
case enums.IMConversationStatusActive:
@@ -229,7 +235,10 @@ func (s *dashboardService) buildAlerts(now time.Time, db *gorm.DB, activeConvers
}
staleProcessingCount := repositories.DashboardRepository.CountConversations(db, func(tx *gorm.DB) *gorm.DB {
return tx.Where("status = ? AND (last_message_at IS NULL OR last_message_at < ?)", enums.IMConversationStatusActive, activeTimeout)
return tx.Where("status IN ? AND (last_message_at IS NULL OR last_message_at < ?)", []enums.IMConversationStatus{
enums.IMConversationStatusAIServing,
enums.IMConversationStatusActive,
}, activeTimeout)
})
if staleProcessingCount > 0 {
alerts = append(alerts, response.DashboardAlertResponse{