215 lines
6.0 KiB
C#
215 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 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
|
||
{
|
||
/// <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>
|
||
/// 知识点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();
|
||
}
|
||
|
||
}
|