using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using VideoAnalysisCore.Model.Dto; using VideoAnalysisCore.Model.Enum; namespace VideoAnalysisCore.AICore.GPT.Dto { public class VideoKnowQueryDto { /// /// 问题解释 /// public virtual float? StartTime { get; set; } /// /// 主题 /// public virtual string? Theme { get; set; } /// /// 知识点 /// public virtual string? KnowPoint { get; set; } /// /// 内容总结 /// public virtual string? Content { get; set; } } public class VideoKnowPointDto { public string KnowPoint { get; set; } public string KnowPointId { get; set; } public float KnowSourceTime { get; set; } public float KnowPointWeight { get; set; } public string KnowSource { get; set; } } public class VideoKnowRes { /// /// 问题解释 /// public virtual float? StartTime { get; set; } public virtual float? EndTime { get; set; } /// /// 持续时间 /// public virtual float? KeepTime => (EndTime ?? 0) - StartTime ?? 0; /// /// 主题 /// public virtual string? Theme { get; set; } public virtual long? StageId { get; set; } public virtual VideoQuestionShowDto[]? QuestionArr { get; set; } /// /// 知识点列表 /// public virtual VideoKnowPointDto[]? KnowPoints { get; set; } /// /// 知识点 /// public virtual string? KnowPoint { get; set; } /// /// 知识点ID /// public virtual string? KnowPointId { get; set; } /// /// 课程阶段 /// public virtual string ? Stage { get; set; } /// /// 内容总结 /// public virtual string? Content { get; set; } /// /// 教材来源 /// 课本/试卷/挹青苑 ... /// public virtual string? TextbookSource { get; set; } } public class FileNameInfo { /// /// 问题解释 /// public string? 授课章节 { get; set; } public string? 授课内容 { get; set; } } public class QuestionRes { /// /// 对应问题的id /// public long 问题编号 { get; set; } /// /// 结果 /// public JsonDocument 结果 { get; set; } private object? _cached = null; /// /// 转换结果为对象 /// /// /// public T? ToObject() { try { if (_cached != null) return (T)_cached; var r = 结果.RootElement.GetRawText(); if (r is null) return default; _cached = System.Text.Json.JsonSerializer.Deserialize(r); if (_cached is null) return default; return (T)_cached; } catch { return default; } } /// /// 问题解释 /// public string? 问题解释 { get; set; } } /// /// 课堂AI评价 /// public class CourseCriteria { /// /// AI解析 /// public string Analyze { get; set; } = string.Empty; /// /// 问题编号 /// public long Id { get; set; } /// /// AI评估得分 /// public decimal Score { get; set; } /// /// 总分 /// public decimal TotalScore { get; set; } /// /// 及格分数 /// public decimal PassScore { get; set; } /// /// 提词 /// public string Prompt { get; set; } = string.Empty; /// /// 改进意见 /// 适用于:差的评价 /// public string? ImprovedMethods { get; set; } } public class CheckMessageDto { /// /// 打分 /// public decimal Score { get; set; } /// /// 扣分原因 /// public string MinusScore { get; set; } /// /// 改进建议 /// public string Suggestion { get; set; } public VideoKnowRes[] Data { get; set; } } /// /// 课堂AI评价结果 /// public class AssessmentDto { /// /// 优秀的评价 /// public CourseCriteria[]? Merit { get; set; } /// /// 差的评价 /// public CourseCriteria[]? Bad { get; set; } /// /// 改进意见 /// public string[]? BadImprovedMethods => (Merit?.Select(s => s.ImprovedMethods ?? string.Empty)?.ToArray() ?? []) .Concat(Bad?.Select(s => s.ImprovedMethods ?? string.Empty)?.ToArray() ?? []).ToArray(); } }