Add CI workflow at .gitea/workflows/ci.yml triggered on pull_request with two jobs: fmt (gofmt check) and test (go test ./...). Fix gofmt issues (import ordering) in 7 files so CI passes from the start. Fixes #7 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
36 lines
988 B
Go
36 lines
988 B
Go
package database
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Task status constants matching the requirement's state machine.
|
|
const (
|
|
StatusIgnored = "IGNORED"
|
|
StatusReceived = "RECEIVED"
|
|
StatusAIProcessing = "AI_PROCESSING"
|
|
StatusCallbackDone = "CALLBACK_DONE"
|
|
StatusSMTPRetrying = "SMTP_RETRYING"
|
|
StatusCompleted = "COMPLETED"
|
|
StatusFailed = "FAILED"
|
|
)
|
|
|
|
// Task represents a single email processing unit tracked through the pipeline.
|
|
type Task struct {
|
|
ID uint `gorm:"primaryKey;autoIncrement"`
|
|
TaskUUID string `gorm:"uniqueIndex;not null"`
|
|
ThreadID string `gorm:"index"`
|
|
MessageID string `gorm:"index"`
|
|
Sender string
|
|
Subject string
|
|
BodyPlain string
|
|
AIResponse string
|
|
Status string `gorm:"index;not null"`
|
|
AttemptOpenClaw int `gorm:"default:0"`
|
|
AttemptSMTP int `gorm:"default:0"`
|
|
LastError *string
|
|
NextRetryAt *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|