Automation administration dashboard
* Manual automations * Scheduled automations * Incoming webhook triggers * Domain-event trigger foundation * Ordered automation steps * Queued execution * Run status and execution history * Per-step execution logs * Continue-or-stop-on-failure control * Email actions * Outgoing webhook actions * Application log actions * Delay actions * Secure incoming webhook secrets * Automation trigger and action registries * Extensible action and trigger contracts * Scheduled automation Artisan command * Administration navigation * Automation permissions * Module registration and boot test
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace Modules\Automation\Models;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
final class Automation extends Model
|
||||
{
|
||||
protected $fillable=['name','description','trigger_type','trigger_config','status','stop_on_failure','run_count','last_ran_at','next_run_at','created_by'];
|
||||
protected $casts=['trigger_config'=>'array','stop_on_failure'=>'boolean','last_ran_at'=>'datetime','next_run_at'=>'datetime'];
|
||||
public function steps(): HasMany { return $this->hasMany(AutomationStep::class)->orderBy('position'); }
|
||||
public function runs(): HasMany { return $this->hasMany(AutomationRun::class); }
|
||||
public function isActive(): bool { return $this->status === 'active'; }
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace Modules\Automation\Models;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
final class AutomationRun extends Model
|
||||
{
|
||||
protected $fillable=['automation_id','execution_id','trigger_type','payload','status','current_step','error','started_at','finished_at'];
|
||||
protected $casts=['payload'=>'array','started_at'=>'datetime','finished_at'=>'datetime'];
|
||||
public function automation(): BelongsTo { return $this->belongsTo(Automation::class); }
|
||||
public function logs(): HasMany { return $this->hasMany(AutomationRunLog::class); }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace Modules\Automation\Models;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
final class AutomationRunLog extends Model
|
||||
{
|
||||
public $timestamps=false;
|
||||
protected $fillable=['automation_run_id','automation_step_id','level','message','context','created_at'];
|
||||
protected $casts=['context'=>'array','created_at'=>'datetime'];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Modules\Automation\Models;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
final class AutomationStep extends Model
|
||||
{
|
||||
protected $fillable=['automation_id','position','action_type','name','configuration','is_enabled'];
|
||||
protected $casts=['configuration'=>'array','is_enabled'=>'boolean'];
|
||||
public function automation(): BelongsTo { return $this->belongsTo(Automation::class); }
|
||||
}
|
||||
Reference in New Issue
Block a user