add intro questoinare to gather participant details
This commit is contained in:
@@ -131,3 +131,29 @@ func (s *StatisticsService) RecordTaskRun(ctx context.Context, run models.TaskRu
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *StatisticsService) RecordIntroQuestionnaireAnswers(answers map[string]any) error {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
if s.storage.Data == nil {
|
||||
return fmt.Errorf("statistics data not initialized")
|
||||
}
|
||||
|
||||
s.storage.Data.IntroQuestionnaireAnswers = answers
|
||||
|
||||
if err := s.storage.Save(); err != nil {
|
||||
if s.logger != nil {
|
||||
s.logger.Error("failed to save intro questionnaire answers", "error", err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
if s.logger != nil {
|
||||
s.logger.Info("intro questionnaire answers saved",
|
||||
"answers_count", len(answers),
|
||||
)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -61,4 +61,5 @@ type StatsService interface {
|
||||
GetStatistics() (Statistics, error)
|
||||
GetParticipantID() primitive.ObjectID
|
||||
RecordTaskRun(ctx context.Context, run TaskRunMetrics) error
|
||||
RecordIntroQuestionnaireAnswers(answers map[string]any) error
|
||||
}
|
||||
|
||||
@@ -20,7 +20,10 @@ type Statistics struct {
|
||||
TotalDurationMs int64 `bson:"total_duration_ms" json:"total_duration_ms"`
|
||||
AverageDurationMs int64 `bson:"average_duration_ms" json:"average_duration_ms"`
|
||||
|
||||
TotalUserActions int `bson:"total_user_actions" json:"total_user_actions"`
|
||||
TotalUserActions int `bson:"total_user_actions" json:"total_user_actions"`
|
||||
|
||||
IntroQuestionnaireAnswers map[string]any `bson:"intro_questionnaire_answers" json:"intro_questionnaire_answers"`
|
||||
|
||||
QuestionnairesCompleted int `bson:"questionnaires_completed" json:"questionnaires_completed"`
|
||||
QuestionnairesAbandoned int `bson:"questionnaires_abandoned" json:"questionnaires_abandoned"`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user