Phase 1: Extract Domain Types ============================= - Create internal/domain/ package with canonical types: - domain/task.go: Task, Attempt structs - domain/tracking.go: TrackingConfig and MLflow/TensorBoard/Wandb configs - domain/dataset.go: DatasetSpec - domain/status.go: JobStatus constants - domain/errors.go: FailureClass system with classification functions - domain/doc.go: package documentation - Update queue/task.go to re-export domain types (backward compatibility) - Update TUI model/state.go to use domain types via type aliases - Simplify TUI services: remove ~60 lines of conversion functions Phase 2: Delete ErrorCategory System ==================================== - Remove deprecated ErrorCategory type and constants - Remove TaskError struct and related functions - Remove mapping functions: ClassifyError, IsRetryable, GetUserMessage, RetryDelay - Update all queue implementations to use domain.FailureClass directly: - queue/metrics.go: RecordTaskFailure/Retry now take FailureClass - queue/queue.go: RetryTask uses domain.ClassifyFailure - queue/filesystem_queue.go: RetryTask and MoveToDeadLetterQueue updated - queue/sqlite_queue.go: RetryTask and MoveToDeadLetterQueue updated Lines eliminated: ~190 lines of conversion and mapping code Result: Single source of truth for domain types and error classification
28 lines
901 B
Go
28 lines
901 B
Go
package queue
|
|
|
|
import (
|
|
"github.com/jfraeys/fetch_ml/internal/config"
|
|
"github.com/jfraeys/fetch_ml/internal/domain"
|
|
)
|
|
|
|
// Re-export domain types for backward compatibility
|
|
// Deprecated: Use internal/domain directly
|
|
type (
|
|
Task = domain.Task
|
|
Attempt = domain.Attempt
|
|
DatasetSpec = domain.DatasetSpec
|
|
TrackingConfig = domain.TrackingConfig
|
|
MLflowTrackingConfig = domain.MLflowTrackingConfig
|
|
TensorBoardTrackingConfig = domain.TensorBoardTrackingConfig
|
|
WandbTrackingConfig = domain.WandbTrackingConfig
|
|
)
|
|
|
|
// Redis key constants
|
|
var (
|
|
TaskQueueKey = config.RedisTaskQueueKey
|
|
TaskPrefix = config.RedisTaskPrefix
|
|
TaskStatusPrefix = config.RedisTaskStatusPrefix
|
|
WorkerHeartbeat = config.RedisWorkerHeartbeat
|
|
WorkerPrewarmKey = config.RedisWorkerPrewarmKey
|
|
JobMetricsPrefix = config.RedisJobMetricsPrefix
|
|
)
|