feat(assist-api): send parsed session's data to chalice

This commit is contained in:
Alexander 2025-04-15 15:58:42 +02:00
parent fee79521a1
commit 5708aa4b39

View file

@ -37,14 +37,14 @@ type SessionData struct {
UserState *string `json:"userState"` // is
UserCity *string `json:"userCity"` // is
Metadata *map[string]string `json:"metadata"` // contains
Raw string
Raw interface{}
}
type SessionManager interface {
Start()
Stop()
GetByID(projectID, sessionID string) (*SessionData, error)
GetAll(projectID string, filters []*Filter, sort SortOrder, page, limit int) ([]string, int, map[string]map[string]int, error)
GetAll(projectID string, filters []*Filter, sort SortOrder, page, limit int) ([]interface{}, int, map[string]map[string]int, error)
Autocomplete(projectID string, key FilterType, value string) ([]string, error)
}
@ -214,7 +214,12 @@ func (sm *sessionManagerImpl) getSessionData(sessionIDs []string) map[string]*Se
sm.log.Debug(sm.ctx, "Error unmarshalling session data: %v", err)
continue
}
data.Raw = strVal
raw := make(map[string]interface{})
if err := json.Unmarshal([]byte(strVal), &raw); err != nil {
sm.log.Debug(sm.ctx, "Error unmarshalling raw session data: %v", err)
continue
}
data.Raw = raw
sessionData[batch[j]] = &data
}
sm.log.Debug(sm.ctx, "Collected %d sessions", len(results))
@ -375,7 +380,7 @@ func (sm *sessionManagerImpl) GetByID(projectID, sessionID string) (*SessionData
return sessionData, nil
}
func (sm *sessionManagerImpl) GetAll(projectID string, filters []*Filter, sort SortOrder, page, limit int) ([]string, int, map[string]map[string]int, error) {
func (sm *sessionManagerImpl) GetAll(projectID string, filters []*Filter, sort SortOrder, page, limit int) ([]interface{}, int, map[string]map[string]int, error) {
if page < 1 || limit < 1 {
page, limit = 1, 10 // Set default values
}
@ -393,7 +398,7 @@ func (sm *sessionManagerImpl) GetAll(projectID string, filters []*Filter, sort S
counter[string(filter.Type)][value] = 0
}
}
filtered := make([]string, 0, limit)
filtered := make([]interface{}, 0, limit)
for _, session := range sm.sorted {
sm.log.Info(sm.ctx, "projectID: %s, sessionID: %s", session.ProjectID, session.SessionID)
if session.ProjectID != projectID {
@ -407,7 +412,7 @@ func (sm *sessionManagerImpl) GetAll(projectID string, filters []*Filter, sort S
start := (page - 1) * limit
end := start + limit
if start > len(filtered) {
return []string{}, 0, make(map[string]map[string]int), nil
return []interface{}{}, 0, make(map[string]map[string]int), nil
}
if end > len(filtered) {
end = len(filtered)