添加 日志展示模块

This commit is contained in:
小肥羊 2025-11-10 15:56:05 +08:00
parent 42becf154a
commit 844e122d2b
2 changed files with 59 additions and 4 deletions

View File

@ -151,6 +151,7 @@ function firstLetterToLower(str) {
async function RloadTaskInfo(row: any) {
let res = await RowRload(row.id);
row.TaskInfo = res;
row.TaskInfo.logs = row.TaskInfo.logs.reverse();
row.TaskInfo.stepData = JSON.parse(JSON.stringify(stepData.value));
row.TaskInfo.active = row.TaskInfo.stepData.findIndex(
(s) => s.title == row.TaskInfo.lastEnum
@ -162,8 +163,8 @@ async function RloadTaskInfo(row: any) {
);
let i = row.TaskInfo.stepData.indexOf(element);
if (i < row.TaskInfo.active) {
element.status = "finish";
} else if (element.value == 60) {
element.status = "success";
} else if (row.TaskInfo.active == 6 && element.value == 60) {
element.status = "success";
} else if (i == row.TaskInfo.active) {
element.status = "process";
@ -265,6 +266,23 @@ const stepData = ref<StepData[]>([
/>
</el-steps>
</div>
<div class="grid_item_full_width" v-if="props.row.TaskInfo != null">
<span>日志</span>
<div class="content">
<el-timeline
style="max-height: 200px; padding-top: 2px; overflow-y: scroll"
>
<el-timeline-item
v-for="(activity, index) in props.row.TaskInfo.logs"
:key="index"
:timestamp="activity.createTime"
>
{{ activity.message }}
</el-timeline-item>
</el-timeline>
</div>
</div>
</div>
</div>
</template>

View File

@ -33,12 +33,14 @@ namespace VideoAnalysisCore.Controllers
readonly Repository<VideoQuestion> videoQuestionDB;
readonly Repository<VideoKonwPoint> videoKonwPointDB;
readonly Repository<VideoQuestionKonw> videoQuestionKonwDB;
readonly Repository<TaskLog> taskLogDB;
readonly RedisManager redisManager;
public readonly SenseVoice senseVoice;
private readonly IMapper mp;
public VideoTaskController(Repository<VideoTask> baseService, RedisManager redisManager,
Repository<VideoQuestion> videoQuestionDB,
Repository<VideoQuestionKonw> videoQuestionKonwDB, Repository<VideoKonwPoint> videoKonwPointDB, SenseVoice senseVoice, IMapper mp) : base(baseService)
Repository<VideoQuestionKonw> videoQuestionKonwDB, Repository<VideoKonwPoint> videoKonwPointDB, SenseVoice senseVoice, IMapper mp, Repository<TaskLog> taskLogDB) : base(baseService)
{
this.baseService = baseService;
this.redisManager = redisManager;
@ -47,8 +49,9 @@ namespace VideoAnalysisCore.Controllers
this.videoKonwPointDB = videoKonwPointDB;
this.senseVoice = senseVoice;
this.mp = mp;
this.taskLogDB = taskLogDB;
}
@ -289,6 +292,17 @@ namespace VideoAnalysisCore.Controllers
return BadRequest("无效id");
var d = await redisManager.Redis.HMGetAsync<string>(RedisExpandKey.Task(id),
"Progress", "LastEnum", "StartTime", "ErrorMessage");
var logArr = await taskLogDB.AsQueryable()
.Where(s => s.VideoTaskId == id)
.ToArrayAsync();
var insertData = (await redisManager.Redis
.LRangeAsync<TaskLog>(RedisExpandKey.TaskLog, 0, 99))
.Where(s => s.VideoTaskId == id);
logArr = logArr.Concat(insertData).ToArray();
return Ok(new
{
Progress = d[0],
@ -297,6 +311,7 @@ namespace VideoAnalysisCore.Controllers
? JsonSerializer.Deserialize<Dictionary<RedisChannelEnum, DateTime>>(d[2])
: null,
ErrorMessage = d[3],
Logs = logArr,
});
}
@ -412,6 +427,28 @@ namespace VideoAnalysisCore.Controllers
var data = await sqlquery.ToPageListAsync(model.PageIndex + 1, model.PageSize, total);
return new PageResult<VideoTask>() { Data = data, Total = total };
}
/// <summary>
/// 任务日志
/// </summary>
/// <param name="id">查询模型</param>
/// <returns></returns>
[HttpGet]
public async Task<IEnumerable<TaskLog>> TaskLog(long id )
{
var logArr = await taskLogDB.AsQueryable()
.Where(s => s.VideoTaskId == id)
.ToArrayAsync();
var insertData = (await redisManager.Redis
.LRangeAsync<TaskLog>(RedisExpandKey.TaskLog, 0, 99))
.Where(s=>s.VideoTaskId == id);
return logArr.Concat(insertData);
}
}
}