- Task 模型增加 CreatedAt/CompletedAt,DB 读取和快照同步 - 总览页最近任务显示时间,限制5条,增加"更多 →"链接 - 任务中心增加创建时间/完成时间列 - 管控台"保存并下发"按钮:修改功能或视频源后才激活 - 下发前弹出变更摘要确认对话框 - 下发后回到管控台并显示任务ID
54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package models
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type TaskStatus string
|
|
|
|
const (
|
|
TaskPending TaskStatus = "pending"
|
|
TaskRunning TaskStatus = "running"
|
|
TaskSuccess TaskStatus = "success"
|
|
TaskFailed TaskStatus = "failed"
|
|
)
|
|
|
|
type DeviceTaskStatus struct {
|
|
DeviceID string `json:"device_id"`
|
|
Status TaskStatus `json:"status"`
|
|
Progress float64 `json:"progress"`
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
type Task struct {
|
|
ID string `json:"task_id"`
|
|
Type string `json:"type"`
|
|
DeviceIDs []string `json:"device_ids"`
|
|
Payload interface{} `json:"payload"`
|
|
Status TaskStatus `json:"status"`
|
|
Devices map[string]*DeviceTaskStatus `json:"devices"`
|
|
CreatedAt string `json:"created_at"`
|
|
CompletedAt string `json:"completed_at"`
|
|
Mu sync.RWMutex `json:"-"`
|
|
}
|
|
|
|
func NewTask(id, t string, deviceIDs []string, payload interface{}) *Task {
|
|
devices := make(map[string]*DeviceTaskStatus)
|
|
for _, did := range deviceIDs {
|
|
devices[did] = &DeviceTaskStatus{
|
|
DeviceID: did,
|
|
Status: TaskPending,
|
|
}
|
|
}
|
|
return &Task{
|
|
ID: id,
|
|
Type: t,
|
|
DeviceIDs: deviceIDs,
|
|
Payload: payload,
|
|
Status: TaskPending,
|
|
Devices: devices,
|
|
CreatedAt: time.Now().Format("2006-01-02 15:04:05"),
|
|
}
|
|
}
|