From 2807e4895b25ab2b655ecc6bf0c6a9feab940684 Mon Sep 17 00:00:00 2001 From: attacker Date: Sun, 14 Jun 2026 22:11:59 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=97=A5=E5=BF=97=20=E2=80=94=20=E8=AE=B0=E5=BD=95=E8=84=9A?= =?UTF-8?q?=E6=9C=AC/=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E6=89=A7=E8=A1=8C+=E8=BE=93=E5=87=BA=E6=8D=95?= =?UTF-8?q?=E8=8E=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev-log.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/dev-log.md b/docs/dev-log.md index 7b725a8..e18e0fc 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -421,3 +421,43 @@ cd ~/devops/aiops - 脚本执行/定时任务执行增加真实执行日志反馈 - 拓扑图增加缩放/拖拽交互 - AnsibleManager 仍使用 mock 数据 + +## 2026-06-14 22:15 自动推进 + +- **任务**: 脚本/定时任务真实执行+输出捕获+执行历史 — 替换"pending空壳"为本地执行,采集stdout/stderr/退出码/耗时,更新任务统计;修复CronJobManager/Automation前后端字段名不匹配 +- **修改**: + - `backend/internal/api/handlers/automation.go`: + - 新增 `runLocal(scriptType, content, timeoutSec)` 辅助函数: 在 AIOps 主机上本地执行脚本(shell→bash -c/python→python3 -c),用 context.WithTimeout 超时控制,采集合并 stdout+stderr 输出,返回输出/退出码/耗时 + - 重写 `ExecuteCronJob`: 加载任务内容(command直接执行/script类型加载关联Script内容)→创建running状态执行记录→本地执行→更新status/output/duration/finished_at→更新CronJob统计(last_run_at/last_status/run_count/success_count/fail_count) + - 重写 `ExecuteScript`: 请求体改为可选(无body时本地执行)→创建running记录→本地执行→更新记录+Script.run_count + - 新增 `ListExecutions` handler: 支持task_type/task_id筛选,按created_at DESC排序分页 + - `backend/internal/api/routes/routes.go`: 新增 `GET /task-executions` 路由 + - `frontend/src/services/api.ts`: 新增 `taskExecutionApi.getExecutions()` API + - `frontend/src/components/automation/CronJobManager.tsx` (重写): + - 修复字段名: status→enabled, cron→cron_expr, command→content, last_run→last_run_at + - 创建对话框发送正确字段(cron_expr/type/content) + - 执行按钮: loading状态(Loader2旋转)+toast成功/失败反馈(含耗时/输出摘要) + - 执行历史对话框: 调用taskExecutionApi加载真实执行记录,可展开查看完整输出日志(终端风格) + - 统计卡片: 已启用/累计成功/累计失败基于真实数据 + - `frontend/src/components/automation/Automation.tsx`: + - 修复字段名: job.status===1→job.enabled, job.cron→job.cron_expr, job.last_run→job.last_run_at, script.language→script.type + - getJobStatusBadge 接收布尔enabled参数 + - getLanguageBadge 增加 shell/yaml 类型支持,默认shell + - 脚本执行/cron执行增加toast反馈 +- **结果**: + - 后端 `go build ./...` 编译通过 ✅ + - 前端 `npx tsc --noEmit` + `npm run build` 通过 ✅ + - API验证: POST /scripts/2/execute → status=success, duration=4ms, output=真实df -h磁盘信息 ✅ + - API验证: POST /cron-jobs/2/execute → status=success, duration=80ms, output=find命令输出 ✅ + - API验证: GET /task-executions → 返回2条执行记录按时间倒序 ✅ + - 浏览器验证: 定时任务页5个任务正确显示enabled/cron_expr/last_run_at/统计 ✅ + - 浏览器验证: 执行历史弹窗显示真实记录(任务名/状态/耗时/时间),点击展开查看完整输出日志 ✅ + - 浏览器验证: 脚本库页type徽章正确显示SHELL/PYTHON(原空白) ✅ + - 浏览器验证: 执行脚本后toast"执行成功,耗时Xms" ✅ + - git push origin master 成功 (commit a4fd5fc) ✅ +- **下一步建议**: + - CabinetView/ResourceModelManager 仍使用 mock 数据 + - AnsibleManager 仍使用 mock 数据 + - K8s拓扑图增加缩放/拖拽交互 + - 定时任务创建对话框增加目标服务器选择(当前仅本地执行) + - 脚本编辑器增加在线编辑+保存功能(当前新建对话框无编辑入口)