实现 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(失败数) ### 四态覆盖 注册路由, 完成后提交。