using AntDesign; using SqlSugar; using System.ComponentModel.DataAnnotations; using UserCenter.Model.Enum; using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.Model.Enum; namespace Learn.VideoAnalysis.Controllers.Dto { /// /// 视频列表项 /// public class StructurePageContentAnalyzeItem { /// /// 录播内容编号 /// public long StructurePageContentId { get; set; } /// /// 素材ID /// public long MaterialId { get; set; } /// /// 视频编码 /// public string VideoCode { get; set; } /// /// 视频文件名称 /// public string VideoName { get; set; } /// /// 内容类型 /// public AttachmentsInfoType AttachmentsInfoType { get; set; } } public class NodePackageReq { /// /// 录播结构目录节点编号 /// [Required(ErrorMessage = "目录节点编号是必填项")] public long NodeId { get; set; } /// /// 科目类型 /// [Required(ErrorMessage = "科目类型是必填项")] public SubjectEnum SubjectType { get; set; } /// /// 任务类型 /// [Required(ErrorMessage = "任务类型是必填项")] public TaskTypeEnum TaskType { get; set; } /// /// 视频列表 /// [Required(ErrorMessage = "文件数量是必填项")] public List AnalyzeItems { get; set; } } /// /// 视频处理 请求 /// public class NodeMonitoringReq { /// /// 媒体路径 /// [Required(ErrorMessage = "文件节点ID是必填项")] public long NodeId { get; set; } /// /// 任务类型 /// public TaskTypeEnum? Type { get; set; } /// /// 学科类型 /// public SubjectEnum? Subject { get; set; } } /// /// 视频处理 请求 /// public class VideoAnalysisReq { /// /// 媒体路径 /// [Required(ErrorMessage = "资源URL是必填项")] public string MediaUrl { get; set; } = string.Empty; /// /// 资源名称 /// [Required(ErrorMessage = "资源名称是必要的")] public string Name { 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 TaskKnowInfo { /// ///视频片段知识点 id /// public long Id { get; set; } /// /// 知识点 /// public string KnowPoint { get; set; } /// /// 知识点ID /// public string KnowPointId { get; set; } } public class TaskKnowBlock { public long Id { get; set; } /// /// 开始时间 /// public float? StartTime { get; set; } /// /// 结束时间 /// public float? EndTime { get; set; } /// /// 持续时间 /// [SugarColumn(IsIgnore = true)] public float? KeepTime => (EndTime ?? 0) - StartTime ?? 0; /// /// 主题 /// public string? Theme { get; set; } /// /// 内容总结 /// public string? Content { get; set; } /// /// 知识点列表 /// public TaskKnowInfo[] Know { get; set; } } /// /// 视频片段知识点结果 /// public class TaskKnowRes { /// /// 自定义Id [任务视频自定义id] /// /// public string? TagId { get; set; } /// /// 任务当前执行状态 /// public RedisChannelEnum Status { get; set; } /// /// 视频任务id /// public long VideoTaskId { get; set; } /// /// 视频知识快 /// public TaskKnowBlock[] KnowBlockArr { 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))); } }