package rule

type TaskLifecycleMessage struct {
	TaskId string `json:"task_id"`
	Action string `json:"action"`
	Data   string `json:"data"` // 具体的任务操作配置JSON字符串
}

// TimerTaskMessage 定时任务消息
type TimerTaskMessage struct {
	TaskId  string        `json:"task_id"` // 任务Id
	Cron    string        `json:"cron"`    // 任务执行的cron表达式
	Times   int           `json:"times"`   // 执行次数
	Actions []*TaskAction `json:"actions"` // 执行动作列表
}

// TaskAction 定时任务执行动作
type TaskAction struct {
	EntityId string `json:"entity_id"` // 被执行实体Id,指向设备编码
	/*
		动作对象类型。
		delay：延时
		device_issue：设备指令下发
		device_group_issue：群组指令下发
	*/
	ActionExecutor   string                `json:"action_executor"`   // 动作对象类型。
	SubEntityId      string                `json:"sub_entity_id"`     // 实体子设备Id,如果需要
	ExecutorProperty *TaskExecutorProperty `json:"executor_property"` // 动作执行明细
}

// TaskExecutorProperty 定时任务执行动作执行参数
type TaskExecutorProperty struct {
	/*
		指令 code。当 action_executor 是 device_issue 或 device_group_issue 时，此参数必填。
	*/
	FunctionCode string `json:"function_code"`
	/*
		指令 value。当 action_executor 是 device_issue 或 device_group_issue 时，此参数必填。
	*/
	FunctionValue map[string]interface{} `json:"function_value"`
	/*
		延时时间。当 action_executor 是 delay 时，此参数必填。
	*/
	DelaySeconds int64 `json:"delay_seconds"`
}
