From f0b668ae4a4335f96aedd059e1e2728a96387810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Fri, 11 Jul 2025 11:33:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AD=97=E5=B9=95=E6=AD=A5=E9=AA=A4=E7=9A=84=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E4=B8=BA20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AICore/GPT/DeepSeek/DeepSeek_GPT.cs | 7 ++-- VideoAnalysisCore/Controllers/Dto/ApiDto.cs | 12 ++++++- .../Controllers/LJZK_Controller.cs | 34 ++++++++++++++++--- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs b/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs index 2146eb0..79d0750 100644 --- a/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs +++ b/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs @@ -197,7 +197,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek var totalCount = captionsArr.Length / spanCount + 1; await Parallel.ForAsync(0, totalCount, - new ParallelOptions() { MaxDegreeOfParallelism = 10 }, + new ParallelOptions() { MaxDegreeOfParallelism = 20 }, async (s, c) => { while (true) @@ -285,6 +285,9 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek $"字幕列表 {captions.Captions} 字幕结束!"; break; case AttachmentsInfoType.复习: + + + postMessages = $"请通过视频字幕内容分析出视频中课堂的授课阶段。" + $"课堂内容与{taskInfo.Subject}学科下的{sections}章节相关。" + @@ -319,7 +322,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek } /// - /// + /// 请求AI /// /// 返回JSON类型 /// 任务id diff --git a/VideoAnalysisCore/Controllers/Dto/ApiDto.cs b/VideoAnalysisCore/Controllers/Dto/ApiDto.cs index 708d0bf..6cddf5e 100644 --- a/VideoAnalysisCore/Controllers/Dto/ApiDto.cs +++ b/VideoAnalysisCore/Controllers/Dto/ApiDto.cs @@ -2,6 +2,7 @@ using System.ComponentModel.DataAnnotations; using UserCenter.Model.Enum; using VideoAnalysisCore.AICore.GPT.Dto; +using VideoAnalysisCore.Model.Dto; using VideoAnalysisCore.Model.Enum; namespace VideoAnalysisCore.Controllers.Dto @@ -228,6 +229,10 @@ namespace VideoAnalysisCore.Controllers.Dto public class TaskKnowBlock { public long Id { get; set; } + /// + /// 阶段id + /// + public long StageId { get; set; } /// /// 开始时间 @@ -254,6 +259,11 @@ namespace VideoAnalysisCore.Controllers.Dto /// 知识点列表 /// public TaskKnowInfo[] Know { get; set; } + + /// + /// 片段内的试题 + /// + public virtual VideoQuestionShowDto[]? QuestionArr { get; set; } } /// /// 视频片段知识点结果 @@ -274,7 +284,7 @@ namespace VideoAnalysisCore.Controllers.Dto /// public long VideoTaskId { get; set; } /// - /// 视频知识快 + /// 视频片段 /// public TaskKnowBlock[] KnowBlockArr { get; set; } diff --git a/VideoAnalysisCore/Controllers/LJZK_Controller.cs b/VideoAnalysisCore/Controllers/LJZK_Controller.cs index a23dbe8..6f98939 100644 --- a/VideoAnalysisCore/Controllers/LJZK_Controller.cs +++ b/VideoAnalysisCore/Controllers/LJZK_Controller.cs @@ -18,6 +18,7 @@ using Yitter.IdGenerator; using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.Model; using VideoAnalysisCore.Controllers.Dto; +using VideoAnalysisCore.Model.Dto; namespace VideoAnalysisCore.Controllers { @@ -33,15 +34,20 @@ namespace VideoAnalysisCore.Controllers private readonly Repository videoTaskDB; private readonly Repository videoKonwPointDB; private readonly Repository nodePackageInfoDB; - public LJZK_Controller( IMapper mp, Repository nodesubscriptionDB, + private readonly Repository videoQuestionDB; + private readonly Repository videoQuestionKonwDB; + + public LJZK_Controller(IMapper mp, Repository nodesubscriptionDB, Repository videoTaskDB = null, Repository videoKonwPointDB = null - , Repository nodePackageInfoDB = null) + , Repository nodePackageInfoDB = null, Repository videoQuestionDB = null, Repository videoQuestionKonwDB = null) { this.mp = mp; this.nodesubscriptionDB = nodesubscriptionDB; this.videoTaskDB = videoTaskDB; this.videoKonwPointDB = videoKonwPointDB; this.nodePackageInfoDB = nodePackageInfoDB; + this.videoQuestionDB = videoQuestionDB; + this.videoQuestionKonwDB = videoQuestionKonwDB; } @@ -126,6 +132,7 @@ namespace VideoAnalysisCore.Controllers return Ok(Enum.GetValues(type).Cast() .Select(s => new { Text = s.ToString(), Value = (int)s })); } + /// /// ȡѧ /// @@ -161,7 +168,7 @@ namespace VideoAnalysisCore.Controllers .ToArrayAsync(); if (konwArr is null || konwArr.Length == 0) return BadRequest("Ч"); - return Ok(new TaskKnowRes() + var res = new TaskKnowRes() { TagId = task.TagId, Status = task.LastEnum, @@ -173,6 +180,7 @@ namespace VideoAnalysisCore.Controllers Id = s.First().Id, Content = s.First().Content, StartTime = s.First().StartTime, + StageId = s.First().StageId, EndTime = s.First().EndTime, Theme = s.First().Theme, Know = s.Select(x => new TaskKnowInfo() @@ -182,7 +190,25 @@ namespace VideoAnalysisCore.Controllers KnowPointId = x.KnowPointId }).ToArray() }).ToArray() - }); + }; + if (task.VideoType == AttachmentsInfoType.ϰ) + { + var questionArr = await videoQuestionDB + .AsQueryable().Where(s => s.VideoTaskId == task.Id) + .Select() + .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); }