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

152 lines
4.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;
namespace VideoAnalysisCore.AICore.GPT.Dto
{
public class VideoKnowRes
{
/// <summary>
/// 问题解释
/// </summary>
public float? StartTime { get; set; }
public float? EndTime { get; set; }
///// <summary>
///// 持续时间
///// </summary>
public float? KeepTime => (EndTime ?? 0) - StartTime ?? 0;
/// <summary>
/// 主题
/// </summary>
public string? Theme { get; set; }
/// <summary>
/// 主题详情
/// </summary>
public string? ThemeDetalis { get; set; }
/// <summary>
/// 章节
/// </summary>
public string? Section { get; set; }
/// <summary>
/// 内容总结
/// </summary>
public string? Content { 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; }
}
/// <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();
}
}