修改 优化字幕步骤的并发线程为20个

This commit is contained in:
小肥羊 2025-07-11 11:33:31 +08:00
parent eab1d9e653
commit f0b668ae4a
3 changed files with 46 additions and 7 deletions

View File

@ -197,7 +197,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
var totalCount = captionsArr.Length / spanCount + 1; var totalCount = captionsArr.Length / spanCount + 1;
await Parallel.ForAsync(0, totalCount, await Parallel.ForAsync(0, totalCount,
new ParallelOptions() { MaxDegreeOfParallelism = 10 }, new ParallelOptions() { MaxDegreeOfParallelism = 20 },
async (s, c) => async (s, c) =>
{ {
while (true) while (true)
@ -285,6 +285,9 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
$"字幕列表 {captions.Captions} 字幕结束!"; $"字幕列表 {captions.Captions} 字幕结束!";
break; break;
case AttachmentsInfoType.: case AttachmentsInfoType.:
postMessages = postMessages =
$"请通过视频字幕内容分析出视频中课堂的授课阶段。" + $"请通过视频字幕内容分析出视频中课堂的授课阶段。" +
$"课堂内容与{taskInfo.Subject}学科下的{sections}章节相关。" + $"课堂内容与{taskInfo.Subject}学科下的{sections}章节相关。" +
@ -319,7 +322,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
} }
/// <summary> /// <summary>
/// /// 请求AI
/// </summary> /// </summary>
/// <typeparam name="T">返回JSON类型</typeparam> /// <typeparam name="T">返回JSON类型</typeparam>
/// <param name="task">任务id</param> /// <param name="task">任务id</param>

View File

@ -2,6 +2,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using UserCenter.Model.Enum; using UserCenter.Model.Enum;
using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.AICore.GPT.Dto;
using VideoAnalysisCore.Model.Dto;
using VideoAnalysisCore.Model.Enum; using VideoAnalysisCore.Model.Enum;
namespace VideoAnalysisCore.Controllers.Dto namespace VideoAnalysisCore.Controllers.Dto
@ -228,6 +229,10 @@ namespace VideoAnalysisCore.Controllers.Dto
public class TaskKnowBlock public class TaskKnowBlock
{ {
public long Id { get; set; } public long Id { get; set; }
/// <summary>
/// 阶段id
/// </summary>
public long StageId { get; set; }
/// <summary> /// <summary>
/// 开始时间 /// 开始时间
@ -254,6 +259,11 @@ namespace VideoAnalysisCore.Controllers.Dto
/// 知识点列表 /// 知识点列表
/// </summary> /// </summary>
public TaskKnowInfo[] Know { get; set; } public TaskKnowInfo[] Know { get; set; }
/// <summary>
/// 片段内的试题
/// </summary>
public virtual VideoQuestionShowDto[]? QuestionArr { get; set; }
} }
/// <summary> /// <summary>
/// 视频片段知识点结果 /// 视频片段知识点结果
@ -274,7 +284,7 @@ namespace VideoAnalysisCore.Controllers.Dto
/// </summary> /// </summary>
public long VideoTaskId { get; set; } public long VideoTaskId { get; set; }
/// <summary> /// <summary>
/// 视频知识快 /// 视频片段
/// </summary> /// </summary>
public TaskKnowBlock[] KnowBlockArr { get; set; } public TaskKnowBlock[] KnowBlockArr { get; set; }

View File

@ -18,6 +18,7 @@ using Yitter.IdGenerator;
using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.AICore.GPT.Dto;
using VideoAnalysisCore.Model; using VideoAnalysisCore.Model;
using VideoAnalysisCore.Controllers.Dto; using VideoAnalysisCore.Controllers.Dto;
using VideoAnalysisCore.Model.Dto;
namespace VideoAnalysisCore.Controllers namespace VideoAnalysisCore.Controllers
{ {
@ -33,15 +34,20 @@ namespace VideoAnalysisCore.Controllers
private readonly Repository<VideoTask> videoTaskDB; private readonly Repository<VideoTask> videoTaskDB;
private readonly Repository<VideoKonwPoint> videoKonwPointDB; private readonly Repository<VideoKonwPoint> videoKonwPointDB;
private readonly Repository<NodePackageInfo> nodePackageInfoDB; private readonly Repository<NodePackageInfo> nodePackageInfoDB;
public LJZK_Controller( IMapper mp, Repository<NodeSubscription> nodesubscriptionDB, private readonly Repository<VideoQuestion> videoQuestionDB;
private readonly Repository<VideoQuestionKonw> videoQuestionKonwDB;
public LJZK_Controller(IMapper mp, Repository<NodeSubscription> nodesubscriptionDB,
Repository<VideoTask> videoTaskDB = null, Repository<VideoKonwPoint> videoKonwPointDB = null Repository<VideoTask> videoTaskDB = null, Repository<VideoKonwPoint> videoKonwPointDB = null
, Repository<NodePackageInfo> nodePackageInfoDB = null) , Repository<NodePackageInfo> nodePackageInfoDB = null, Repository<VideoQuestion> videoQuestionDB = null, Repository<VideoQuestionKonw> videoQuestionKonwDB = null)
{ {
this.mp = mp; this.mp = mp;
this.nodesubscriptionDB = nodesubscriptionDB; this.nodesubscriptionDB = nodesubscriptionDB;
this.videoTaskDB = videoTaskDB; this.videoTaskDB = videoTaskDB;
this.videoKonwPointDB = videoKonwPointDB; this.videoKonwPointDB = videoKonwPointDB;
this.nodePackageInfoDB = nodePackageInfoDB; this.nodePackageInfoDB = nodePackageInfoDB;
this.videoQuestionDB = videoQuestionDB;
this.videoQuestionKonwDB = videoQuestionKonwDB;
} }
@ -126,6 +132,7 @@ namespace VideoAnalysisCore.Controllers
return Ok(Enum.GetValues(type).Cast<object>() return Ok(Enum.GetValues(type).Cast<object>()
.Select(s => new { Text = s.ToString(), Value = (int)s })); .Select(s => new { Text = s.ToString(), Value = (int)s }));
} }
/// <summary> /// <summary>
/// »ñȡѧ¿ÆÀàÐÍ /// »ñȡѧ¿ÆÀàÐÍ
/// </summary> /// </summary>
@ -161,7 +168,7 @@ namespace VideoAnalysisCore.Controllers
.ToArrayAsync(); .ToArrayAsync();
if (konwArr is null || konwArr.Length == 0) if (konwArr is null || konwArr.Length == 0)
return BadRequest("ÎÞЧÈÎÎñ"); return BadRequest("ÎÞЧÈÎÎñ");
return Ok(new TaskKnowRes() var res = new TaskKnowRes()
{ {
TagId = task.TagId, TagId = task.TagId,
Status = task.LastEnum, Status = task.LastEnum,
@ -173,6 +180,7 @@ namespace VideoAnalysisCore.Controllers
Id = s.First().Id, Id = s.First().Id,
Content = s.First().Content, Content = s.First().Content,
StartTime = s.First().StartTime, StartTime = s.First().StartTime,
StageId = s.First().StageId,
EndTime = s.First().EndTime, EndTime = s.First().EndTime,
Theme = s.First().Theme, Theme = s.First().Theme,
Know = s.Select(x => new TaskKnowInfo() Know = s.Select(x => new TaskKnowInfo()
@ -182,7 +190,25 @@ namespace VideoAnalysisCore.Controllers
KnowPointId = x.KnowPointId KnowPointId = x.KnowPointId
}).ToArray() }).ToArray()
}).ToArray() }).ToArray()
}); };
if (task.VideoType == AttachmentsInfoType.¸´Ï°)
{
var questionArr = await videoQuestionDB
.AsQueryable().Where(s => s.VideoTaskId == task.Id)
.Select<VideoQuestionShowDto>()
.ToArrayAsync();
var konwDic = (await videoQuestionKonwDB
.AsQueryable().Where(s => s.VideoTaskId == task.Id)
.ToArrayAsync()).GroupBy(s => s.VideoQuestionId)
.ToDictionary(s => s.Key);
foreach (var item in questionArr.Where(s => konwDic.ContainsKey(s.Id)))
item.KonwArr = konwDic[item.Id].ToArray();
foreach (var item in res.KnowBlockArr)
item.QuestionArr = questionArr
.Where(s => s.StageId == item.StageId).ToArray();
}
return Ok(res);
} }