framework:
    messenger:
        failure_transport: failed

        transports:
            # https://symfony.com/doc/current/messenger.html#transport-configuration
            async:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                    use_notify: true
                    check_delayed_interval: 60000
                retry_strategy:
                    max_retries: 3
                    multiplier: 2
            stripe_webhook:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                    queue_name: stripe_webhook
                    use_notify: true
                retry_strategy:
                    max_retries: 3
                    multiplier: 2
            # Scormia — génération IA asynchrone : queue dédiée, JAMAIS de retry
            # (une génération de plusieurs minutes ne se rejoue pas aveuglément —
            # échec → job failed, l'utilisateur relance depuis l'UI).
            scormia_generation:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                    queue_name: scormia_generation
                    use_notify: true
                retry_strategy:
                    max_retries: 0
            failed: 'doctrine://default?queue_name=failed'
            # sync: 'sync://'

        default_bus: messenger.bus.default

        buses:
            messenger.bus.default: []

        routing:
            # En développement, envoyer les emails de manière synchrone pour faciliter les tests
            # En production, utiliser 'async' pour de meilleures performances
            # Symfony\Component\Mailer\Messenger\SendEmailMessage: async
            Symfony\Component\Notifier\Message\ChatMessage: async
            Symfony\Component\Notifier\Message\SmsMessage: async

            # SAM - Synchronisation asynchrone
            App\Message\Sam\SyncCoursesMessage: async
            App\Message\Sam\RefreshConnectionsMessage: async

            # Stripe — transport dédié isolé du trafic SAM
            App\Message\StripeWebhookMessage: stripe_webhook

            # Scormia — génération IA asynchrone (queue dédiée, retry 0)
            App\Message\GenerateScormiaModuleMessage: scormia_generation

when@test:
    framework:
        messenger:
            transports:
                # En test : transport en mémoire (la base SQLite de test n'a pas
                # de table messenger_messages) — le handler est testé en unit.
                scormia_generation: 'in-memory://'
