package models

import (
	"time"

	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
)

// 任务
type Task struct {
	tableName    struct{}          `comment:"任务" pg:"task"`
	Id           int               `pg:"id,pk"`                    //
	CreatedAt    time.Time         `pg:"created_at"`               //
	UpdatedAt    time.Time         `pg:"updated_at"`               //
	DeletedAt    *time.Time        `pg:"deleted_at"`               //
	Name         string            `pg:"name"`                     // 任务名称
	Alias        string            `pg:"alias"`                    //
	CompanyId    int               `pg:"company_id"`               //
	Leader       domain.TaskLeader `pg:"leader,type:jsonb"`        // 任务负责人
	Status       int               `pg:"status,use_zero"`          // 任务的状态
	Level        int               `pg:"level,use_zero"`           // 优先级,值越小优先级越高
	LevelName    string            `pg:"level_name"`               // 优先级名称
	RelatedUser  []int             `pg:"related_user"`             //
	LastStage    domain.TaskStage  `pg:"last_stage,type:jsonb"`    // 上一个完成的里程碑,添加type:jsonb 防止orm生成sql时字段丢失
	RunAt        int64             `pg:"run_at,use_zero"`          // 启动的时间
	StopAt       int64             `pg:"stop_at,use_zero" `        // 停止的时间
	Anomaly      int               `pg:"anomaly,use_zero"`         // 异常反馈的数量
	WarnFlag     int               `pg:"warn_flag,use_zero"`       // 里程碑异常标记
	CurrentStage domain.TaskStage  `pg:"current_stage,type:jsonb"` // 添加type:jsonb 防止orm(可能是特性)生成sql时字段丢失
	SortBy       int               `pg:"sort_by,use_zero"`         // 优先级排序;值越小优先级越高
	EndTime      int64             `pg:"end_time,use_zero"`        // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
	UseEndTime   int               `pg:"use_end_time,use_zero"`    // 是否应用任务截止的时间;默认值0:不应用,1:应用
}