feat: add support for request ID tracking across services
- Implemented request ID handling in various services and handlers to improve traceability of requests. - Added new AuthOptions endpoint to expose WxWork and OIDC configuration options. - Updated message and event logging to include request ID for better debugging. - Enhanced login form to dynamically show available authentication options based on server configuration. - Introduced utility functions for normalizing and ensuring valid request IDs. - Updated tests to verify request ID functionality in message sending and event logging.
This commit is contained in:
@@ -163,6 +163,40 @@ func TestConversationCreateCreatesAIWelcomeMessage(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendCustomerMessageStoresRequestIDOnMessageAndEvent(t *testing.T) {
|
||||
db := setupMessageWelcomeTestDB(t)
|
||||
aiAgent := createWelcomeTestAIAgent(t, db, "")
|
||||
external := welcomeTestExternalUser("trace-user")
|
||||
conversation, err := ConversationService.Create(external, 11, aiAgent.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("create conversation: %v", err)
|
||||
}
|
||||
|
||||
message, err := MessageService.SendCustomerMessageWithRequestID(
|
||||
conversation.ID,
|
||||
"client-msg-trace",
|
||||
enums.IMMessageTypeText,
|
||||
"hello",
|
||||
"",
|
||||
external,
|
||||
"trace-123",
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("SendCustomerMessageWithRequestID() error = %v", err)
|
||||
}
|
||||
if message.RequestID != "trace-123" {
|
||||
t.Fatalf("message.RequestID=%q want %q", message.RequestID, "trace-123")
|
||||
}
|
||||
|
||||
var event models.ConversationEventLog
|
||||
if err := db.Where("conversation_id = ?", conversation.ID).Order("id DESC").First(&event).Error; err != nil {
|
||||
t.Fatalf("find event: %v", err)
|
||||
}
|
||||
if event.RequestID != "trace-123" {
|
||||
t.Fatalf("event.RequestID=%q want %q", event.RequestID, "trace-123")
|
||||
}
|
||||
}
|
||||
|
||||
func TestConversationCreateDoesNotDuplicateWelcomeMessageForExistingConversation(t *testing.T) {
|
||||
db := setupMessageWelcomeTestDB(t)
|
||||
aiAgent := createWelcomeTestAIAgent(t, db, "欢迎咨询")
|
||||
|
||||
Reference in New Issue
Block a user