add intro questoinare to gather participant details

This commit is contained in:
Robin Olsen
2026-03-12 14:56:07 +01:00
parent 08ce45c99a
commit a51fd848d6
6 changed files with 166 additions and 27 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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"`