Learn.VideoAnalysis/VideoAnalysis/Controllers/Dto/ApiDto.cs

248 lines
7.0 KiB
C#

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
{
/// <summary>
/// 视频列表项
/// </summary>
public class StructurePageContentAnalyzeItem
{
/// <summary>
/// 录播内容编号
/// </summary>
public long StructurePageContentId { get; set; }
/// <summary>
/// 素材ID
/// </summary>
public long MaterialId { get; set; }
/// <summary>
/// 视频编码
/// </summary>
public string VideoCode { get; set; }
/// <summary>
/// 视频文件名称
/// </summary>
public string VideoName { get; set; }
/// <summary>
/// 内容类型
/// </summary>
public AttachmentsInfoType AttachmentsInfoType { get; set; }
}
public class NodePackageReq
{
/// <summary>
/// 录播结构目录节点编号
/// </summary>
[Required(ErrorMessage = "目录节点编号是必填项")]
public long NodeId { get; set; }
/// <summary>
/// 科目类型
/// </summary>
[Required(ErrorMessage = "科目类型是必填项")]
public SubjectEnum SubjectType { get; set; }
/// <summary>
/// 任务类型
/// </summary>
[Required(ErrorMessage = "任务类型是必填项")]
public TaskTypeEnum TaskType { get; set; }
/// <summary>
/// 视频列表
/// </summary>
[Required(ErrorMessage = "文件数量是必填项")]
public List<StructurePageContentAnalyzeItem> AnalyzeItems { get; set; }
}
/// <summary>
/// 视频处理 请求
/// </summary>
public class NodeMonitoringReq
{
/// <summary>
/// 媒体路径
/// </summary>
[Required(ErrorMessage = "文件节点ID是必填项")]
public long NodeId { get; set; }
/// <summary>
/// 任务类型
/// </summary>
public TaskTypeEnum? Type { get; set; }
/// <summary>
/// 学科类型
/// </summary>
public SubjectEnum? Subject { get; set; }
}
/// <summary>
/// 视频处理 请求
/// </summary>
public class VideoAnalysisReq
{
/// <summary>
/// 媒体路径
/// </summary>
[Required(ErrorMessage = "资源URL是必填项")]
public string MediaUrl { get; set; } = string.Empty;
/// <summary>
/// 资源名称
/// </summary>
[Required(ErrorMessage = "资源名称是必要的")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// ApiKey
/// </summary>
[Required(ErrorMessage = "接口Token是必填项")]
public string ApiToken { get; set; } = string.Empty;
/// <summary>
/// 内容所属学科
/// </summary>
public SubjectEnum? Subject { get; set; }
/// <summary>
/// 任务类型
/// </summary>
public TaskTypeEnum? Type { get; set; }
/// <summary>
/// 自定义值 任务完成后附带通知
/// </summary>
public string Tag { get; set; } = string.Empty;
/// <summary>
/// 自定义Id可用于任务完成之后的查询
/// </summary>
public string? TagId { get; set; }
/// <summary>
///回调Api地址
/// </summary>
//[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
{
/// <summary>
///视频片段知识点 id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 知识点
/// </summary>
public string KnowPoint { get; set; }
/// <summary>
/// 知识点ID
/// </summary>
public string KnowPointId { get; set; }
}
public class TaskKnowBlock
{
public long Id { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public float? StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public float? EndTime { get; set; }
/// <summary>
/// 持续时间
/// </summary>
[SugarColumn(IsIgnore = true)]
public float? KeepTime => (EndTime ?? 0) - StartTime ?? 0;
/// <summary>
/// 主题
/// </summary>
public string? Theme { get; set; }
/// <summary>
/// 内容总结
/// </summary>
public string? Content { get; set; }
/// <summary>
/// 知识点列表
/// </summary>
public TaskKnowInfo[] Know { get; set; }
}
/// <summary>
/// 视频片段知识点结果
/// </summary>
public class TaskKnowRes
{
/// <summary>
/// 自定义Id [任务视频自定义id]
/// <see cref="VideoTask.TagId"/>
/// </summary>
public string? TagId { get; set; }
/// <summary>
/// 任务当前执行状态
/// </summary>
public RedisChannelEnum Status { get; set; }
/// <summary>
/// 视频任务id
/// </summary>
public long VideoTaskId { get; set; }
/// <summary>
/// 视频知识快
/// </summary>
public TaskKnowBlock[] KnowBlockArr { get; set; }
}
public class TaskInfoRes: TaskRes
{
public TaskInfoRes()
{
}
/// <summary>
/// 任务当前执行状态
/// </summary>
public RedisChannelEnum Status { get; set; }
///// <summary>
///// 时间轴状态枚举
///// </summary>
//public Dictionary<int, string> TimeTypeEnum =>
// Enum.GetValues(typeof(TimeBaseTypeEnum))
// .Cast<TimeBaseTypeEnum>()
// .ToDictionary(x => (int)x, x => x.ToString());
///// <summary>
///// 时间轴合计
///// </summary>
//public Dictionary<TimeBaseTypeEnum, TextValue>? TimeBaseTotal =>
// TimeBase?.GroupBy(s => s.TimeBaseType??TimeBaseTypeEnum.教师讲授)?
// .ToDictionary(s => s.Key, s => new TextValue(s.Sum(x => x.End - x.Start)));
}
}