<?php

declare(strict_types=1);

namespace App\Shared\Domain\Security;

/**
 * Codes des roles METIER MALIO partages entre modules.
 *
 * Distincts des roles SYSTEME (cf. App\Module\Core\Domain\Security\SystemRoles :
 * `admin` / `user`). Un role metier porte une intention fonctionnelle (poste de
 * travail) et conditionne certaines regles de gestion au-dela des permissions
 * RBAC pures (Commerciale et Bureau partagent par ex. les memes permissions
 * commercial.clients.view + manage mais peuvent porter des regles de gestion
 * propres au poste). NB : l'ancienne RG-1.04 du M1 (« Information obligatoire
 * pour Commerciale ») a ete retiree — l'onglet Information est facultatif pour
 * tous ; la machinerie de role metier reste disponible pour de futures regles.
 *
 * Ces constantes vivent dans Shared (et non dans un module) pour que :
 *  - le seed des roles cote Core (ERP-74) reference le meme code sans importer
 *    une constante du module Commercial (regle ABSOLUE n°1 : pas d'import
 *    inter-modules) ;
 *  - le ClientProcessor (module Commercial) detecte le role Commerciale via ce
 *    meme code, sans dependre de Core.
 *
 * Coordination stack M1 :
 *  - ERP-74 seede le role `commerciale` avec ce code exact.
 *  - ERP-59 / ERP-60 (declaration RBAC + tests personas) le reutilisent.
 *  - ERP-55 le referencait pour la completude Information (M1 RG-1.04), regle
 *    depuis retiree ; le code reste utilise par le seed RBAC et les personas.
 */
final class BusinessRoles
{
    /**
     * Role metier « Commerciale » — code de Role RBAC (champ Role::code,
     * snake_case impose par la regex Role).
     */
    public const string COMMERCIALE = 'commerciale';

    private function __construct()
    {
        // Classe de constantes : non instanciable.
    }
}
