package dto import ( "gitea.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" ) // CreateTaskReq 创建异步任务 type CreateTaskReq struct { g.Meta `path:"/createTask" method:"post" tags:"任务管理" summary:"创建异步任务" dc:"创建异步任务并返回任务ID"` ModelName string `p:"modelName" json:"modelName" v:"required#modelName不能为空" dc:"模型名称"` ModelKey string `p:"modelKey" json:"modelKey" dc:"动态请求头(用于覆盖/补充模型配置 head_msg),示例:X-API-Key:xxx"` BizName string `p:"bizName" json:"bizName" dc:"业务名称(调用方模块/系统,用于统计)"` CallbackUrl string `p:"callbackUrl" json:"callbackUrl" dc:"回调地址(可选,用于后续业务通知)"` InputRef string `p:"inputRef" json:"inputRef" dc:"输入引用(如OSS/文件引用等)"` RequestPayload any `p:"requestPayload" json:"requestPayload" dc:"请求负载(透传给模型服务)"` } type CreateTaskRes struct { TaskID string `json:"taskId" dc:"任务ID"` } // GetTaskResultReq 获取结果(只返回 oss 地址) type GetTaskResultReq struct { g.Meta `path:"/getTaskResult" method:"get" tags:"任务管理" summary:"获取任务结果" dc:"根据任务ID获取结果(只返回OSS地址)"` TaskID string `p:"taskId" json:"taskId" v:"required#taskId不能为空" dc:"任务ID"` } type GetTaskResultRes struct { OssFile string `json:"ossFile" dc:"结果文件OSS地址"` State int `json:"state" dc:"任务状态"` } // GetTaskBatchReq 批量查询任务(并对成功任务标记为已下载) type GetTaskBatchReq struct { g.Meta `path:"/getTaskBatch" method:"post" tags:"任务管理" summary:"批量查询任务" dc:"批量查询任务状态与OSS地址;对成功(state=2)的任务自动标记为已下载(state=4),并写入保留到期时间"` TaskIDs []string `p:"taskIds" json:"taskIds" v:"required#taskIds不能为空" dc:"任务ID列表"` } type GetTaskBatchItem struct { TaskID string `json:"taskId" dc:"任务ID"` State int `json:"state" dc:"任务状态"` OssFile string `json:"ossFile" dc:"结果文件OSS地址"` } type GetTaskBatchRes struct { List []GetTaskBatchItem `json:"list" dc:"任务列表"` } // ListTaskReq 任务列表分页查询 type ListTaskReq struct { g.Meta `path:"/listTask" method:"post" tags:"任务管理" summary:"任务列表" dc:"分页查询任务列表,支持按状态/模型名称/task_id过滤"` Page *beans.Page `p:"page" json:"page" dc:"分页参数"` ModelName string `p:"modelName" json:"modelName" dc:"模型名称(模糊匹配)"` TaskID string `p:"taskId" json:"taskId" dc:"任务ID(模糊匹配)"` State *int `p:"state" json:"state" dc:"任务状态(0/1/2/3/4,可选)"` } type ListTaskRes struct { List any `json:"list" dc:"列表数据"` Total int64 `json:"total" dc:"总数"` } // RunWorkReq 手动触发 worker 执行一次(由上层定时任务调用) type RunWorkReq struct { g.Meta `path:"/runWork" method:"post" tags:"任务管理" summary:"执行一次Worker" dc:"手动触发一次Worker抢占并处理任务(用于由上层定时任务控制)"` BatchSize int `p:"batchSize" json:"batchSize" dc:"本次抢占任务数量(默认10)"` Goroutines int `p:"goroutines" json:"goroutines" dc:"本次并发数(默认1)"` } type RunWorkRes struct { Claimed int `json:"claimed" dc:"本次抢占并处理的任务数"` } // CleanWorkReq 手动触发 cleaner 执行一次(由上层定时任务调用) type CleanWorkReq struct { g.Meta `path:"/cleanWork" method:"post" tags:"任务管理" summary:"执行一次Cleaner" dc:"手动触发一次清理/重试(用于由上层定时任务控制)"` } type CleanWorkRes struct { Ok bool `json:"ok" dc:"是否执行成功"` }