package entity

import "time"

// DeliveryStatus 傳送狀態
type DeliveryStatus string

const (
	DeliveryStatusPending   DeliveryStatus = "pending"   // 待發送
	DeliveryStatusSending   DeliveryStatus = "sending"   // 發送中
	DeliveryStatusSuccess   DeliveryStatus = "success"   // 發送成功
	DeliveryStatusFailed    DeliveryStatus = "failed"    // 發送失敗
	DeliveryStatusRetrying  DeliveryStatus = "retrying"  // 重試中
	DeliveryStatusCancelled DeliveryStatus = "cancelled" // 已取消
)

// DeliveryHistory 傳送歷史記錄
type DeliveryHistory struct {
	ID           string         `bson:"_id" json:"id"`
	Type         string         `bson:"type" json:"type"`                   // email/sms
	Recipient    string         `bson:"recipient" json:"recipient"`         // 收件人
	Subject      string         `bson:"subject" json:"subject"`             // 主題
	Content      string         `bson:"content" json:"content"`             // 內容
	Provider     string         `bson:"provider" json:"provider"`           // aws_ses, mitake, smtp
	Status       DeliveryStatus `bson:"status" json:"status"`               // 狀態
	AttemptCount int            `bson:"attempt_count" json:"attempt_count"` // 嘗試次數
	ErrorMessage string         `bson:"error_message" json:"error_message"` // 錯誤訊息
	CreatedAt    time.Time      `bson:"created_at" json:"created_at"`
	UpdatedAt    time.Time      `bson:"updated_at" json:"updated_at"`
	CompletedAt  *time.Time     `bson:"completed_at" json:"completed_at"` // 完成時間
}

// DeliveryAttempt 單次發送嘗試記錄
type DeliveryAttempt struct {
	Provider     string    `bson:"provider" json:"provider"`
	AttemptAt    time.Time `bson:"attempt_at" json:"attempt_at"`
	Success      bool      `bson:"success" json:"success"`
	ErrorMessage string    `bson:"error_message" json:"error_message"`
	Duration     int64     `bson:"duration_ms" json:"duration_ms"` // 執行時間(毫秒)
}
