Compare commits

..

No commits in common. "a2c9831a0ab7dbf6cbb4cfd2bfe1d03be8c3d24e" and "935c6a9eb167789e5fb7b6263a1a9f71b00a7ce7" have entirely different histories.

7 changed files with 38 additions and 91 deletions

View File

@ -5,7 +5,7 @@
@using SqlSugar
@using VideoAnalysisCore.Model
<Table @ref="_table" Loading="tableLoading" TItem="CourseGradingCriteria" ScrollY="600px" PageSize="15" Total="_total" DataSource="_dataSource" @bind-SelectedRows="_selectedRows" OnChange="OnChange">
<Table @ref="_table" Loading="tableLoading" TItem="CourseGradingCriteria" PageSize="15" Total="_total" DataSource="_dataSource" @bind-SelectedRows="_selectedRows" OnChange="OnChange">
<TitleTemplate>
<Flex Justify="end" Gap="10">
<Button Type="primary" @onclick="()=> StartEdit(default)">新增</Button>

View File

@ -2,13 +2,12 @@
@using AntDesign
@using AntDesign.TableModels
@using System.ComponentModel.DataAnnotations
@using Learn.VideoAnalysis.Controllers.Dto
@using SqlSugar
@using VideoAnalysisCore.Model
@using VideoAnalysisCore.Model.Dto
@using VideoAnalysisCore.Enum
<Table @ref="_table" Loading="tableLoading" TItem="VideoTaskDto" ScrollY="600px" PageSize="10" Total="_total" DataSource="_dataSource" @bind-SelectedRows="_selectedRows" OnChange="OnChange"
<Table @ref="_table" Loading="tableLoading" TItem="VideoTaskDto" PageSize="15" Total="_total" DataSource="_dataSource" @bind-SelectedRows="_selectedRows" OnChange="OnChange"
OnExpand="OnExpand">
<TitleTemplate>
<Flex Justify="end" Gap="10">
@ -17,16 +16,16 @@
</TitleTemplate>
<ColumnDefinitions Context="row">
<Selection />
<PropertyColumn Property="c=>c.Id" Width="130px" Filterable="true" Sortable="true" />
<PropertyColumn Property="c=>c.TagId" Width="160px" />
<PropertyColumn Property="c=>c.LastEnum" Width="150px" />
<PropertyColumn Property="c=>c.ApiToken" Width="150px" />
<PropertyColumn Property="c=>c.ComeFrom" Width="100px" />
<PropertyColumn Property="c=>c.MediaUrl" Width="320px" />
<PropertyColumn Property="c=>c.TotalTokens" Width="100px" />
<PropertyColumn Property="c=>c.Id" Width="100" Filterable="true" Sortable="true"/>
<PropertyColumn Property="c=>c.TagId" Width="100" />
<PropertyColumn Property="c=>c.LastEnum" Width="120" />
<PropertyColumn Property="c=>c.ApiToken" Width="120" />
<PropertyColumn Property="c=>c.ComeFrom" Width="120" />
<PropertyColumn Property="c=>c.MediaUrl" Width="300" />
<PropertyColumn Property="c=>c.TotalTokens" Width="100" />
<PropertyColumn Property="c=>c.CreateTime" />
</ColumnDefinitions>
<ExpandTemplate Context="rowData">
<ExpandTemplate Context="rowData" >
<Descriptions Title="任务详情" Bordered>
<DescriptionsItem Title="@rowData.Data.LastEnum.ToString()">
@ -39,7 +38,7 @@
OnClick="()=>RowRestart(rowData)">
刷新数据
</Button>
<Button Type="@ButtonType.Primary" Danger @onclick="() => ReStartClick(rowData.Data)">
<Button Type="@ButtonType.Primary" Danger @onclick="() => ReStart(rowData.Data)">
重试
</Button>
</DescriptionsItem>
@ -47,26 +46,26 @@
<DescriptionsItem Title="任务时间轴" Span="5">
<Steps Current="@RowSTIndex(rowData)" Status="@RowSTStatus(rowData)">
<Step Title="下载文件"
Description="@RowST(rowData,RedisChannelEnum.DownloadFile)" />
Description="@RowST(rowData,RedisChannelEnum.DownloadFile)" />
<Step Title="分离音频"
Description="@RowST(rowData,RedisChannelEnum.SeparateAudio)" />
Description="@RowST(rowData,RedisChannelEnum.SeparateAudio)" />
<Step Title="解析字幕"
Description="@RowST(rowData,RedisChannelEnum.ParsingCaptions)" />
Description="@RowST(rowData,RedisChannelEnum.ParsingCaptions)" />
<Step Title="解析说话人"
Description="@RowST(rowData,RedisChannelEnum.ParsingSpeaker)" />
Description="@RowST(rowData,RedisChannelEnum.ParsingSpeaker)" />
<Step Title="Chat模型分析"
Description="@RowST(rowData,RedisChannelEnum.ChatModelAnalysis)" />
Description="@RowST(rowData,RedisChannelEnum.ChatModelAnalysis)" />
<Step Title="结束任务"
Description="@RowST(rowData,RedisChannelEnum.EndTask)" />
Description="@RowST(rowData,RedisChannelEnum.EndTask)" />
</Steps>
</DescriptionsItem>
@if (!string.IsNullOrEmpty(@rowData.Data.ErrorMessage))
@if (!string.IsNullOrEmpty( @rowData.Data.ErrorMessage))
{
<DescriptionsItem Title="任务异常" Span="3">
@rowData.Data.ErrorMessage
@ -74,25 +73,6 @@
}
</Descriptions>
</ExpandTemplate>
</Table>
<Modal Title="重试任务"
Width="400"
OnOk="ReStart"
@bind-Visible="@modalShow">
<Title Level="3">ID : @reStartTask.Id</Title>
<p></p>
<p>将从哪个步骤重试?</p>
<Select Style="width:220px;"
DataSource="SelectDataSource"
LabelName="@nameof(TextValue.Text)"
ValueName="@nameof(TextValue.Value)"
@bind-Value="@selectEnum">
</Select>
<br />
<br />
</Modal>

View File

@ -1,7 +1,6 @@
using AntDesign;
using AntDesign.TableModels;
using FFmpeg.NET.Services;
using Learn.VideoAnalysis.Controllers.Dto;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.DataProtection.KeyManagement;
@ -29,41 +28,19 @@ namespace Learn.VideoAnalysis.Components.Pages
List<VideoTaskDto> _dataSource = null;
RefAsync<int> _total = 0;
bool modalShow = false;
bool tableLoading = false;
private VideoTaskDto selectData;
private bool rowRestartLoading = false;
private VideoTaskDto reStartTask ;
private bool rowRestartLoading=false;
TextValue[] SelectDataSource = Enum.GetValues(typeof(RedisChannelEnum))
.Cast<RedisChannelEnum>()
.Select(s => new TextValue(s.ToString(), (int)s))
.ToArray();
int selectEnum = 1;
int selectDefaultValue =1;
/// <summary>
/// 点击重试
/// </summary>
/// <param name="query"></param>
async void ReStartClick(VideoTaskDto query)
{
selectDefaultValue =
(await RedisExpand.Redis.HMGetAsync<int>(RedisExpandKey.Task(query.Id), "LastEnum")).FirstOrDefault();
selectEnum = selectDefaultValue;
reStartTask = query;
modalShow = true;
}
/// <summary>
/// 重试
/// </summary>
/// <param name="query"></param>
async void ReStart()
async void ReStart(VideoTaskDto query)
{
await RedisExpand.SetTaskErrorMessage(reStartTask.Id, null);
RedisExpand.InsertChannel((RedisChannelEnum)selectEnum, reStartTask.Id);
modalShow = false;
var lastEnum = (await RedisExpand.Redis.HMGetAsync<RedisChannelEnum>(RedisExpandKey.Task(query.Id), "LastEnum")).FirstOrDefault() ;
await RedisExpand.SetTaskErrorMessage(query.Id, null);
RedisExpand.InsertChannel(lastEnum, query.Id);
}
private QueryModel<VideoTaskDto> lastQuery = null;
/// <summary>
@ -74,7 +51,7 @@ namespace Learn.VideoAnalysis.Components.Pages
async void ShowErrorTask(MouseEventArgs e)
{
_dataSource = await taskDB.AsQueryable()
.Where(s => s.ErrorMessage != null && s.ErrorMessage != string.Empty)
.Where(s=>s.ErrorMessage != null &&s.ErrorMessage!=string.Empty)
.Select<VideoTaskDto>()
.ToListAsync();
_total = _dataSource.Count();
@ -89,7 +66,7 @@ namespace Learn.VideoAnalysis.Components.Pages
/// <param name="changed"></param>
async void OnChange(QueryModel<VideoTaskDto> query)
{
lastQuery = query;
lastQuery= query;
tableLoading = true;
List<IConditionalModel> where = default!;
if (query.FilterModel != null && ((query.FilterModel?.Count() ?? 0) > 0))
@ -99,14 +76,13 @@ namespace Learn.VideoAnalysis.Components.Pages
_dataSource = await taskDB.AsQueryable()
.Where(where)
.Select<VideoTaskDto>()
.OrderByDescending(s => s.Id)
.ToPageListAsync(query.PageIndex - 1, query.PageSize, _total);
tableLoading = false;
StateHasChanged();
}
public void RowRestart(RowData<VideoTaskDto> rowData)
public void RowRestart(RowData<VideoTaskDto> rowData)
{
rowRestartLoading = true;
var item = rowData.Data;
@ -125,7 +101,7 @@ namespace Learn.VideoAnalysis.Components.Pages
///
/// </summary>
/// <returns></returns>
private string RowST(RowData<VideoTaskDto> rowData, RedisChannelEnum e)
private string RowST(RowData<VideoTaskDto> rowData, RedisChannelEnum e)
{
var dic = rowData.Data.StartTimeDic;
if (dic is null || !dic.ContainsKey(e))
@ -137,20 +113,20 @@ namespace Learn.VideoAnalysis.Components.Pages
var dic = rowData.Data.StartTimeDic;
if (dic is null)
return "wait";
if (!string.IsNullOrEmpty(rowData.Data.ErrorMessage))
if(!string.IsNullOrEmpty(rowData.Data.ErrorMessage))
return "error";
if (dic.ContainsKey(RedisChannelEnum.EndTask))
if(dic.ContainsKey(RedisChannelEnum.EndTask))
return "finish";
return "wait";
}
private int RowSTIndex(RowData<VideoTaskDto> rowData)
private int RowSTIndex(RowData<VideoTaskDto> rowData)
{
var dic = rowData.Data.StartTimeDic;
if (dic is null)
if (dic is null )
return 0;
return (int)dic.LastOrDefault().Key;
}
private void OnExpand(RowData<VideoTaskDto> rowData)
private void OnExpand(RowData<VideoTaskDto> rowData)
{
RowRestart(rowData);
}

View File

@ -157,8 +157,6 @@ namespace Learn.VideoAnalysis.Controllers
{
if (!ModelState.IsValid) return BadRequest(ModelState);
if(await videoTaskDB.IsAnyAsync(s=>s.TagId == req.TagId) )
return BadRequest("重复添加");
// 自动映射属性到哈希
var task = new VideoTask()
{

View File

@ -49,8 +49,7 @@ namespace Learn.VideoAnalysis.Controllers.Dto
}
public TextValue(string t,object v)
{
Text = t;
Value = v;
}
public TextValue()
{

View File

@ -183,15 +183,15 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
private async Task<HttpResponseMessage> PostJsonStreamAsync(string path, string json)
{
var client = _httpClientFactory.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ApiKey);
var request = ToHttpRequest(path);
var maxRestart = 4;
var errorMSG = new Exception[maxRestart];
for (int i = 0; i < maxRestart; i++)
{
try
{
var client = _httpClientFactory.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ApiKey);
var request = ToHttpRequest(path);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
return await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
}

View File

@ -283,7 +283,6 @@ namespace VideoAnalysisCore.Common
var tID = long.Parse(taskId);
if (action is not null)
{
var errArr = new Exception[3];
for (int i = 0; i < 3; i++)
{
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-> 开始执行 " + key + " " + taskId);
@ -300,16 +299,11 @@ namespace VideoAnalysisCore.Common
}
catch (Exception ex)
{
errArr[i] = ex;
Console.WriteLine("====================[出现异常]====================");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine("==============================================");
Thread.Sleep(1000);
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-> 稍后后重试." + key + " " + taskId );
await SetTaskErrorMessage(tID, ex);
}
}
await SetTaskErrorMessage(tID, errArr.First());
}
else
{