# 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 - 跨平台定时任务管理系统

**一个现代化、高效的跨平台定时任务管理解决方案**
[](LICENSE)
[](https://golang.org/)
[](https://vuejs.org/)
[]()
[功能特性](#-功能特性) • [快速开始](#-快速开始) • [命令行操作](#-命令行操作) • [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*