package video import ( "context" "fmt" dto "media/model/dto/video" service "media/service/video" "github.com/gogf/gf/v2/frame/g" ) type analysis struct{} var Analysis = new(analysis) // Analysis 提交视频分析任务 POST /video/analysis func (c *analysis) Analysis(ctx context.Context, req *dto.AnalysisReq) (res *dto.CreateAnalysisTaskRes, err error) { ctx = withUser(ctx) g.Log().Infof(ctx, "[视频分析] 收到请求 入参: total_videos=%d, callback=%s", len(req.VideoURLs), req.CallbackURL) if len(req.VideoURLs) == 0 { return nil, fmt.Errorf("视频URL列表不能为空") } taskID, taskErr := service.Analysis.CreateAsyncTask(ctx, req.VideoURLs, req.CallbackURL) if taskErr != nil { return nil, taskErr } return &dto.CreateAnalysisTaskRes{TaskID: taskID}, nil } // GetAnalysisTask 查询视频分析任务结果 GET /video/analysis/task/{taskId} func (c *analysis) GetAnalysisTask(ctx context.Context, req *dto.GetAnalysisTaskReq) (res *dto.GetAnalysisTaskRes, err error) { ctx = withUser(ctx) return service.Analysis.GetTaskResult(ctx, req.TaskID) }