diff --git a/internal/services/tasks/task_log_service.go b/internal/services/tasks/task_log_service.go
index 8a7293a..ee8a22f 100644
--- a/internal/services/tasks/task_log_service.go
+++ b/internal/services/tasks/task_log_service.go
@@ -48,6 +48,10 @@ func (s *TaskLogService) CreateEmptyLog(taskID string, command string) (*models.
if err := database.DB.Create(taskLog).Error; err != nil {
return nil, err
}
+
+ // 任务开始时即更新任务的 last_run 为启动时间
+ database.DB.Model(&models.Task{}).Where("id = ?", taskID).Update("last_run", startTime)
+
return taskLog, nil
}
@@ -69,7 +73,12 @@ func (s *TaskLogService) SaveTaskLog(taskLog *models.TaskLog) error {
}
// 更新任务的 last_run
- database.DB.Model(&models.Task{}).Where("id = ?", taskLog.TaskID).Update("last_run", models.Now())
+ // 更新任务的 last_run,优先使用日志记录的启动时间
+ lastRun := models.Now()
+ if taskLog.StartTime != nil {
+ lastRun = *taskLog.StartTime
+ }
+ database.DB.Model(&models.Task{}).Where("id = ?", taskLog.TaskID).Update("last_run", lastRun)
return nil
}
diff --git a/web/src/layouts/MainLayout.vue b/web/src/layouts/MainLayout.vue
index c3bdfce..d7ee333 100644
--- a/web/src/layouts/MainLayout.vue
+++ b/web/src/layouts/MainLayout.vue
@@ -160,7 +160,7 @@ onMounted(() => {
-
+
{{ sentence }}
{{ sentenceContent }}
@@ -201,4 +201,16 @@ onMounted(() => {
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.1);
}
+
+.poem-sentence {
+ transition: opacity 0.3s ease;
+}
+
+@media (max-width: 639px) {
+ .poem-sentence {
+ font-weight: 400 !important;
+ opacity: 0.7 !important;
+ letter-spacing: 0.01em;
+ }
+}
diff --git a/web/src/views/tasks/TaskDialog.vue b/web/src/views/tasks/TaskDialog.vue
index 375a53d..58aeb86 100644
--- a/web/src/views/tasks/TaskDialog.vue
+++ b/web/src/views/tasks/TaskDialog.vue
@@ -9,7 +9,8 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
import { ScrollArea } from '@/components/ui/scroll-area'
import DirTreeSelect from '@/components/DirTreeSelect.vue'
-import { Plus, ChevronDown, X, Search, Check, ChevronsUpDown, AlertCircle, Terminal, Zap, Loader2 } from 'lucide-vue-next'
+import { Plus, ChevronDown, X, Search, Check, ChevronsUpDown, AlertCircle, Terminal, Zap, Loader2, Lock, Variable } from 'lucide-vue-next'
+import { Badge } from '@/components/ui/badge'
import { cn } from '@/lib/utils'
import { api, type Task, type EnvVar, type Agent, type MiseLanguage } from '@/api'
import { PATHS, TRIGGER_TYPE } from '@/constants'
@@ -570,8 +571,53 @@ async function save() {
-
- {{ env.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ env.name }}
+
+
+ 机密
+
+
+
+
+
+ {{ env.remark || "暂无备注" }}
+
+
+
+
+