feat(settings): align assignable agents payloads

This commit is contained in:
2026-06-05 23:54:37 +08:00
parent dc09036676
commit 5efa1955e5
4 changed files with 137 additions and 128 deletions
@@ -80,5 +80,39 @@ func (h *AssignableAgentHandler) List(c *gin.Context) {
return
}
response.OK(c, agents)
c.JSON(http.StatusOK, gin.H{"payload": serializeAssignableAgents(accountID, agents)})
}
func serializeAssignableAgents(accountID uint, agents []service.AssignableAgentDTO) []map[string]any {
payload := make([]map[string]any, 0, len(agents))
for i := range agents {
agent := agents[i]
availableName := agent.DisplayName
if availableName == "" {
availableName = agent.Name
}
provider := agent.Provider
if provider == "" {
provider = "email"
}
customRoleID := any(nil)
if agent.CustomRoleID != 0 {
customRoleID = agent.CustomRoleID
}
payload = append(payload, map[string]any{
"id": agent.ID,
"account_id": accountID,
"availability_status": agent.AvailabilityStatus,
"auto_offline": agent.AutoOffline,
"confirmed": agent.Confirmed,
"email": agent.Email,
"provider": provider,
"available_name": availableName,
"name": agent.Name,
"role": agent.Role,
"thumbnail": agent.AvatarURL,
"custom_role_id": customRoleID,
})
}
return payload
}