advsorcer / filament-schedule-ui
A Laravel schedule management tool based on Filament that allows you to easily manage and monitor all scheduled tasks in the admin interface.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/advsorcer/filament-schedule-ui
Requires
- php: ^8.3
- filament/filament: ^4.0
- laravel/framework: ^12.0
- laravel/tinker: ^2.10.1
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/boost: ^1.8
- laravel/pail: ^1.2.2
- laravel/pint: ^1.24
- laravel/sail: ^1.41
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- pestphp/pest: ^4.1
- pestphp/pest-plugin-laravel: ^4.0
README
繁體中文 | English
一個基於 Filament 的 Laravel 排程管理工具,讓您可以在後台介面中輕鬆管理和監控所有排程任務。
執行訊息
系統需求
- PHP >= 8.3
- Laravel >= 12.0
- Filament >= 4.0
- Composer
安裝步驟
1. 安裝 Package
composer require advsorcer/filament-schedule-ui
2. 安裝 Filament Panel(如果還沒有安裝)
php artisan filament:install --panels
3. 創建 Filament 用戶(如果還沒有創建)
php artisan make:filament-user
4. 發布配置檔案
php artisan vendor:publish --tag=filament-schedule-ui-config
5. 發布並執行遷移
php artisan vendor:publish --tag=filament-schedule-ui-migrations php artisan migrate
6. 在 Filament Panel 中註冊 Plugin
在你的 Filament Panel Provider(通常是 app/Providers/Filament/AdminPanelProvider.php)中註冊 Plugin:
use AdvSorcer\FilamentScheduleUI\FilamentScheduleUIPlugin; public function panel(Panel $panel): Panel { return $panel // ... 其他配置 ->plugin(FilamentScheduleUIPlugin::make()); }
7. 配置語言
php artisan vendor:publish --tag=filament-schedule-ui-lang
.env 中設定語言:
FILAMENT_SCHEDULE_UI_LOCALE=zh_TW 或
FILAMENT_SCHEDULE_UI_LOCALE=en
功能特色
📋 排程管理
- 自動同步
- 排程列表
- 啟用/停用
- 立即執行
- 完整記錄
- 執行狀態
- 執行輸出
- 執行時長
- 錯誤追蹤
使用方式
1. 首次設定
範例
在 routes/console.php 中定義排程:
// 測試排程:每十分鐘執行一次 schedule_command('say:good-evening') ->everyTenMinutes() ->description('每十分鐘說晚安');
登入後台後,首次使用時需要將程式碼中的排程同步到資料庫:
- 在 Filament 後台進入「排程任務」頁面
- 點擊右上角的「同步排程」按鈕
- 系統會自動掃描並同步所有排程任務
⚠️ 重要提醒
如果您建立了新的 Artisan 命令(Command),記得要在 routes/console.php 中使用 schedule_command 註冊排程,然後在後台執行「同步排程」才會出現在 UI 中。
懶人範例
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class SayGoodEveningCommand extends Command { protected $signature = 'say:good-evening'; protected $description = 'Say good evening in the log'; public function handle(): int { $this->info('=== Task Start ==='); $this->info('Saying Good Evening...'); \Log::info('Say Good Evening: 晚安!這是排程任務,執行時間:'.now()->toDateTimeString()); $this->info('=== Task End ==='); return Command::SUCCESS; } }

