Files
LazyPM/internal/models/statistics.go
2026-03-03 11:52:34 +01:00

93 lines
4.0 KiB
Go

package models
import (
"time"
)
type Statistics struct {
ID int `json:"id"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
Duration time.Duration `json:"duration"`
InterfaceType InterfaceType `json:"interface_type"`
TaskRuns int `json:"task_runs"`
TasksCompleted int `json:"tasks_completed"`
TasksFailed int `json:"tasks_failed"`
TotalDurationMs int64 `json:"total_duration_ms"`
AverageDurationMs int64 `json:"average_duration_ms"`
TotalUserActions int `json:"total_user_actions"`
QuestionnairesCompleted int `json:"questionnaires_completed"`
QuestionnairesAbandoned int `json:"questionnaires_abandoned"`
ValidationAttempts int `json:"validation_attempts"`
ValidationSuccesses int `json:"validation_successes"`
ValidationFailures int `json:"validation_failures"`
ValidationChecksPassed int `json:"validation_checks_passed"`
ValidationChecksFailed int `json:"validation_checks_failed"`
LastTaskName string `json:"last_task_name"`
LastRunID int `json:"last_run_id"`
}
type TaskMetricsFile struct {
TaskName string `json:"task_name"`
UpdatedAt time.Time `json:"updated_at"`
Summary TaskStatsSummary `json:"summary"`
Runs []TaskRunMetrics `json:"runs"`
}
type TaskStatsSummary struct {
TotalRuns int `json:"total_runs"`
CompletedRuns int `json:"completed_runs"`
IncompleteRuns int `json:"incomplete_runs"`
TotalDurationMs int64 `json:"total_duration_ms"`
AverageDurationMs int64 `json:"average_duration_ms"`
TotalUserActions int `json:"total_user_actions"`
QuestionnairesCompleted int `json:"questionnaires_completed"`
QuestionnairesAbandoned int `json:"questionnaires_abandoned"`
ValidationAttempts int `json:"validation_attempts"`
ValidationSuccesses int `json:"validation_successes"`
ValidationFailures int `json:"validation_failures"`
ValidationChecksPassed int `json:"validation_checks_passed"`
ValidationChecksFailed int `json:"validation_checks_failed"`
LastInterfaceType InterfaceType `json:"last_interface_type"`
FirstRunStartedAt time.Time `json:"first_run_started_at"`
LastRunStartedAt time.Time `json:"last_run_started_at"`
LastRunEndedAt time.Time `json:"last_run_ended_at"`
}
type TaskRunMetrics struct {
RunID int `json:"run_id"`
TaskName string `json:"task_name"`
InterfaceType InterfaceType `json:"interface_type"`
StartedAt time.Time `json:"started_at"`
EndedAt time.Time `json:"ended_at"`
DurationMs int64 `json:"duration_ms"`
Completed bool `json:"completed"`
ValidationAttempts int `json:"validation_attempts"`
ValidationSuccesses int `json:"validation_successes"`
ValidationFailures int `json:"validation_failures"`
ValidationChecksPassed int `json:"validation_checks_passed"`
ValidationChecksFailed int `json:"validation_checks_failed"`
LastValidationMessage string `json:"last_validation_message,omitempty"`
QuestionnaireCompleted bool `json:"questionnaire_completed"`
QuestionnaireUserQuit bool `json:"questionnaire_user_quit"`
QuestionnaireAnswers map[string]any `json:"questionnaire_answers,omitempty"`
Logs []TaskLogEntry `json:"logs"`
Error string `json:"error,omitempty"`
}
type TaskLogEntry struct {
Timestamp time.Time `json:"timestamp"`
Level string `json:"level"`
Message string `json:"message"`
Source string `json:"source,omitempty"`
Action string `json:"action,omitempty"`
Target string `json:"target,omitempty"`
Result string `json:"result,omitempty"`
Attempt int `json:"attempt,omitempty"`
}