Module Affectations (user_assignments)
Le module Affectations gère le lien temporel entre un responsable et une org_unit, avec un rôle de gestion et une fonction.
Modèle
Table user_assignments :
| Champ | Sens |
|---|---|
user_id | Le responsable affecté |
org_unit_id | La structure d'affectation |
management_role_code | ADMIN_UNITE / ADMIN_GROUPE / ADMIN_DISTRICT / ADMIN_REGION / ADMIN_NATION |
function_type_id | Le type de fonction (Chef, Adjoint, Secrétaire, Trésorier…) |
is_primary | Vrai = c'est l'ancrage d'origine du responsable (1 seul actif par user) |
start_date | Date de début |
end_date | Date de fin (NULL si encore actif) |
is_active | Recalcul pratique pour les requêtes |
Doctrine — Relations temporelles (R3)
Quand un responsable change d'affectation, on ferme son ancienne (
end_date = jour J) et on ouvre une nouvelle. Jamais d'UPDATE.
L'historique est ainsi auditable : on sait précisément qui était où et quand.
Affectation primaire vs secondaire
- Primaire : l'ancrage statutaire du responsable. C'est ce qui détermine son rôle ACTIF et donc ses permissions (mig 0199).
- Secondaire : affectation supplémentaire dans une autre structure (ex: un Chef de Groupe qui anime aussi une unité). Visible dans les filtres de la structure secondaire.
Accéder au module
Sidebar → Administration → Affectations.

Créer une affectation
Bouton Nouvelle affectation :
- Responsable : sélection parmi les comptes du périmètre
- Structure : org_unit cible (cascade comme dans Responsables)
- Rôle de gestion : ADMIN_X correspondant au niveau de la structure
- Fonction : Chef, Adjoint, Secrétaire…
- Date début : aujourd'hui par défaut
- Primary ? : si oui, l'ancienne affectation primaire est fermée

Fermer une affectation
Édite la ligne et renseigne end_date. Le responsable conserve son compte
mais perd ses droits sur cette structure à partir de la date renseignée.
Set primary
Bouton Marquer comme primaire (sur une affectation secondaire). Ouvre une boîte de dialog qui :
- Ferme l'ancienne primaire (
end_date = aujourd'hui) - Promote la secondaire choisie en primaire
- Audit l'opération (mig 0219)
Permissions (mig 0212)
Tu peux gérer les affectations dans ton périmètre uniquement. Les gates RBAC
sont contractuels (can_assignments_*).
Doctrine
- R3 : pas d'UPDATE sur les affectations, fermer + ouvrir
- R4 : pas de DELETE
- R5 : le rôle ACTIF gouverne les permissions (mig 0199)