using AntDesign; using System.ComponentModel.DataAnnotations; using UserCenter.Model.Enum; using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.Enum; namespace Learn.VideoAnalysis.Controllers.Dto { /// /// 视频处理 请求 /// public class VideoAnalysisReq { /// /// 媒体路径 /// [Required(ErrorMessage = "资源URL是必填项")] [Url(ErrorMessage = "请输入有效的 URL")] public string MediaUrl { get; set; } = string.Empty; /// /// 资源名称 /// [Required(ErrorMessage = "资源名称是必要的")] [Url(ErrorMessage = "请输入有效的 资源名称")] public string MediaName { get; set; } = string.Empty; /// /// ApiKey /// [Required(ErrorMessage = "接口Token是必填项")] public string ApiToken { get; set; } = string.Empty; /// /// 内容所属学科 /// public SubjectEnum? Subject { get; set; } /// /// 任务类型 /// public TaskTypeEnum? Type { get; set; } /// /// 自定义值 任务完成后附带通知 /// public string Tag { get; set; } = string.Empty; /// /// 自定义Id可用于任务完成之后的查询 /// public string? TagId { get; set; } /// ///回调Api地址 /// //[Required(ErrorMessage = "回调Api地址是必填项")] //[Url(ErrorMessage = "请输入有效的 URL")] //public string CallBackUrl { get; set; } = string.Empty; } public class TextValue { public TextValue(float v) { var s = TimeSpan.FromSeconds((double)v); var td = new[] { s.Hours, s.Minutes, s.Seconds }; Text = string.Join(':', td.Where(s => s > 0)); Value = v; } public TextValue(string t,object v) { Text = t; Value = v; } public TextValue() { } public string Text { get; set; } public object Value { get; set; } } public class TaskInfoRes: TaskRes { public TaskInfoRes() { } /// /// 任务当前执行状态 /// public RedisChannelEnum Status { get; set; } /// /// 时间轴状态枚举 /// public Dictionary TimeTypeEnum => Enum.GetValues(typeof(TimeBaseTypeEnum)) .Cast() .ToDictionary(x => (int)x, x => x.ToString()); /// /// 时间轴合计 /// public Dictionary? TimeBaseTotal => TimeBase?.GroupBy(s => s.TimeBaseType??TimeBaseTypeEnum.教师讲授)? .ToDictionary(s => s.Key, s => new TextValue(s.Sum(x => x.End - x.Start))); } }