Lot 1, séquence A4 — Acteurs
1er octobre 2026. Mise en œuvre de la séquence A4 du plan du Lot 1. Décisions : EC-014, EC-028, EC-031, EC-053 ; écarts ouverts : EC-069, EC-070.
- Un doublon de pièce d’identité n’est jamais refusé : la fiche est acceptée et un contrôle
doublon_identites’ouvre. Tant qu’il n’est pas levé, la fiche est « en contrôle » : ni capacité ni paiement (AV1-02). - La fusion de deux fiches ne supprime rien : la fiche absorbée devient
fusionneeet renvoie à la fiche retenue. - L’éligibilité au groupe est une fonction pure du domaine à critères alternatifs (EC-014), appelée par un service de l’API. Ses seuils sont passés par l’appelant : leur stockage est en attente (EC-069).
- Aucune route REST en A4 : le contrat est gelé en A9, les écrans B3 demanderont leurs routes.
| Table | Contenu |
|---|---|
app.groupement |
Code unique par organisation, nom, actif |
app.producteur |
organisation_id et groupement_id (obligatoire : la table descend sur le téléphone), code unique et jamais réutilisé, pièce d’identité et son numéro normalisé, photo et pièce en fichier, chiffre d’affaires annuel avec sa devise, statut actif ou fusionnee |
app.affectation_agent |
Agent affecté à un groupement, avec début et fin ; une seule affectation en cours par agent et par groupement ; jamais supprimée |
app.fournisseur |
Identité complète, tous champs obligatoires (EC-053) |
app.client |
Identité, incoterm, devise, conditions de règlement, tous obligatoires (EC-053) |
sync.controle |
Nouvelle colonne producteur_id (le motif doublon_identite et la décision fusion existaient déjà dans le socle) |
Fournisseur et certificat (EC-053). La certification n’est pas sur la fiche : elle vit dans la table certificat, créée en A6. La règle « pas de fournisseur sans certificat complet » ne peut donc pas être une contrainte de base en A4. Elle s’applique en A6, par la création du fournisseur et de son premier certificat dans une seule transaction de l’API. En A4, aucune route de création de fournisseur n’existe : la règle n’est pas enfreinte.
Doublon de pièce d’identité
Section intitulée « Doublon de pièce d’identité »Le déclencheur producteur_doublon s’exécute après chaque insertion ou changement de pièce ou de statut. Si une autre fiche active de la même organisation porte le même type de pièce et le même numéro normalisé (majuscules, sans espace ni tiret : cni tg 0001 et CNI-TG-0001 se rapprochent), il ouvre un contrôle avec la liste des fiches en cause. Un seul contrôle de doublon ouvert par fiche.
- Aucun index unique : un doublon ne se refuse pas.
- Un autre type de pièce, ou l’absence de pièce, ne fait jamais un doublon.
app.producteur_en_controle(id)dit si la fiche a un contrôle non levé. C’est la garde que la capacité (A8) et le paiement (Lot 4) appelleront.
app.fusionner_producteurs(absorbée, retenue, motif) exige un utilisateur dans le contexte (le décideur) et un motif. Elle refuse la fusion d’une fiche avec elle-même, ou d’une fiche déjà fusionnée. Elle lève les contrôles de doublon de la fiche absorbée avec la décision fusion. Le service fusionnerProducteurs (apps/api/src/acteurs/producteurs.service.ts) pose le contexte et rend fusion_refusee ou fiche_introuvable.
Éligibilité au groupe
Section intitulée « Éligibilité au groupe »eligibilite.evaluerEligibiliteGroupe (packages/domain) juge trois critères, alternatifs : il suffit d’en atteindre un.
| Critère | Atteint quand | Borne |
|---|---|---|
| Surface | les trois surfaces (cultures, serres, prairies) sont connues et aucune ne dépasse son seuil | seuil inclus |
| Chiffre d’affaires | il ne dépasse pas le plafond, après conversion dans la devise du seuil | plafond inclus |
| Coût de certification | il dépasse le taux minimal (en centièmes de point) | seuil exclu |
Une donnée absente rend le critère inconnu, jamais atteint. Une devise différente sans taux est une erreur de programmation. evaluerEligibiliteDuGroupement (API) lit les producteurs actifs et passe leurs données ; les surfaces viennent de A5 et sont fournies par l’appelant.
| Test | Ce qu’il vérifie |
|---|---|
db/tests/l1-a4.sql |
Unicités, pièce et chiffre d’affaires complets ou absents, doublon accepté et contrôle ouvert (AV1-02), normalisation, autre type de pièce, levée du contrôle, fusion et ses refus, suppression interdite, affectations, champs obligatoires des fournisseurs et clients, isolation par organisation |
VT-ELIG-001 à 015 |
Chaque critère, leur combinaison, les bornes incluses ou exclues, la conversion XOF vers EUR, l’absence de données |
apps/api/test/acteurs.test.ts |
Doublon et fusion avec le rôle de l’API, éligibilité d’un groupement |
packages/schemas/src/acteurs.test.ts |
Forme des fiches |
Hors séance
Section intitulée « Hors séance »Routes REST des acteurs (écrans B3) ; création du fournisseur avec son certificat (A6) ; surfaces des producteurs (A5) ; stockage des seuils d’éligibilité (EC-069) ; règles PowerSync des nouvelles tables (A9).