2022-12-31 14:46:28 +00:00
|
|
|
package model
|
|
|
|
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
type WorkerTask struct {
|
|
|
|
ID string `json:"id" bson:"_id,omitempty"` // Идентификатор задачи
|
|
|
|
UserID string `json:"user_id" bson:"user_id"` // Пользователь пены
|
|
|
|
AmoID string `json:"amo_id" bson:"amo_id"` // Амо аккаунт вызвавший генерацию
|
|
|
|
AmoUserID int64 `json:"amo_user_id" bson:"amo_user_id"` // Пользователь амо вызвавший генерацию
|
|
|
|
Status WorkerTaskStatus `json:"status" bson:"status"` // Статус генерации
|
|
|
|
LeadId int64 `json:"lead_id" bson:"lead_id"` // Сделка по которой происходит генерация
|
|
|
|
TemplateID string `json:"template_id" bson:"template_id"` // Шаблон для генерации
|
|
|
|
Source WorkerSource `json:"source" bson:"source"` // Исходный файл-шаблон
|
|
|
|
Target WorkerTarget `json:"target" bson:"target"` // Куда отправить результат
|
|
|
|
DownloadUrl string `json:"download_url" bson:"download_url"` // Ссылка для скачивания результата
|
2023-01-14 12:27:53 +00:00
|
|
|
PublicUrl string `json:"public_url" bson:"public_url"` // Публичная ссылка для просмотра\редактирования\скачивания
|
2022-12-31 14:46:28 +00:00
|
|
|
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"` // Время последнего обновления
|
|
|
|
CreatedAt time.Time `json:"created_at" bson:"created_at"` // Время создания
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewWorkerTask(userID string, amoID string, amoUserID int64, status WorkerTaskStatus, leadId int64,
|
|
|
|
templateID string, source WorkerSource, target WorkerTarget) *WorkerTask {
|
|
|
|
return &WorkerTask{
|
|
|
|
UserID: userID,
|
|
|
|
AmoID: amoID,
|
|
|
|
AmoUserID: amoUserID,
|
|
|
|
Status: status,
|
|
|
|
LeadId: leadId,
|
|
|
|
TemplateID: templateID,
|
|
|
|
Source: source,
|
|
|
|
Target: target,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type WorkerTaskStatus string
|
|
|
|
|
|
|
|
func (s WorkerTaskStatus) String() string {
|
|
|
|
return string(s)
|
|
|
|
}
|
|
|
|
|
|
|
|
const (
|
|
|
|
WorkerTaskStatusNew = "new"
|
|
|
|
WorkerTaskStatusDone = "done"
|
|
|
|
WorkerTaskStatusFailed = "failed"
|
|
|
|
WorkerTaskStatusPending = "pending"
|
|
|
|
WorkerTaskStatusTimeout = "timeout"
|
|
|
|
WorkerTaskStatusProcessing = "processing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func (s WorkerTaskStatus) Valid() bool {
|
|
|
|
return s == WorkerTaskStatusDone || s == WorkerTaskStatusFailed || s == WorkerTaskStatusPending ||
|
|
|
|
s == WorkerTaskStatusTimeout || s == WorkerTaskStatusProcessing || s == WorkerTaskStatusNew
|
|
|
|
}
|
|
|
|
|
|
|
|
type WorkerSource struct {
|
|
|
|
File string `bson:"file" json:"file"`
|
|
|
|
StorageID string `bson:"storage_id" json:"storage_id"`
|
|
|
|
StorageType string `bson:"storage_type" json:"storage_type"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type WorkerTarget struct {
|
|
|
|
File string `bson:"file" json:"file"`
|
|
|
|
StorageID string `bson:"storage_id" json:"storage_id"`
|
|
|
|
StorageType string `bson:"storage_type" json:"storage_type"`
|
|
|
|
}
|