diff --git a/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs b/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs
index 12c0952..863725e 100644
--- a/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs
+++ b/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs
@@ -67,6 +67,8 @@ namespace Learn.VideoAnalysis.Components.Pages
private static System.Timers.Timer _timer;
public void StartTimer(Object source, System.Timers.ElapsedEventArgs e)
{
+ if (_dataSource is null)
+ return;
foreach (var item in _dataSource)
{
if (!string.IsNullOrEmpty(item.ErrorMessage) || item.LastEnum == RedisChannelEnum.EndTask)
diff --git a/VideoAnalysis/Controllers/Dto/ApiDto.cs b/VideoAnalysis/Controllers/Dto/ApiDto.cs
index 6938d22..5c14576 100644
--- a/VideoAnalysis/Controllers/Dto/ApiDto.cs
+++ b/VideoAnalysis/Controllers/Dto/ApiDto.cs
@@ -25,9 +25,9 @@ namespace Learn.VideoAnalysis.Controllers.Dto
///
///回调Api地址
///
- [Required(ErrorMessage = "回调Api地址是必填项")]
- [Url(ErrorMessage = "请输入有效的 URL")]
- public string CallBackUrl { get; set; } = string.Empty;
+ //[Required(ErrorMessage = "回调Api地址是必填项")]
+ //[Url(ErrorMessage = "请输入有效的 URL")]
+ //public string CallBackUrl { get; set; } = string.Empty;
}
diff --git a/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs b/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs
index 9d1d5f5..a51e65e 100644
--- a/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs
+++ b/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs
@@ -14,6 +14,7 @@ using VideoAnalysisCore.Enum;
using System.Reflection;
using FreeRedis;
using VideoAnalysisCore.Model.Dto;
+using Newtonsoft.Json;
namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
{
@@ -54,7 +55,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
criteriaBuilder.Append(item.Id);
criteriaBuilder.Append(":");
criteriaBuilder.Append(item.NamePrompt);
- criteriaBuilder.Append("结果类型 bool|");
+ criteriaBuilder.Append("结果类型 int (1-10分 5分不合格 10分满分)|");
}
//拼接枚举提问
foreach (var value in System.Enum.GetValues(typeof(QuestionTypeEnum)))
@@ -95,17 +96,20 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
};
var chatResp = await moonshotClient.Chat(chatRep);
if (chatResp is null || chatResp.error != null)
- throw new Exception($"KIMI模型返回异常 Chat 请求参数: {JsonSerializer.Serialize(chatRep)} " +
- $" chatResp {JsonSerializer.Serialize(chatResp)}");
+ throw new Exception($"KIMI模型返回异常 Chat 请求参数: {System.Text.Json.JsonSerializer.Serialize(chatRep)} " +
+ $" chatResp {System.Text.Json.JsonSerializer.Serialize(chatResp)}");
var chatResContent = chatResp?.choices.FirstOrDefault()?.message.content;
+ if (chatResContent is null)
+ throw new Exception("KIMIGPT返回message无效结果");
- var questionRes = JsonSerializer.Deserialize(chatResContent);
+ var questionRes = JsonConvert.DeserializeObject(chatResContent);
var gptRes = new CallGPTRes(captions);
if (questionRes is null)
throw new Exception("KIMIGPT返回无效结果");
//处理 ai问答提问
var arr1 = questionRes.Where(s => s.问题编号 < 100);
- var arr2 = questionRes.Where(s => s.问题编号 >= 100).ToDictionary(s => s.问题编号);
+ var arr2 = questionRes.Where(s => s.问题编号 >= 100)
+ .ToDictionary(s => s.问题编号);
//AI综合评估
var criteriaDic = criteriaArr.ToDictionary(s => s.Id);
gptRes.Assessment = new AssessmentDto()
@@ -122,8 +126,9 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.问题编号].Id,
- ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
- Prompt = criteriaDic[s.问题编号].ImprovedMethods,
+ //ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
+ Analyze = s.问题解释 ?? string.Empty,
+ Prompt = criteriaDic[s.问题编号].Advantage,
}).ToArray(),
};
@@ -140,7 +145,16 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
End = double.Parse(s.key.Split(":")[2]??0.ToString()),
Content = s.value,
});
- //todo 分析上课时间段情况 分析 独立学习 小组合作 随堂练习等情况
+ //分析上课时间段情况 分析 独立学习 小组合作 随堂练习等情况
+ var extraTimeBase = arr2[(int)QuestionTypeEnum.额外课堂情况]
+ .结果.ToObject[]>()?.Select(s =>
+ new TimeBase
+ {
+ Start = double.Parse(s.key.Split(":")[1] ?? 0.ToString()),
+ End = double.Parse(s.key.Split(":")[2] ?? 0.ToString()),
+ Content = s.value,
+ });
+
var tId = long.Parse(task);
diff --git a/VideoAnalysisCore/Common/RedisExpand.cs b/VideoAnalysisCore/Common/RedisExpand.cs
index eefeac1..60d5455 100644
--- a/VideoAnalysisCore/Common/RedisExpand.cs
+++ b/VideoAnalysisCore/Common/RedisExpand.cs
@@ -192,15 +192,16 @@ namespace VideoAnalysisCore.Common
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-> " + key + " " + taskId);
if (action is not null)
{
- var tID = long.Parse(taskId);
- Redis.HMSet(RedisExpandKey.Task(taskId), "LastEnum", key);
- Redis.HMSet(RedisExpandKey.Task(taskId), "Progress", 0);
- await DbScoped.SugarScope.Updateable()
- .SetColumns(it => it.LastEnum == key)
- .Where(it => it.Id == tID)
- .ExecuteCommandAsync();
try
{
+ var tID = long.Parse(taskId);
+ Redis.HMSet(RedisExpandKey.Task(taskId), "LastEnum", key);
+ Redis.HMSet(RedisExpandKey.Task(taskId), "Progress", 0);
+ await DbScoped.SugarScope.Updateable()
+ .SetColumns(it => it.LastEnum == key)
+ .Where(it => it.Id == tID)
+ .ExecuteCommandAsync();
+
await action(taskId);
}
catch (Exception ex)
@@ -208,7 +209,6 @@ namespace VideoAnalysisCore.Common
//执行任务时出现异常
var error = ex.Message + ex.StackTrace;
await SetTaskErrorMessage(long.Parse(taskId), error);
- Redis.HMSet(RedisExpandKey.Task(taskId), "Error", error);
}
}
else
diff --git a/VideoAnalysisCore/Enum/QuestionTypeEnum.cs b/VideoAnalysisCore/Enum/QuestionTypeEnum.cs
index 7519d0b..868a243 100644
--- a/VideoAnalysisCore/Enum/QuestionTypeEnum.cs
+++ b/VideoAnalysisCore/Enum/QuestionTypeEnum.cs
@@ -11,10 +11,13 @@ namespace VideoAnalysisCore.Enum
{
[Display(Prompt = "分析授课中使用的高频词10个频率从高到低 结果类型[]")]
- 高频词 =100,
+ 高频词 = 100,
[Display(Prompt = "分析字幕中每5分钟的一个概览 结果类型[{key:时间段,value:概览}]")]
时间段概览 = 101,
[Display(Prompt = "统计授课中教师提问类型的次数 类型[重复回答,老师追问,简单性表演,老师补充答案,表扬并补充答案] 结果类型[{key:类型,value:次数}]")]
提问类型 = 102,
+
+ [Display(Prompt = " 分析授课中教师提到 类型[独立学习,小组合作,随堂练习]的时间段 结果类型[{key:类型,value:时间段/null}] ")]
+ 额外课堂情况 = 103,
}
}
diff --git a/VideoAnalysisCore/Model/VideoTask.cs b/VideoAnalysisCore/Model/VideoTask.cs
index 1cc119f..be55213 100644
--- a/VideoAnalysisCore/Model/VideoTask.cs
+++ b/VideoAnalysisCore/Model/VideoTask.cs
@@ -84,14 +84,14 @@ namespace VideoAnalysisCore.Model
/// Chat模型分析缓存
///
[SugarColumn(ColumnName = "ChatAnalysis", ColumnDataType = "longtext", IsNullable = true)]
- public string _ChatAnalysis { get; set; } = "[]";
+ public string _ChatAnalysis { get; set; } = "{}";
///
/// Chat模型分析缓存
///
[SugarColumn(IsIgnore = true)]
public CallGPTRes? ChatAnalysis
{
- get => JsonSerializer.Deserialize(_ChatAnalysis ?? "[]");
+ get => JsonSerializer.Deserialize(_ChatAnalysis ?? "{}");
set => _ChatAnalysis = JsonSerializer.Serialize(value);
}