docs: 更新开发日志 — 记录脚本/定时任务真实执行+输出捕获

This commit is contained in:
attacker committed 2026-06-14 22:11:59 +08:00
1 parent a4fd5fc178
commit 2807e4895b
1 file changed
+40
+40
View File
@@ -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拓扑图增加缩放/拖拽交互
- 定时任务创建对话框增加目标服务器选择(当前仅本地执行)
- 脚本编辑器增加在线编辑+保存功能(当前新建对话框无编辑入口)