import type { AppTour } from '../types';

/**
 * Visite de l'écran « Automatisations » (messages automatiques aux voyageurs).
 *
 * Faits portés par la visite, lus dans le moteur (App\Services\MessageAutomation)
 * et dans le contrôleur :
 *
 *  - le planificateur passe une fois par heure ; le bandeau d'état passe à
 *    l'ambre au-delà de 90 minutes sans passage, au rouge s'il n'est jamais
 *    passé — et rien ne part alors, règles actives ou non ;
 *  - une règle naît ÉTEINTE et « À valider » (RuleService::create) ;
 *  - activer pose la borne anti-rattrapage à maintenant, à CHAQUE activation
 *    (RuleService::toggle, RuleMatcher::dueCandidates) ;
 *  - aucune heure d'envoi n'est acceptée pendant les heures calmes
 *    (22:00–08:00) ; un message « Automatique » dû la nuit part au réveil, s'il
 *    a encore un sens (AutomationPlanner) ;
 *  - une variable vide écarte le message au lieu de laisser un trou
 *    (TemplateRenderer) ;
 *  - « résultat inconnu » = le canal n'a pas répondu : jamais de nouvel essai
 *    automatique, un humain vérifie le fil (AutomationSender) ;
 *  - « Lancer maintenant » fait le passage horaire tout de suite, mêmes
 *    garde-fous, au plus 10 envois (MessageAutomationController::run,
 *    config message_automation.manual_run).
 *
 * Étapes 30 à 50 : première règle de la liste, onglet « Règles » seulement —
 * `optional` (liste vide, ou visite lancée depuis un autre onglet). Les étapes
 * 15, 20 et 25 n'existent qu'avec le droit d'écrire une règle. L'onglet « Historique » est la
 * DERNIÈRE étape et s'ouvre en y arrivant (TOURS.md §6.4) : un onglet Radix ne
 * se referme pas en quittant l'étape, on laisse l'utilisateur devant ce qu'on
 * vient de décrire.
 *
 * Ancres posées dans `pages/automatisations/index.tsx` et ses composants.
 * Textes dans `lang/{fr,en}/tours.php`, clés `automatisations.<key>.title|content`.
 */
export const automatisationsTour: AppTour = {
    id: 'automatisations',
    components: ['automatisations/index'],
    steps: [
        { anchor: 'automatisations-status', key: 'status', order: 10 },
        // « Lancer maintenant » : même droit que la route (automatisations.manage).
        { anchor: 'automatisations-run', key: 'run', order: 15, permission: 'automatisations.manage' },
        { anchor: 'automatisations-new-rule', key: 'newRule', order: 20, permission: 'automatisations.manage' },
        // Galerie des modèles prêts à l'emploi : même droit que « Nouvelle règle », un modèle en crée une.
        { anchor: 'automatisations-templates', key: 'templates', order: 25, permission: 'automatisations.manage' },
        // Première règle de la liste — absente quand il n'y en a aucune, ou hors de l'onglet « Règles ».
        { anchor: 'automatisations-trigger', key: 'trigger', order: 30, optional: true },
        { anchor: 'automatisations-mode', key: 'mode', order: 40, optional: true },
        { anchor: 'automatisations-switch', key: 'switch', order: 50, optional: true },
        { anchor: 'automatisations-tab-pending', key: 'pending', order: 60 },
        { anchor: 'automatisations-tab-history', key: 'history', order: 70, openOnEnter: true },
    ],
};
