- 新增操作日志表(asynch_op_log)及对应DAO,记录任务创建等操作的审计信息 - 新增任务分页查询接口(ListTask)及对应DTO、Service和DAO方法 - 优化模型调用失败重试逻辑:支持配置重试排队策略(插队到队首或队尾) - 新增临时文件存储机制,当模型调用成功但OSS上传失败时,下次仅重试OSS上传 - 模型配置新增retry_queue_max_seconds字段,控制失败重试排队策略 - 更新数据库表结构(asynch_models、asynch_task、新增asynch_op_log)及同步更新SQL - 配置文件调整:超时单位改为秒,更新服务地址和轮询间隔 - 修复模型列表查询支持按名称模糊搜索
70 lines
2.4 KiB
Go
70 lines
2.4 KiB
Go
package entity
|
|
|
|
import (
|
|
"gitea.com/red-future/common/beans"
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|
)
|
|
|
|
type asynchTaskCol struct {
|
|
beans.SQLBaseCol
|
|
ModelName string
|
|
TaskID string
|
|
State string
|
|
OssFile string
|
|
FileType string
|
|
FileSize string
|
|
ErrorMsg string
|
|
StartedAt string
|
|
FinishedAt string
|
|
ExpireAt string
|
|
RetryCount string
|
|
EnqueueAt string
|
|
Phase string
|
|
TmpFile string
|
|
InputRef string
|
|
RequestPayload string
|
|
}
|
|
|
|
var AsynchTaskCol = asynchTaskCol{
|
|
SQLBaseCol: beans.DefSQLBaseCol,
|
|
ModelName: "model_name",
|
|
TaskID: "task_id",
|
|
State: "state",
|
|
OssFile: "oss_file",
|
|
FileType: "file_type",
|
|
FileSize: "file_size",
|
|
ErrorMsg: "error_msg",
|
|
StartedAt: "started_at",
|
|
FinishedAt: "finished_at",
|
|
ExpireAt: "expire_at",
|
|
RetryCount: "retry_count",
|
|
EnqueueAt: "enqueue_at",
|
|
Phase: "phase",
|
|
TmpFile: "tmp_file",
|
|
InputRef: "input_ref",
|
|
RequestPayload: "request_payload",
|
|
}
|
|
|
|
// AsynchTask 异步任务
|
|
type AsynchTask struct {
|
|
beans.SQLBaseDO `orm:",inline"`
|
|
ModelName string `orm:"model_name" json:"modelName"`
|
|
TaskID string `orm:"task_id" json:"taskId"`
|
|
State int `orm:"state" json:"state"` // 0排队中/1执行中/2成功/3失败/4已下载
|
|
OssFile string `orm:"oss_file" json:"ossFile"`
|
|
FileType string `orm:"file_type" json:"fileType"`
|
|
FileSize int64 `orm:"file_size" json:"fileSize"`
|
|
ErrorMsg string `orm:"error_msg" json:"errorMsg"`
|
|
StartedAt *gtime.Time `orm:"started_at" json:"startedAt"`
|
|
FinishedAt *gtime.Time `orm:"finished_at" json:"finishedAt"`
|
|
ExpireAt *gtime.Time `orm:"expire_at" json:"expireAt"` // 已下载(state=4)后的过期时间
|
|
RetryCount int `orm:"retry_count" json:"retryCount"`
|
|
EnqueueAt *gtime.Time `orm:"enqueue_at" json:"enqueueAt"`
|
|
Phase int `orm:"phase" json:"phase"` // 0模型阶段/1OSS阶段
|
|
TmpFile string `orm:"tmp_file" json:"tmpFile"` // 临时结果文件路径
|
|
// RetryQueueMaxSeconds 为 ListFailedRetryableGlobal 的 join 字段(非任务表字段)
|
|
RetryQueueMaxSeconds int `orm:"retry_queue_max_seconds" json:"-"`
|
|
InputRef string `orm:"input_ref" json:"inputRef"`
|
|
RequestPayload any `orm:"request_payload" json:"requestPayload"`
|
|
}
|