调用模型,返回事件的时间线

This commit is contained in:
2026-05-27 16:02:44 +08:00
parent 556fa2f3ca
commit 883f09e6df
12 changed files with 1230 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package video
import "github.com/gogf/gf/v2/frame/g"
// ---------- 提交视频分析任务 ----------
// AnalysisReq 提交视频分析任务请求
type AnalysisReq struct {
g.Meta `path:"/video/analysis" method:"post" tags:"视频分析" summary:"提交视频分析任务" dc:"接收视频链接数组后台异步串行分析立即返回taskId"`
VideoURLs []string `json:"video_urls" v:"required#视频URL列表不能为空" dc:"视频URL列表"`
CallbackURL string `json:"callback_url" v:"required#回调地址不能为空" dc:"回调地址分析完成后POST结果到该地址"`
}
// CreateAnalysisTaskRes 创建视频分析任务响应
type CreateAnalysisTaskRes struct {
TaskID string `json:"taskId" dc:"任务ID"`
}
// ---------- 查询任务进度/结果 ----------
// GetAnalysisTaskReq 查询视频分析任务请求
type GetAnalysisTaskReq struct {
g.Meta `path:"/video/analysis/task/{taskId}" method:"get" tags:"视频分析" summary:"查询分析任务结果" dc:"根据taskId查询视频分析任务的进度和结果"`
TaskID string `json:"taskId" dc:"任务ID"`
}
// AnalysisDetailItem 单个视频分析结果项
type AnalysisDetailItem struct {
VideoURL string `json:"video_url" dc:"原始视频URL"`
VideoSavePath string `json:"video_save_path" dc:"视频本地保存路径"`
Status string `json:"status" dc:"状态: pending/success/failed"`
CaptionResult interface{} `json:"caption_result,omitempty" dc:"Caption接口返回结果"`
FailReason string `json:"fail_reason,omitempty" dc:"失败原因"`
}
// GetAnalysisTaskRes 查询视频分析任务响应
type GetAnalysisTaskRes struct {
TaskID string `json:"taskId" dc:"任务ID"`
Status string `json:"status" dc:"状态: pending/processing/success/failed"`
Total int `json:"total" dc:"视频总数"`
Processed int `json:"processed" dc:"已处理数"`
SuccessCount int `json:"successCount" dc:"成功数"`
FailedCount int `json:"failedCount" dc:"失败数"`
List []AnalysisDetailItem `json:"list" dc:"视频详情列表"`
ErrorMessage string `json:"errorMessage,omitempty" dc:"错误信息"`
CreatedAt int64 `json:"createdAt" dc:"创建时间戳"`
}

View File

@@ -0,0 +1,39 @@
package video
import "gitea.com/red-future/common/beans"
// AnalysisTask 视频分析异步任务实体
type AnalysisTask struct {
beans.SQLBaseDO `orm:",inherit"`
TaskID string `orm:"task_id" json:"taskId" description:"任务唯一标识"`
CallbackURL string `orm:"callback_url" json:"callbackUrl" description:"回调地址"`
Status string `orm:"status" json:"status" description:"任务状态:pending/processing/success/failed"`
Total int `orm:"total" json:"total" description:"待分析视频总数"`
SuccessCount int `orm:"success_count" json:"successCount" description:"成功数"`
FailedCount int `orm:"failed_count" json:"failedCount" description:"失败数"`
ErrorMessage string `orm:"error_message" json:"errorMessage" description:"错误信息"`
}
// AnalysisTaskCol 字段定义
type AnalysisTaskCol struct {
beans.SQLBaseCol
TaskID string
CallbackURL string
Status string
Total string
SuccessCount string
FailedCount string
ErrorMessage string
}
// AnalysisTaskCols 字段常量
var AnalysisTaskCols = AnalysisTaskCol{
SQLBaseCol: beans.DefSQLBaseCol,
TaskID: "task_id",
CallbackURL: "callback_url",
Status: "status",
Total: "total",
SuccessCount: "success_count",
FailedCount: "failed_count",
ErrorMessage: "error_message",
}

View File

@@ -0,0 +1,36 @@
package video
import "gitea.com/red-future/common/beans"
// AnalysisTaskDetail 视频分析任务明细实体
type AnalysisTaskDetail struct {
beans.SQLBaseDO `orm:",inherit"`
TaskID string `orm:"task_id" json:"taskId" description:"所属任务ID"`
VideoURL string `orm:"video_url" json:"videoUrl" description:"原始视频URL"`
VideoSavePath string `orm:"video_save_path" json:"videoSavePath" description:"视频本地保存路径(永久保留)"`
Status string `orm:"status" json:"status" description:"状态:pending/success/failed"`
CaptionResult string `orm:"caption_result" json:"captionResult" description:"Caption接口返回结果JSON"`
FailReason string `orm:"fail_reason" json:"failReason" description:"失败原因"`
}
// AnalysisTaskDetailCol 字段定义
type AnalysisTaskDetailCol struct {
beans.SQLBaseCol
TaskID string
VideoURL string
VideoSavePath string
Status string
CaptionResult string
FailReason string
}
// AnalysisTaskDetailCols 字段常量
var AnalysisTaskDetailCols = AnalysisTaskDetailCol{
SQLBaseCol: beans.DefSQLBaseCol,
TaskID: "task_id",
VideoURL: "video_url",
VideoSavePath: "video_save_path",
Status: "status",
CaptionResult: "caption_result",
FailReason: "fail_reason",
}