package notify

import (
	"time"

	"go.uber.org/zap/zapcore"
)

// DefaultTimeFormat 定义了所有通知中统一使用的时间格式。
const DefaultTimeFormat = "2006-01-02 15:04:05"

// NotifierType 定义了通知器的类型。
type NotifierType string

const (
	// NotifierTypeSMTP 表示 SMTP 邮件通知器。
	NotifierTypeSMTP NotifierType = "邮件"
	// NotifierTypeWeChat 表示企业微信通知器。
	NotifierTypeWeChat NotifierType = "企业微信"
	// NotifierTypeLark 表示飞书通知器。
	NotifierTypeLark NotifierType = "飞书"
	// NotifierTypeLog 表示日志通知器，作为最终的告警记录渠道。
	NotifierTypeLog NotifierType = "日志"
)

// AlarmContent 定义了通知的内容
type AlarmContent struct {
	// 通知标题
	Title string
	// 通知信息
	Message string
	// 通知级别
	Level zapcore.Level
	// 通知时间
	Timestamp time.Time
}

// Notifier 定义了通知发送器的接口
type Notifier interface {
	// Send 发送通知
	Send(content AlarmContent, toAddr string) error
	// Type 返回通知器的类型
	Type() NotifierType
}
