# Skedule **Repository Path**: lisniuse/skedule ## Basic Information - **Project Name**: Skedule - **Description**: 基于Golang编写的跨平台可视化定时任务管理系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-05-26 - **Last Updated**: 2025-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 Skedule - 跨平台定时任务管理系统
![Skedule Logo](./project-icon.png) **一个现代化、高效的跨平台定时任务管理解决方案** [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Go Version](https://img.shields.io/badge/go-1.21+-00ADD8.svg)](https://golang.org/) [![Vue Version](https://img.shields.io/badge/vue-3.x-4FC08D.svg)](https://vuejs.org/) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)]() [功能特性](#-功能特性) • [快速开始](#-快速开始) • [命令行操作](#-命令行操作) • [API文档](#-api文档) • [开发指南](#-开发指南)
--- ## 📋 目录 - [项目简介](#-项目简介) - [功能特性](#-功能特性) - [技术栈](#-技术栈) - [快速开始](#-快速开始) - [命令行操作](#-命令行操作) - [Web界面使用](#-web界面使用) - [API文档](#-api文档) - [开发指南](#-开发指南) - [项目结构](#-项目结构) - [常见问题](#-常见问题) - [更新日志](#-更新日志) - [许可证](#-许可证) --- ## 🎯 项目简介 **Skedule** 是一个功能强大、易于使用的跨平台定时任务管理系统。它采用现代化的Web技术栈,提供直观的用户界面和强大的后端服务,支持各种类型的定时任务调度和管理。 ### 🌟 核心优势 - **🔄 单二进制部署**:前后端打包为单个可执行文件,开箱即用 - **🌐 跨平台支持**:支持 Windows、Linux、macOS - **💾 SQLite存储**:轻量级数据库,无需额外配置 - **🎨 现代化界面**:Vue3 + Ant Design Vue 构建的响应式UI - **🔐 安全认证**:JWT令牌 + 密码加密保护 - **📊 实时监控**:任务执行状态、日志实时查看 - **⚡ 高性能**:Go语言后端,处理速度快,资源占用低 --- ## ✨ 功能特性 ### 📅 任务管理 - ✅ **任务创建与编辑**:支持命令、脚本、程序执行 - ✅ **Cron表达式调度**:灵活的时间调度规则 - ✅ **任务分组管理**:按类别组织任务 - ✅ **启用/禁用控制**:快速开关任务 - ✅ **任务复制**:快速创建相似任务 ### 🏃 执行控制 - ✅ **立即执行**:手动触发任务执行 - ✅ **停止运行任务**:安全停止正在执行的任务 - ✅ **执行状态跟踪**:实时显示任务运行状态 - ✅ **并发控制**:限制同时执行的任务数量 - ✅ **重试机制**:任务执行失败自动重试 ### 📝 日志系统 - ✅ **详细执行日志**:完整的输出捕获 - ✅ **执行历史记录**:任务执行时间、状态、耗时 - ✅ **日志搜索过滤**:按时间、状态、任务筛选 - ✅ **日志导出**:支持日志数据导出 - ✅ **日志清理**:自动清理过期日志 ### ⚙️ 系统设置 - ✅ **用户认证管理**:密码修改、会话管理 - ✅ **系统参数配置**:服务器端口、日志级别等 - ✅ **数据库管理**:SQLite数据库自动维护 - ✅ **安全配置**:JWT密钥、认证超时设置 ### 🔌 API接口 - ✅ **RESTful API**:完整的REST API支持 - ✅ **WebSocket实时通信**:任务状态实时推送 - ✅ **API文档**:完整的接口文档 - ✅ **CORS支持**:跨域请求支持 --- ## 🛠 技术栈 ### 前端技术 - **框架**:Vue 3.x + Composition API - **UI库**:Ant Design Vue 4.x - **构建工具**:Vite 5.x - **语言**:TypeScript 5.x - **状态管理**:Pinia - **HTTP客户端**:Axios - **图标**:Ant Design Icons ### 后端技术 - **语言**:Go 1.21+ - **Web框架**:Gin + Gorilla Mux - **数据库**:SQLite + GORM ORM - **任务调度**:Robfig Cron - **认证**:JWT + MD5加密 - **日志**:结构化日志系统 - **WebSocket**:Gorilla WebSocket ### 构建与部署 - **打包**:单二进制文件部署 - **前端集成**:Go embed静态文件 - **跨平台编译**:支持多平台构建 - **资源压缩**:静态资源优化 --- ## 🚀 快速开始 ### 📦 下载安装 #### 方式一:直接下载可执行文件 ```bash # Windows wget https://github.com/your-repo/skedule/releases/latest/download/skedule-windows-amd64.exe # Linux wget https://github.com/your-repo/skedule/releases/latest/download/skedule-linux-amd64 # macOS wget https://github.com/your-repo/skedule/releases/latest/download/skedule-darwin-amd64 ``` #### 方式二:从源码编译 ##### 🏗️ 自动化构建(推荐) ```bash # 克隆项目 git clone https://github.com/your-repo/skedule.git cd skedule # 安装依赖 npm run setup # 🎯 全平台构建(Windows + Linux + macOS) npm run build:all # 📦 当前平台构建 npm run build:current # 🎯 指定平台构建 npm run build:win # Windows npm run build:linux # Linux npm run build:mac # macOS # ✨ Windows带图标构建 npm run build:win:icon # 构建完成后,可执行文件位于 dist/ 目录 ``` ##### 🔧 手动构建 ```bash # 1. 构建前端 cd frontend npm install npm run build # 2. 编译后端 cd ../backend-go go mod tidy go build -o ../dist/skedule main.go # Windows 平台需要添加 .exe 扩展名 go build -o ../dist/skedule.exe main.go ``` ##### ✨ 自动化构建的优势 - 🔄 **版本自动注入**:从 `package.json` 读取版本号 - ⏰ **构建时间记录**:自动记录编译时间 - 🌿 **Git集成**:自动获取commit hash - 🎯 **跨平台支持**:一键生成多平台可执行文件 - 📦 **统一输出**:所有构建产物统一放在 `dist/` 目录 ### 🎬 启动服务 #### 1. 基本启动 ```bash # Windows ./dist/skedule.exe # Linux/macOS ./dist/skedule ``` #### 2. 自定义端口启动 ```bash ./dist/skedule.exe --port=8080 ``` #### 3. 查看启动信息 ``` 🚀 Skedule 跨平台定时任务管理器启动成功! 🚀 架构模式: 单二进制文件部署 (内嵌前端) 🔒 监听地址: 0.0.0.0 🌐 访问地址: - 局域网访问: http://192.168.1.100:3001 (本机IP) - 本地访问: http://127.0.0.1:3001 🔐 认证配置: 用户名: admin 密码: ****** 💾 数据库: skedule.db ⏰ 启动时间: 2024-01-01 12:00:00 ``` ### 🌐 访问系统 1. **打开浏览器**访问:`http://localhost:3001` 2. **登录系统**: - 默认用户名:`admin` - 默认密码:`admin123` 3. **开始使用**:创建您的第一个定时任务 --- ## 💻 命令行操作 ### 🔐 密码管理 #### 修改用户密码 ```bash ./skedule-backend.exe --mode=password --username=admin --password=新密码 ``` **示例:** ```bash # 修改为简单密码(开发环境) ./skedule-backend.exe --mode=password --username=admin --password=123456 # 修改为强密码(生产环境) ./skedule-backend.exe --mode=password --username=admin --password=Strong@Password2024! ``` **输出示例:** ``` ✅ 密码修改成功 用户名: admin 新密码: Strong@Password2024! (明文) 加密后: d4c8fa5993450c6e535f6617a3919b71 盐值: skedule2024 ``` #### 查看当前配置 ```bash ./skedule-backend.exe --show-config ``` **输出示例:** ``` 📋 当前配置: 端口: 3001 IP地址: 0.0.0.0 用户名: admin 密码: d4c8fa5993450c6e535f6617a3919b71 (已加密) 盐值: skedule2024 ``` ### 🚀 服务器启动选项 #### 指定端口启动 ```bash ./skedule-backend.exe --port=8080 ``` #### 启用详细日志 ```bash ./skedule-backend.exe --log-level=debug --enable-logging=true ``` #### 自定义JWT密钥 ```bash ./skedule-backend.exe --jwt-secret=your-custom-secret-key ``` #### 生产环境启动 ```bash ./skedule-backend.exe --port=80 --log-level=warn --jwt-secret=production-secret-key ``` ### 📚 完整参数列表 | 参数 | 说明 | 默认值 | 示例 | |------|------|--------|------| | `--mode` | 运行模式 | `server` | `--mode=password` | | `--username` | 登录用户名 | `admin` | `--username=admin` | | `--password` | 登录密码 | `admin123` | `--password=newpass` | | `--port` | 服务器端口 | `3001` | `--port=8080` | | `--jwt-secret` | JWT密钥 | `skedule-secret-key-2024` | `--jwt-secret=mysecret` | | `--log-level` | 日志级别 | `info` | `--log-level=debug` | | `--enable-logging` | 启用API日志 | `true` | `--enable-logging=false` | | `--config-only` | 仅更新配置 | `false` | `--config-only` | | `--show-config` | 显示当前配置 | `false` | `--show-config` | | `--help` | 显示帮助信息 | - | `--help` | ### 🔄 常用操作示例 #### 快速密码重置 ```bash # 重置为默认密码 ./skedule-backend.exe --mode=password --username=admin --password=admin123 # 设置复杂密码 ./skedule-backend.exe --mode=password --username=admin --password=Complex@Pass2024! ``` #### 调试模式启动 ```bash # 启用详细日志用于调试 ./skedule-backend.exe --log-level=debug --port=3000 ``` #### 获取帮助 ```bash ./skedule-backend.exe --help ``` --- ## 🎨 Web界面使用 ### 🏠 主界面导览 #### 1. 任务列表页面 - **任务概览**:显示所有任务的状态、下次执行时间 - **快速操作**:启用/禁用、立即执行、编辑、删除 - **状态指示**:运行中、已停止、执行成功/失败状态 - **搜索过滤**:按名称、状态筛选任务 #### 2. 任务创建/编辑页面 - **基本信息**:任务名称、描述 - **执行命令**:支持shell命令、脚本路径、可执行程序 - **调度设置**:Cron表达式配置,支持向导模式 - **高级选项**:超时设置、重试次数、并发控制 #### 3. 执行日志页面 - **日志列表**:按时间倒序显示执行记录 - **详细信息**:执行时间、耗时、状态、完整输出 - **搜索功能**:按任务、时间范围、状态筛选 - **日志导出**:支持CSV、JSON格式导出 #### 4. 系统设置页面 - **用户管理**:密码修改、会话管理 - **系统配置**:服务器设置、日志配置 - **数据管理**:数据库状态、备份恢复 - **关于信息**:版本信息、系统状态 ### 📝 任务管理操作 #### 创建新任务 1. 点击**"创建任务"**按钮 2. 填写**任务名称**和**描述** 3. 输入**执行命令**: ```bash # 示例:备份数据库 mysqldump -u root -p mydb > /backup/mydb_$(date +%Y%m%d).sql # 示例:清理日志文件 find /var/log -name "*.log" -mtime +7 -delete # 示例:Python脚本 python /home/scripts/data_sync.py ``` 4. 设置**Cron表达式**: - `0 2 * * *` - 每天凌晨2点执行 - `0 */6 * * *` - 每6小时执行一次 - `0 0 * * 1` - 每周一午夜执行 5. 点击**"保存"**完成创建 #### 管理现有任务 - **启用/禁用**:点击状态开关 - **立即执行**:点击"执行"按钮 - **停止任务**:点击"停止"按钮(仅运行中任务) - **编辑任务**:点击"编辑"按钮 - **删除任务**:点击"删除"按钮,需要确认 #### Cron表达式说明 ``` 格式:秒 分 时 日 月 周 * * * * * * │ │ │ │ │ │ │ │ │ │ │ └─ 星期 (0-7, 0和7都表示周日) │ │ │ │ └── 月份 (1-12) │ │ │ └─── 日期 (1-31) │ │ └──── 小时 (0-23) │ └───── 分钟 (0-59) └────── 秒 (0-59) ``` **常用表达式示例:** - `0 0 2 * * *` - 每天凌晨2点 - `0 30 8 * * 1-5` - 工作日上午8:30 - `0 0 0 1 * *` - 每月1号午夜 - `0 */15 * * * *` - 每15分钟 - `0 0 6,18 * * *` - 每天6点和18点 --- ## 📡 API文档 ### 🔐 认证相关 #### 获取密码盐值 ```http GET /api/auth/salt ``` **响应:** ```json { "salt": "skedule2024" } ``` #### 用户登录 ```http POST /api/auth/login Content-Type: application/json { "username": "admin", "password": "encrypted_password" } ``` **响应:** ```json { "success": true, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ### 📋 任务管理 #### 获取任务列表 ```http GET /api/tasks Authorization: Bearer ``` **响应:** ```json [ { "id": "uuid-1234", "name": "数据备份", "command": "mysqldump -u root mydb > backup.sql", "schedule": "0 2 * * *", "enabled": true, "running": false, "lastRun": "2024-01-01T02:00:00Z", "nextRun": "2024-01-02T02:00:00Z", "description": "每天凌晨2点备份数据库" } ] ``` #### 创建新任务 ```http POST /api/tasks Authorization: Bearer Content-Type: application/json { "name": "清理日志", "command": "find /var/log -name '*.log' -mtime +7 -delete", "schedule": "0 3 * * 0", "enabled": true, "description": "每周日凌晨3点清理过期日志" } ``` #### 更新任务 ```http PUT /api/tasks/{id} Authorization: Bearer Content-Type: application/json { "name": "清理日志(更新)", "command": "find /var/log -name '*.log' -mtime +14 -delete", "schedule": "0 3 * * 0", "enabled": true, "description": "每周日凌晨3点清理过期日志(保留14天)" } ``` #### 删除任务 ```http DELETE /api/tasks/{id} Authorization: Bearer ``` #### 启用/禁用任务 ```http POST /api/tasks/{id}/toggle Authorization: Bearer ``` #### 立即执行任务 ```http POST /api/tasks/{id}/execute Authorization: Bearer ``` **响应:** ```json { "success": true, "executionId": "exec-uuid-5678", "message": "任务已开始执行" } ``` #### 停止正在运行的任务 ```http POST /api/tasks/{id}/stop Authorization: Bearer ``` **响应:** ```json { "success": true, "message": "任务已停止" } ``` #### 获取执行记录 ```http GET /api/tasks/executions/{executionId} Authorization: Bearer ``` **响应:** ```json { "success": true, "data": { "id": "exec-uuid-5678", "taskId": "uuid-1234", "startTime": "2024-01-01T10:00:00Z", "endTime": "2024-01-01T10:05:00Z", "duration": 300000, "status": "success", "output": "命令执行输出内容..." } } ``` ### 📝 日志管理 #### 获取执行日志 ```http GET /api/logs?page=1&pageSize=20&taskId=uuid-1234&status=success Authorization: Bearer ``` **查询参数:** - `page`: 页码(默认1) - `pageSize`: 每页记录数(默认20,最大100) - `taskId`: 任务ID筛选 - `status`: 状态筛选(success/error/running) - `startDate`: 开始日期(YYYY-MM-DD) - `endDate`: 结束日期(YYYY-MM-DD) **响应:** ```json { "logs": [ { "id": 1, "taskId": "uuid-1234", "taskName": "数据备份", "status": "success", "output": "备份完成,文件大小:1.2GB", "startTime": "2024-01-01T02:00:00Z", "endTime": "2024-01-01T02:05:00Z", "duration": 300000, "exitCode": 0 } ], "total": 150 } ``` #### 获取特定任务的日志 ```http GET /api/logs/tasks/{taskId} Authorization: Bearer ``` #### 清理过期日志 ```http POST /api/logs/cleanup Authorization: Bearer ``` ### ⚙️ 系统设置 #### 获取系统设置 ```http GET /api/settings Authorization: Bearer ``` #### 更新系统设置 ```http PUT /api/settings Authorization: Bearer Content-Type: application/json { "systemName": "我的任务调度器", "maxConcurrentTasks": 5, "logRetentionDays": 30, "enableFailureNotification": true, "emailAddress": "admin@example.com" } ``` #### 获取系统信息 ```http GET /api/system/info Authorization: Bearer ``` **响应:** ```json { "version": "1.0.0", "uptime": "2天 5小时 30分钟", "activeTasks": 3, "totalTasks": 15, "os": "windows", "arch": "amd64", "memory": "25.6 MB" } ``` ### 🔌 WebSocket连接 #### 连接WebSocket ```javascript const ws = new WebSocket('ws://localhost:3001/api/ws'); ws.onmessage = function(event) { const data = JSON.parse(event.data); console.log('任务状态更新:', data); }; ``` **消息格式:** ```json { "type": "task_status", "taskId": "uuid-1234", "status": "running", "timestamp": "2024-01-01T10:00:00Z" } ``` --- ## 🛠 开发指南 ### 🏗 项目结构 ``` skedule/ ├── 📁 frontend/ # 前端项目 │ ├── 📁 src/ │ │ ├── 📁 components/ # Vue组件 │ │ ├── 📁 views/ # 页面视图 │ │ ├── 📁 api/ # API接口 │ │ ├── 📁 stores/ # Pinia状态管理 │ │ ├── 📁 types/ # TypeScript类型定义 │ │ └── 📁 utils/ # 工具函数 │ ├── 📄 package.json │ ├── 📄 vite.config.ts │ └── 📄 tsconfig.json ├── 📁 backend-go/ # 后端项目 │ ├── 📁 handlers/ # HTTP处理器 │ ├── 📁 routes/ # 路由配置 │ ├── 📁 service/ # 业务服务 │ ├── 📁 database/ # 数据库层 │ ├── 📁 storage/ # 存储层 │ ├── 📁 scheduler/ # 任务调度器 │ ├── 📁 auth/ # 认证模块 │ ├── 📁 config/ # 配置管理 │ ├── 📁 middleware/ # 中间件 │ ├── 📁 utils/ # 工具函数 │ ├── 📁 types/ # 类型定义 │ ├── 📄 main.go # 主程序入口 │ ├── 📄 go.mod │ └── 📄 go.sum ├── 📁 icon/ # 应用图标 ├── 📁 logs/ # 日志文件 ├── 📄 skedule.db # SQLite数据库 ├── 📄 config.json # 系统配置 ├── 📄 build.ps1 # 构建脚本 ├── 📄 package.json # 项目配置 ├── 📄 README.md # 项目文档 └── 📄 LICENSE # 许可证 ``` ### 🔧 本地开发环境 #### 环境要求 - **Node.js**: 18.x+ - **Go**: 1.21+ - **Git**: 最新版本 #### 前端开发 ```bash # 安装依赖 cd frontend npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build # 类型检查 npm run type-check # 代码格式化 npm run format ``` #### 后端开发 ```bash # 安装依赖 cd backend-go go mod tidy # 启动开发服务器 go run main.go # 构建可执行文件 go build -o skedule-backend.exe # 运行测试 go test ./... # 格式化代码 go fmt ./... ``` #### 完整构建 ```bash # 使用构建脚本(Windows) ./build.ps1 # 手动构建步骤 cd frontend && npm run build cd ../backend-go && go build -o skedule-backend.exe ``` ### 🧪 测试 #### 前端测试 ```bash cd frontend npm run test # 运行单元测试 npm run test:e2e # 运行端到端测试 npm run coverage # 生成测试覆盖率报告 ``` #### 后端测试 ```bash cd backend-go go test ./... # 运行所有测试 go test -v ./handlers/ # 运行特定包测试 go test -cover ./... # 生成覆盖率报告 ``` ### 📦 部署指南 #### Docker部署 ```dockerfile # Dockerfile示例 FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY skedule-backend . EXPOSE 3001 CMD ["./skedule-backend"] ``` ```bash # 构建Docker镜像 docker build -t skedule:latest . # 运行容器 docker run -d -p 3001:3001 -v $(pwd)/data:/root/data skedule:latest ``` #### 系统服务部署 **Windows服务(使用NSSM):** ```cmd nssm install Skedule "C:\Program Files\Skedule\skedule-backend.exe" nssm set Skedule AppDirectory "C:\Program Files\Skedule" nssm start Skedule ``` **Linux Systemd服务:** ```ini # /etc/systemd/system/skedule.service [Unit] Description=Skedule Task Scheduler After=network.target [Service] Type=simple User=skedule WorkingDirectory=/opt/skedule ExecStart=/opt/skedule/skedule-backend Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` ```bash # 启用服务 sudo systemctl enable skedule.service sudo systemctl start skedule.service ``` --- ## ❓ 常见问题 ### 🔧 安装问题 **Q: 程序无法启动,提示端口被占用** ``` A: 检查端口占用情况: Windows: netstat -ano | findstr :3001 Linux: lsof -i :3001 解决方案: 1. 关闭占用端口的程序 2. 使用其他端口启动:./skedule-backend.exe --port=8080 ``` **Q: 数据库文件权限错误** ``` A: 确保程序有写入权限: Linux/macOS: chmod 755 ./skedule-backend && chmod 644 ./skedule.db Windows: 以管理员身份运行 ``` ### 🔐 认证问题 **Q: 忘记管理员密码** ``` A: 使用命令行重置密码: ./skedule-backend.exe --mode=password --username=admin --password=新密码 ``` **Q: Token过期频繁** ``` A: 调整Token有效期: ./skedule-backend.exe --jwt-secret=custom-key ``` ### 📝 任务执行问题 **Q: 任务不执行** ``` A: 检查以下项目: 1. 任务是否已启用 2. Cron表达式是否正确 3. 命令路径是否正确 4. 执行权限是否足够 ``` **Q: 任务执行失败** ``` A: 查看详细日志: 1. 进入"执行日志"页面 2. 查看具体错误信息 3. 检查命令语法和依赖 ``` **Q: 无法停止运行中的任务** ``` A: 强制停止方案: 1. 使用Web界面停止按钮 2. 重启Skedule服务 3. 手动终止进程(不推荐) ``` ### 🌐 网络问题 **Q: 无法访问Web界面** ``` A: 检查网络配置: 1. 确认服务器已启动 2. 检查防火墙设置 3. 确认IP和端口配置 4. 查看浏览器控制台错误 ``` **Q: API请求失败** ``` A: 调试步骤: 1. 检查请求URL是否正确 2. 验证Token是否有效 3. 查看Network面板 4. 启用详细日志:--log-level=debug ``` ### 💾 数据问题 **Q: 数据库损坏** ``` A: 恢复方案: 1. 停止服务 2. 备份当前数据库文件 3. 删除损坏的数据库文件 4. 重启服务(会自动创建新数据库) ``` **Q: 如何备份数据** ``` A: 备份方案: 1. 定期备份skedule.db文件 2. 导出配置文件config.json 3. 使用以下命令备份: cp skedule.db backup/skedule_$(date +%Y%m%d).db ``` --- ## 📈 更新日志 ### 🎉 v1.0.0 (2024-01-01) #### ✨ 新功能 - 🎯 **完整的任务管理系统**:支持创建、编辑、删除、启停任务 - 🏃 **任务执行控制**:立即执行、停止正在运行的任务 - 📝 **详细的执行日志**:完整的任务执行历史和输出记录 - 🔐 **安全认证系统**:JWT + 密码加密保护 - 💾 **SQLite数据持久化**:所有数据安全存储 - 🌐 **现代化Web界面**:Vue3 + Ant Design Vue响应式UI - 🔄 **单二进制部署**:前后端集成,开箱即用 - 📱 **跨平台支持**:Windows、Linux、macOS全平台支持 #### 🛠 技术特性 - **前端技术栈**:Vue 3 + TypeScript + Ant Design Vue + Vite - **后端技术栈**:Go + Gin + GORM + SQLite + Cron - **数据库**:SQLite 3.x with GORM ORM - **认证**:JWT Token + MD5密码加密 - **实时通信**:WebSocket支持 - **API接口**:完整的RESTful API #### 🔧 系统功能 - **任务调度**:基于Cron表达式的灵活调度 - **执行监控**:实时任务状态跟踪 - **日志管理**:详细的执行日志和搜索功能 - **系统设置**:用户管理、系统配置 - **命令行工具**:密码管理、配置查看 --- ## 🤝 贡献指南 我们欢迎所有形式的贡献!请阅读以下指南: ### 📝 提交Issues - 使用清晰的标题描述问题 - 提供详细的复现步骤 - 包含错误日志和截图 - 标明系统环境信息 ### 🔧 提交代码 1. Fork本仓库 2. 创建特性分支:`git checkout -b feature/new-feature` 3. 提交更改:`git commit -am 'Add new feature'` 4. 推送分支:`git push origin feature/new-feature` 5. 创建Pull Request ### 📋 代码规范 - **Go代码**:遵循`go fmt`标准 - **Vue代码**:使用ESLint + Prettier - **提交信息**:使用[Conventional Commits](https://conventionalcommits.org/)格式 - **测试**:为新功能添加相应测试 --- ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 --- ## 🙏 致谢 感谢以下开源项目: - [Vue.js](https://vuejs.org/) - 渐进式JavaScript框架 - [Ant Design Vue](https://antdv.com/) - 企业级UI设计语言 - [Go](https://golang.org/) - 开源编程语言 - [Gin](https://gin-gonic.com/) - Go Web框架 - [GORM](https://gorm.io/) - Go ORM库 - [Robfig Cron](https://github.com/robfig/cron) - Go Cron库 - [SQLite](https://sqlite.org/) - 轻量级数据库 --- ## 📧 联系我们 - **项目主页**:[GitHub Repository](https://github.com/your-repo/skedule) - **问题反馈**:[Issues](https://github.com/your-repo/skedule/issues) - **功能建议**:[Discussions](https://github.com/your-repo/skedule/discussions) - **邮箱联系**:skedule@example.com ---
**⭐ 如果这个项目对你有帮助,请给我们一个Star!⭐** *Made with ❤️ by Skedule Team*