mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-09 00:56:37 +08:00
修复任务日志显示问题
This commit is contained in:
@@ -341,7 +341,7 @@ export function TaskExecutionsManager() {
|
|||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label>执行结果</Label>
|
<Label>执行结果</Label>
|
||||||
<div className="min-h-10 rounded-md border bg-muted/30 px-3 py-2 text-sm">
|
<div className="min-h-10 rounded-md border bg-muted/30 px-3 py-2 text-sm whitespace-pre-wrap break-all">
|
||||||
{selectedExecution.result || "-"}
|
{selectedExecution.result || "-"}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -349,7 +349,7 @@ export function TaskExecutionsManager() {
|
|||||||
{selectedExecution.error_message && (
|
{selectedExecution.error_message && (
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label>错误信息</Label>
|
<Label>错误信息</Label>
|
||||||
<div className="rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-sm text-destructive">
|
<div className="rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-sm text-destructive whitespace-pre-wrap break-all">
|
||||||
{selectedExecution.error_message}
|
{selectedExecution.error_message}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -58,9 +58,9 @@ func CreateTaskExecution(ctx context.Context, execution *TaskExecution) error {
|
|||||||
return db.DB(ctx).Create(execution).Error
|
return db.DB(ctx).Create(execution).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateTaskExecution 更新任务执行记录
|
// UpdateTaskExecution 更新任务执行记录,忽略 log 字段以防覆写正在追加的日志
|
||||||
func UpdateTaskExecution(ctx context.Context, execution *TaskExecution) error {
|
func UpdateTaskExecution(ctx context.Context, execution *TaskExecution) error {
|
||||||
return db.DB(ctx).Save(execution).Error
|
return db.DB(ctx).Omit("log").Save(execution).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTaskExecutionByTaskID 根据 TaskID 获取执行记录
|
// GetTaskExecutionByTaskID 根据 TaskID 获取执行记录
|
||||||
|
|||||||
@@ -188,6 +188,41 @@ func TestUpdateTaskExecutionFailed(t *testing.T) {
|
|||||||
assert.Equal(t, int64(200), found.Duration)
|
assert.Equal(t, int64(200), found.Duration)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUpdateTaskExecutionDoesNotOverwriteLog(t *testing.T) {
|
||||||
|
cleanup := setupTaskExecutionTestEnvironment(t)
|
||||||
|
defer cleanup()
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
execution := &TaskExecution{
|
||||||
|
TaskID: "test_omit_log_001",
|
||||||
|
TaskType: "upload:cleanup_unused",
|
||||||
|
TaskName: "清理未使用上传",
|
||||||
|
Status: TaskExecutionStatusPending,
|
||||||
|
TriggeredBy: "manual",
|
||||||
|
}
|
||||||
|
err := CreateTaskExecution(ctx, execution)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// In a real execution, logs are appended to the DB asynchronously via AppendTaskExecutionLog
|
||||||
|
err = AppendTaskExecutionLog(ctx, "test_omit_log_001", "第一条执行日志")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// The local struct still has empty Log because it was not reloaded
|
||||||
|
assert.Empty(t, execution.Log)
|
||||||
|
|
||||||
|
// Now complete/update the execution (e.g. status, duration)
|
||||||
|
execution.Status = TaskExecutionStatusSucceeded
|
||||||
|
execution.Duration = 100
|
||||||
|
err = UpdateTaskExecution(ctx, execution)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Get the updated execution record and check that the Log was NOT overwritten/wiped
|
||||||
|
found, err := GetTaskExecutionByTaskID(ctx, "test_omit_log_001")
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, TaskExecutionStatusSucceeded, found.Status)
|
||||||
|
assert.Contains(t, found.Log, "第一条执行日志")
|
||||||
|
}
|
||||||
|
|
||||||
func TestAppendTaskExecutionLog(t *testing.T) {
|
func TestAppendTaskExecutionLog(t *testing.T) {
|
||||||
cleanup := setupTaskExecutionTestEnvironment(t)
|
cleanup := setupTaskExecutionTestEnvironment(t)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|||||||
Reference in New Issue
Block a user