feat(scheduler): dispatch event on job failure, notify admins via notifications module
Add ?ModuleEventDispatcher to SchedulerRunService (fail-open, nullable). Dispatch scheduler.job_failed event when a job fails with payload: job_id, job_key, label, error_code, error_message, trigger_type. New SchedulerJobFailedNotificationListener in notifications module creates in-app admin notifications for users with JOBS_MANAGE permission, scoped per tenant, with 30-min dedup per job_key. Also fixes audit module manifest: system_audit_purge job_key was mismatched (audit_system_purge vs system_audit_purge in DB). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ use MintyPHP\Module\Notifications\Listeners\UserActivatedNotificationListener;
|
||||
use MintyPHP\Module\Notifications\Listeners\UserAssignmentChangedNotificationListener;
|
||||
use MintyPHP\Module\Notifications\Listeners\UserCreatedNotificationListener;
|
||||
use MintyPHP\Module\Notifications\Listeners\UserDeactivatedNotificationListener;
|
||||
use MintyPHP\Module\Notifications\Listeners\SchedulerJobFailedNotificationListener;
|
||||
use MintyPHP\Module\Notifications\Listeners\UserDeletedNotificationListener;
|
||||
use MintyPHP\Module\Notifications\Repository\NotificationRepository;
|
||||
use MintyPHP\Module\Notifications\Service\NotificationService;
|
||||
@@ -62,5 +63,11 @@ final class NotificationsContainerRegistrar implements ContainerRegistrar
|
||||
$c->get(NotificationService::class),
|
||||
$c->get(UserReadRepository::class)
|
||||
));
|
||||
|
||||
$container->set(SchedulerJobFailedNotificationListener::class, static fn (AppContainer $c): SchedulerJobFailedNotificationListener => new SchedulerJobFailedNotificationListener(
|
||||
$c->get(NotificationService::class),
|
||||
$c->get(UserReadRepository::class),
|
||||
$c->get(UserTenantRepository::class)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user