64 lines
2.0 KiB
Markdown
64 lines
2.0 KiB
Markdown
实现 Cron 管理增强(P0-4b)。后端 API + 前端页面。
|
|
|
|
## 后端: Cron API
|
|
|
|
创建 backend/app/api/cron.py,全部 require_auth
|
|
|
|
### 1. GET /api/v1/cron/jobs
|
|
跨 Profile Cron 聚合列表,支持 ?status=active|paused&profile=all|xxx|system
|
|
- 每行: job_name, profile, schedule, status, last_run(time+✅/❌), success_rate, has_logs
|
|
- 数据来源: hermes CLI `hermes cron list --all` + 系统 Cron 硬编码清单
|
|
- 系统 Cron 示例: Hindsight(0 21 * * *), 健康巡检(*/30 * * * *), Skill检查(0 2 * * *), Memory归档(0 3 * * 0)
|
|
- 系统 Cron 行有 [system] 标记
|
|
- Cron 连续失败≥2次 → 行标红
|
|
- 当日有失败时返回 has_failures: true
|
|
|
|
### 2. GET /api/v1/cron/jobs/{id}/logs
|
|
返回最近 8 条运行日志:
|
|
```json
|
|
{"logs": [{"time": "", "status": "success|failure", "message": "..."}]}
|
|
```
|
|
数据来源: hermes CLI + 日志文件。暂用占位数据。
|
|
|
|
### 3. POST /api/v1/cron/jobs/{id}/run, /pause, /resume
|
|
操作 Cron (需 operator+):
|
|
- run: 手动触发一次
|
|
- pause: 暂停 Cron
|
|
- resume: 恢复 Cron
|
|
- 操作结果写入审计日志
|
|
|
|
## 前端: Cron 页面
|
|
|
|
修改 frontend/src/pages/CronPage.tsx:
|
|
|
|
### 筛选栏
|
|
- 状态筛选: 全部/活跃/暂停/今日失败
|
|
- Profile 筛选: 全部/各 Profile/仅系统 Cron
|
|
- 前端即时过滤
|
|
|
|
### Cron 列表
|
|
- Table 组件, 30s 轮询
|
|
- 列: Job名, Profile, Cron表达式(等宽字体), 状态 Badge, 上次运行(时间+✅❌), 成功率(<80%标黄), 操作
|
|
- 系统 Cron 灰底 + [system] 标记
|
|
- 连续失败≥2 行标红
|
|
|
|
### 日志面板
|
|
- 每行操作列 "📋 日志" 按钮
|
|
- 点击弹出居中面板(遮罩+Modal)
|
|
- 标题: "{job} — 最近运行日志"
|
|
- 列表(最多8条): 时间戳, 状态✅/❌, 日志消息(INFO/WARN/ERROR 按级别着色)
|
|
- 失败消息红色背景, 包含完整错误详情
|
|
- 关闭: ✕ / 点遮罩 / Esc
|
|
|
|
### 操作按钮
|
|
- 运行(二次确认), 暂停, 恢复
|
|
- Toast 结果反馈
|
|
|
|
### 导航栏 Badge
|
|
- Dashboard 今日 Cron 失败计数同步
|
|
- 导航栏 Cron 项显示红色 Badge(失败数)
|
|
|
|
### 四态覆盖
|
|
|
|
注册路由, 完成后提交。
|