{"repo":"BruceDone/clock","free":true,"listed":false,"github":"https://github.com/BruceDone/clock","clone":"git clone https://github.com/BruceDone/clock.git","description":"可视化任务调度系统，精简到一个二进制文件 (Web visual task scheduler system , yes ! just one binary solve all the problems !)","language":"Vue","stars":195,"topics":["visual","scheduler","web-scheduler","dag-scheduling","webscraping","taskflow","web","task","gocron"],"license":null,"category":"workflow-automation","readme_excerpt":"Clock - 任务调度平台 基于 Go cron 的可视化调度框架，支持 DAG 任务依赖关系和 Bash 命令执行。前后端通过 go:embed 打包成单个二进制文件，轻松部署。 功能特性 - DAG 任务依赖管理 - 可视化编辑任务之间的依赖关系，支持拓扑排序执行 - 定时调度 - 基于 cron 表达式的定时任务调度 - 任务取消 - 支持取消单个任务或整个调度批次，正在执行的命令会被终止 - 阻塞运行 - 容器级别配置，上次调度未完成时自动跳过本次，防止任务堆积 - 实时状态监控 - SSE (Server-Sent Events) 实时推送任务执行状态 - 日志管理 - 实时日志流式查看，历史日志持久化查询 - 系统监控 - 内存、CPU、系统负载实时监控 - 多主题支持 - 清新明亮、柔和暗色、绿色荧光、Linear 风格多种主题切换 - JWT 认证 - 安全的身份验证机制 - 单文件部署 - 前后端打包成一个二进制文件 技术栈 后端 - Go 1.21+ - Echo - 高性能 Web 框架 - GORM - ORM 数据库访问 - robfig/cron - 定时调度器 - go:embed - 静态文件打包 前端 - Vue 3 + TypeScript - Element Plus - UI 组件库 - AntV G6 - DAG 图可视化 - ECharts - 图表展示 - Pinia - 状态管理 - Vue Router - 路由管理 项目结构 快速开始 1. 前端开发 2. 后端运行 3. 访问系统 打开浏览器访问 http://127.0.0.1:9528 默认用户名： admin 默认密码： admin 界面预览 首页仪表盘 实时监控界面，展示系统运行状态、任务统计、资源使用情况。 登录页面 支持用户名密码登录，安全可靠。 容器管理 管理任务容器和定时调度，配置 cron 表达式、阻塞运行模式。 任务管理 管理具体任务，配置执行命令、超时时间、日志选项。 实时状态 SSE 实时监控任务执行状态，支持取消单个任务或整个批次。 日志中心 查询历史执行日志，按容器、任务、时间范围筛选。 核心架构 DAG 执行原理 使用 Kahn 算法实现拓扑排序： 1. 计算所有任务的入度 2. 选择入度为 0 的任务并行执行 3. 任务完成后减少其依赖任务的入度 4. 重复直到所有任务完成 任务取消机制 支持两种级别的取消操作： - 取消单个任务 - 终止指定任务的执行进程 - 取消整个批次 - 终止该 RunID 下所有正在执行的任务，并阻止后续任务启动 阻塞运行模式 容器级别的并发控制： - 启用阻塞 - 同一容器在上次调度未完成时，跳过本次调度，防止任务堆积 - 关闭阻塞 - 允许多个调度批次并发执行 SSE 实时推送 JWT 认证 Token 支持三种传递方式： 1. Header: Authorization: Bearer 2. Cookie 3. Query: ?token= 配置文件 数据库支持 支持 SQLite、MySQL、PostgreSQL，通过配置文件切换。 License MIT","default_branch":null,"files":null,"tree":[],"storefront":"/r/BruceDone","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/BruceDone/clock/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}