修复 视频知识点片段名称错误问题

This commit is contained in:
小肥羊 2025-09-24 10:43:37 +08:00
parent a0e00c8b5d
commit 6015245d78
5 changed files with 56 additions and 18 deletions

View File

@ -580,6 +580,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
//校验结果质量
var checkRes = await VerifySpanQuality(questionRes, taskInfo, captions, sections, Course_Id);
if (checkRes != null && checkRes.Score >= 80)
{
//写入知识点

View File

@ -196,7 +196,7 @@ namespace VideoAnalysisCore.Common
//if (gptRes is null)
// throw new Exception("未能读取到GPT处理结果");
//删除任务执行状态
await Redis.HDelAsync(RedisExpandKey.IDTask,task);
await Redis.LRemAsync(RedisExpandKey.IDTask,1,task);
var taskData = await DbScoped.Sugar.Queryable<VideoTask>()
.FirstAsync(s => s.Id == tId);
if (taskData.Captions == "[]")
@ -275,14 +275,42 @@ namespace VideoAnalysisCore.Common
ReceivingTaskAsync();
}
public static bool StopTask { get; set; } = false;
/// <summary>
/// 停止接收新任务
/// </summary>
public static void StopTaskAsync()
{
StopTask = true;
try
{
//取消接收任务监听
Subscribe?.Dispose();
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 开始接收新任务
/// </summary>
public static void RestartTaskAsync()
{
StopTask = false;
NewTaskAsync();
}
/// <summary>
/// 重新执行新任务
/// </summary>
/// <returns></returns>
public static async void NewTaskAsync()
{
await Redis.DelAsync(RedisExpandKey.IDTask);
// 取消 消费机的任务订阅
if (StopTask)
return;
ReceivingTaskAsync();
}
@ -298,7 +326,7 @@ namespace VideoAnalysisCore.Common
}
Task.Run(async () =>
{
var oldTask = await Redis.GetAsync(RedisExpandKey.IDTask);
var oldTask = await Redis.LPopAsync(RedisExpandKey.IDTask);
if (!string.IsNullOrEmpty(oldTask))
{
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-------------> 接收重试任务 " + oldTask);
@ -307,17 +335,21 @@ namespace VideoAnalysisCore.Common
await InsertChannel(lastEnum, oldTask);
return;
}
if (Subscribe?.IsUnsubscribed == false)//排除重试机制后 多次接收任务导致内存泄露
return;
Subscribe = Redis.SubscribeList(RedisExpandKey.ChannelKey, async (taskId) =>
lock (Redis)
{
if (taskId is null) return;
Subscribe?.Dispose();//取消接收任务监听
//存储当前机器的任务
Redis.Set(RedisExpandKey.IDTask, taskId);
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-------------> 接收到任务 " + taskId);
await InsertChannel(RedisChannelEnum., taskId);
});
if (Subscribe?.IsUnsubscribed == false)//排除重试机制后 多次接收任务导致内存泄露
return;
Subscribe = Redis.SubscribeList(RedisExpandKey.ChannelKey, async (taskId) =>
{
if (taskId is null) return;
Subscribe?.Dispose();//取消接收任务监听
//存储当前机器的任务
Redis.LPush(RedisExpandKey.IDTask, taskId);
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-------------> 接收到任务 " + taskId);
await InsertChannel(RedisChannelEnum., taskId);
});
}
});
}
@ -333,6 +365,8 @@ namespace VideoAnalysisCore.Common
var error = string.Empty;
if (ex != null)
{
await Redis.LRemAsync(RedisExpandKey.IDTask, 1, taskID.ToString());
//执行任务时出现异常
error = ex.Message + ex.StackTrace;
Console.WriteLine("====================[出现异常]====================");

View File

@ -193,6 +193,7 @@ namespace VideoAnalysisCore.Controllers
Tag = req.Tag,
TagId = req.TagId,
PPTVideoCode = req.PPTVideoCode,
PPTVideoUrl = req.PPTVideoUrl,
VideoType=req.VideoType
};
//Èë¿â

View File

@ -181,6 +181,7 @@ namespace VideoAnalysisCore.Controllers.Dto
/// 课程对应ppt视频
/// </summary>
public string? PPTVideoCode { get; set; }
public string? PPTVideoUrl { get; set; }
/// <summary>
///回调Api地址
/// </summary>

View File

@ -167,16 +167,17 @@ namespace VideoAnalysisCore.Controllers
/// 获取视频知识点片段<para>taskId/tagId二选一</para>
/// </summary>
/// <param name="tagId">自定义id</param>
/// <param name="taskId">自定义id</param>
/// <returns></returns>
[HttpGet(Name = "TaskKnowInfo")]
public async Task<IActionResult> TaskKnowInfo(string? tagId)
public async Task<IActionResult> TaskKnowInfo(string? tagId , string? taskId)
{
if (string.IsNullOrEmpty(tagId) && !string.IsNullOrEmpty(taskId))
tagId = taskId;
if (string.IsNullOrEmpty(tagId))
return BadRequest();
long taskId = 0;
var taskIdOK = long.TryParse(tagId, out taskId);
var task = await videoTaskDB.AsQueryable()
.Where(s => s.TagId == tagId || s.PPTVideoCode == tagId || (taskIdOK && s.Id == taskId))
.Where(s => s.TagId == tagId || s.PPTVideoCode == tagId)
.FirstAsync();
if (task is null)
return BadRequest("无效任务");
@ -185,7 +186,7 @@ namespace VideoAnalysisCore.Controllers
.Where(s => s.VideoTaskId == task.Id)
.ToArrayAsync();
if (konwArr is null || konwArr.Length == 0)
return BadRequest("ÎÞЧÈÎÎñ");
return BadRequest("无有效任务分段");
var res = new TaskKnowRes()
{
TagId = task.TagId,