2.0 KiB
2.0 KiB
实现 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 条运行日志:
{"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(失败数)
四态覆盖
注册路由, 完成后提交。