Learn.VideoAnalysis/VideoAnalysisCore/AICore/GPT/Dto/QuestionRes.cs

218 lines
6.0 KiB
C#

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