; =============================================================================
; Ghana eVisa — Supervisor queue workers
; Use EITHER the 3 evisa-worker-* programs (raw queue:work) OR evisa-horizon
; (Horizon manages workers per config/horizon.php). Do not run both in production.
; =============================================================================

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

; -----------------------------------------------------------------------------
; Critical queue — payment callbacks, visa issuance, Interpol/Sumsub
; -----------------------------------------------------------------------------
[program:evisa-worker-critical]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work redis --queue=critical --sleep=1 --tries=3 --max-time=3600 --memory=256
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=3
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker-critical.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
stopwaitsecs=3600

; -----------------------------------------------------------------------------
; Default queue — emails, document processing, notifications
; -----------------------------------------------------------------------------
[program:evisa-worker-default]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work redis --queue=default --sleep=3 --tries=3 --max-time=3600 --memory=256
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker-default.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
stopwaitsecs=3600

; -----------------------------------------------------------------------------
; Low queue — reports, analytics, reconciliation, cleanup
; -----------------------------------------------------------------------------
[program:evisa-worker-low]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work redis --queue=low --sleep=10 --tries=3 --max-time=3600 --memory=256
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker-low.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
stopwaitsecs=3600

; -----------------------------------------------------------------------------
; Horizon — alternative to the 3 workers above; use one or the other
; -----------------------------------------------------------------------------
[program:evisa-horizon]
process_name=%(program_name)s
command=php /var/www/html/artisan horizon
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/horizon.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
stopwaitsecs=3600

[group:evisa-workers]
programs=evisa-worker-critical,evisa-worker-default,evisa-worker-low,evisa-horizon
