Module de production sectorielle (palmier à huile) PDG / Admin / Superviseur
Module sectoriel dédié au cycle complet de production : récolte → maturité → transport → réception → pressoir → CPO. Conforme aux standards Big 5 (Wilmar / Sime Darby / IOI / Golden Agri / FGV) et au cadre RSPO Principles & Criteria v4.
Accès
Menu latéral → Production
URL directe : /dashboard/palm-oil-production
Imports WhatsApp et quantités inconnues
Un relevé lisible conserve ses nombres de fûts et de bidons. Le volume en litres dépend des contenances valides à la date du relevé : si elles manquent, le volume reste non renseigné, avec un avertissement. Configurez les contenances dans Ratios de production avant les prochains relevés ; les imports déjà terminés ne sont pas recalculés automatiquement. Chaque ratio porte une nature : conversion d'unités (contenance d'un bidon ou d'un fût, kg ↔ tonne, densité) ou rendement de procédé (par exemple 2,5 bidons d'huile par fût de noix). Seules les conversions servent au calcul des volumes ; un ancien ratio sans nature compte comme avant.
Dans les stocks et les indicateurs de production, non renseigné signifie une quantité inconnue ; 0 reste une quantité connue. Une reprise d'un ancien import conserve une clôture de stock plus récente. Si la confirmation d'un import est incertaine, rechargez l'historique avant de le relancer. Un conflit avec une donnée historique connue doit être examiné avant une nouvelle tentative.
Un tenant test-import exploite 28 parcelles sur 200 hectares (80 plantés). Les parcelles A-P sont dédiées au cultivar Tenera. Capacité ligne pressoir : 1 TPH (FFB). Chaque tenant configure ses propres parcelles, cultivars et capacité via les paramètres plantation.
1. Modèle de maturité L1-L4 (configuration tenant)
Le module supporte 4 niveaux de maturité opérationnelle, configurés par tenant via tenant_palm_oil_config.maturity_level. Chaque niveau a un défaut de capacité TPH (tonnes FFB/heure) et une bande OER attendue (Oil Extraction Rate, %), définis dans le code canonique src/types/palmOilConfig.ts (MATURITY_OER_BANDS) et la spec specs/palm-oil-operations-template.md (FR-1) :
| Niveau | Capacité par défaut | OER attendu | Équipements typiques | Certification |
|---|---|---|---|---|
| L1 Artisanal | 0.1 TPH (100 kg/h) | 12-13% | Pressoir manuel, cuves bois | Aucune |
| L2 Semi-mécanisé | 0.5 TPH (500 kg/h) | 14-15% | Cuiseur + presse à vis motorisée | Optionnelle ISO 9001 |
| L3 Mécanisé | 1.0 TPH (cible petit moulin Afrique) | 17-18% | Ligne complète M1-M6 (cuiseur, dépresseur, clarificateur, chaudière, déshuileur, pressoir noix) | HACCP requise |
| L4 Industriel | 5.0 TPH | 20-23% | Multi-ligne + traçabilité plantation→pressoir totale | RSPO Principles & Criteria v4 obligatoire |
Les valeurs ci-dessus sont les défauts par niveau de maturité. Chaque tenant peut configurer sa propre capacité réelle via tenant_palm_oil_config.capacity_tph (numeric, indépendant du niveau). Un tenant test-import cible par exemple une ligne 1 TPH (voir le dossier maître palm-oil-machinery/).
Référentiel industrie (Big 5 + classification générale)
| Échelle industrie | Plage TPH typique | Acteurs représentatifs |
|---|---|---|
| Petit moulin (small) | 1 - 5 TPH | Producteurs artisanaux et semi-industriels Afrique de l'Ouest et Centrale (Cameroun, Côte d'Ivoire, Nigeria) |
| Moyen moulin (medium) | 5 - 20 TPH | Acteurs régionaux ; cible long terme typique pour les tenants L3→L4 |
| Grand moulin (large) | 20+ TPH | Big 5 mondial : Sime Darby Plantation, Wilmar International, IOI Group, Golden Agri-Resources, FGV Holdings (60+ TPH typique) |
L'activation de la règle FFA 6h, du suivi POME (Palm Oil Mill Effluent), et des cibles de certification (certification_targets JSONB) sont contrôlées au niveau du tenant.
Golden Agri-Resources structure ses opérations en tiers similaires (smallholder / mécanisé / mill complete / sustainable). Le L4 Kaltiv représente le segment "RSPO Certified Mill" mais à une échelle adaptée au contexte africain (5 TPH par défaut, configurable jusqu'aux capacités industrielles).
2. Maturité des régimes (5 grades canoniques)
5 grades canoniques pour grader chaque FFB (Fresh Fruit Bunch) à la réception. Contrainte DB CHECK sur harvests.maturity_grade (text) :
| Grade | Label UI | Signification | Action recommandée |
|---|---|---|---|
pas_mur | "Pas mûr" | Régime vert / sous-mûr | Laisser mûrir, FFA bas mais huile insuffisante |
presque_mur | "Presque mûr" | Transition mûre | Laisser mûrir 24-48h |
mur | "Mûr" | Maturité optimale | Fenêtre de coupe idéale (cible) |
sur_mur | "Sur-mûr" | FFA monte rapidement | À traiter en priorité (moins de 6h) |
refuse | "Refusé" | Vert / pourri / non conforme | Bridge SKIP — n'incrémente PAS oil_production_records.input_quantity |
Une récolte avec maturity_grade = "refuse" est automatiquement écartée par le bridge atomique link_harvest_to_opr (Section 5). Sa quantité n'alimente PAS l'OPR. L'événement est tracé dans bridge_events pour audit. Le superviseur doit ensuite décider : rejeter le FFB ou reclasser avec justification.
Les 5 grades adoptent la convention Wilmar / Sime Darby (4-5 tier maturity SOP), avec le presque_mur aligné sur le standard malaisien pour permettre la traçabilité plantation→pressoir requise par RSPO.
3. Règle FFA 6h (Free Fatty Acids)
Le FFA (Free Fatty Acids, % d'acidité libre) est l'indicateur principal de fraîcheur de l'huile.
Biologie
Après la coupe (harvests.cutting_start), le FFA monte rapidement dans les FFB selon trois phases :
- 0 → 15 minutes : FFA stable (lipase activée mais pas encore productive)
- 15 minutes → 6 heures : montée linéaire (oxydation enzymatique)
- Au-delà de 6 heures : seuil critique — perte de prime qualité, passage en seuil "standard"
Mécanisme système
harvests.ffa_risk_hoursest calculé à l'enregistrement (différence entrecutting_startetreception_timestamp)- Un job pg_cron
ffa_timer_5h_scan(*/30 * * * *) émet une alerte 1 heure avant le seuil critique, donnant à l'équipe le temps de prioriser le pressage - La règle est togglable par tenant via
tenant_palm_oil_config.ffa_6h_rule_enabled(boolean)
Seuils prime / standard
Configurés par tenant :
tenant_palm_oil_config.ffa_premium_threshold(numeric, ex. 2.5%)tenant_palm_oil_config.ffa_standard_threshold(numeric, ex. 5.0%)
Au-dessus de ffa_standard_threshold, l'huile est déclassée en grade industriel (perte de marge ~25% du prix de marché).
La règle 6h vient du standard malaisien (Sime Darby Plantation / IOI Group) et est codifiée dans RSPO Principles & Criteria v4 (Indicator 4.2.3). Au-delà de 6h, la traçabilité RSPO est rompue : l'huile ne peut plus être vendue comme "RSPO Certified".
4. Réception au pressoir
Dans Production huile de palme → Production → Transport Récolte, chaque transport présente sa réception et l’état du délai FFA.
- Saisissez l’heure d’arrivée, à la seconde, dans le fuseau du site affiché. Le droit de modification Production est requis pour cette première saisie.
- Une réception ne peut être enregistrée qu’une fois par ce chemin. Une heure située plus d’une heure dans le futur est refusée.
- Une arrivée antérieure à la coupe est conservée avec un diagnostic, sans délai FFA confirmé ; elle ne devient pas un délai nul ou un badge rouge.
- Sans site actif unique et fuseau utilisable, la saisie reste indisponible. Une heure inexistante ou ambiguë lors d’un changement d’heure doit être corrigée ; elle n’est pas déplacée automatiquement.
- Seul un résultat confirmé et à jour affiche un délai. Une lecture périmée, indisponible ou un diagnostic ne vaut jamais zéro heure. Utilisez Actualiser pour relire les données.
Corriger une heure déjà enregistrée
Le droit d’approbation Production est requis. Cliquez sur Corriger la réception, indiquez une nouvelle heure et un motif de 1 à 500 caractères, puis confirmez. Le journal conserve votre identité, le motif et les heures avant/après. Effacer une réception ou confirmer la même heure n’est pas proposé.
En cas d’échec, le motif reste dans le formulaire tant que la même identité est active. Une erreur réseau peut survenir après l’enregistrement : relisez la réception avant de réessayer. Si la valeur a changé, fermez puis rouvrez le formulaire pour repartir de la valeur actuelle. Un changement d’utilisateur ou d’entreprise ferme le formulaire et efface sa saisie locale.
Le résumé des transports utilise le jour du site. Un message remplace les chiffres quand le fuseau ou la lecture ne sont pas disponibles.
5. Architecture du bridge atomique harvest → OPR
Le RPC link_harvest_to_opr(harvest_id, opr_id) est additif et idempotent (Architecture Rule R196).
Caractéristiques
- Une
oil_production_records(OPR) référence plusieurs récoltes vialinked_harvest_ids(ARRAY UUID) - Contrainte unique : la même récolte ne peut PAS être liée 2 fois à la même OPR (idempotency garantie)
- L'
input_quantityde l'OPR est incrémenté parharvests.quantity_kgà chaque appel - Récoltes
maturity_grade = "refuse"sont SKIP automatiquement (Section 2) - Sécurité : RPC
SECURITY INVOKER— respecte les politiques RLS du tenant courant
Cas d'usage typique
Sur une journée de pressage typique, plusieurs récoltes alimentent la même OPR :
- 7h : Parcelle A (matin, 1500 kg,
mur) → bridge ajoute à OPR du jour - 11h : Parcelle B (matin, 1200 kg,
sur_mur) → bridge ajoute (priorité FFA) - 14h : Parcelle E (après-midi, 800 kg,
refuse) → bridge SKIP - 16h : Parcelle F (après-midi, 1100 kg,
mur) → bridge ajoute
Total OPR : 3800 kg input_quantity (1500 + 1200 + 1100). La parcelle E est tracée mais NE compte PAS.
Idempotency
Si l'opérateur clique "Lier" 2 fois pour la même récolte, la quantité n'est PAS doublée — le bridge détecte le doublon via linked_harvest_ids @> ARRAY[harvest_id] et retourne was_idempotent = true.
Cross-références ERP
- 💰 OER → Revenue : voir Comptabilité OHADA — l'OER (
oil_production_records.efficiency_ratio) alimente les ventes et le compte 70 (Ventes) - 📊 Gemba sur FFB grading : voir Excellence Opérationnelle (Lean) — la qualité des récoltes alimente les indicateurs PDCA et les rituels QRQC
- 🤖 Triggers proactifs KONA : voir Conseiller IA — alertes automatiques quand un FFB approche du seuil 6h FFA, suggestions de priorisation
- 🌱 Récoltes amont : voir Référentiel Agriculture — pour les parcelles alimentant la chaîne de pressage
Référentiel Big 5 (industrie sectorielle)
| Acteur | Apport adopté |
|---|---|
| Wilmar International | Standard 4-5 tier maturité, traçabilité plantation→pressoir |
| Sime Darby Plantation | RSPO Principles & Criteria v4 implémentation, ligne de presse 1 TPH+ |
| IOI Group | Règle 6h FFA biologique, intégration verticale plantation→raffinage |
| Golden Agri-Resources | Modèle L1-L4 maturité opérationnelle (artisanal → industriel) |
| FGV Holdings | Workflow mill-floor reception checkpoint (truck → scan → grade) |
Certification cible : RSPO à L4. Roadmap interne disponible dans palm-oil-machinery/docs/roadmap_certifications.md (étape 4 : Année 3+, durée 12-18 mois, prime de marché +15-25%).
FAQ
Q : Pourquoi le grade refuse bloque-t-il le bridge ?
R : Pour préserver l'intégrité des KPIs OER (Oil Extraction Rate). Si une récolte refusée alimentait input_quantity, l'efficiency_ratio serait artificiellement diminué (l'huile produite est divisée par une masse FFB sur-estimée). Le grade refuse est tracé dans bridge_events pour audit qualité, mais n'entre pas dans le calcul OER.
Q : Comment activer ou désactiver la règle 6h FFA ?
R : Paramètres → Configuration module → toggle Activer la règle 6h FFA (tenant_palm_oil_config.ffa_6h_rule_enabled). Quand désactivée, le pg_cron ffa_timer_5h_scan n'émet pas d'alertes pour ce tenant. Utile pour les phases pilotes ou les niveaux L1 sans pressoir mécanisé.
Q : Plusieurs récoltes par jour pour la même OPR ?
R : Oui, le bridge est additif (Section 5). L'OPR du jour accumule les FFB de plusieurs parcelles dans linked_harvest_ids. Cas typique : 3-5 récoltes par jour pendant la haute saison.
Q : Que se passe-t-il si input_quantity = 0 ?
R : Le trigger trg_compute_oer qui calcule l'efficiency_ratio ne se déclenche pas (division par zéro évitée). Le diagnostic le plus fréquent : aucune récolte n'a été liée à l'OPR via le bridge. Vérifier linked_harvest_ids — si vide, ajouter manuellement les récoltes du jour via le formulaire OPR.
Q : KONA peut-il répondre à mes questions sur ce module ?
R : Oui, depuis la version v68 du Conseiller IA (FOF-936), KONA dispose d'un domaine dédié palm_oil_production qui répond aux questions sur les grades de maturité, la règle FFA 6h, le workflow réception, le bridge atomique, et les équipements M1-M6. Demandez par exemple : "Qu'est-ce que la maturité sur_mur ?" ou "Comment activer la règle 6h FFA ?"
Roadmap
Phase 3 (planifié — FOF-904)
- 5-test qualité huile : saisie UI + dashboard
- FFA (Free Fatty Acids, %)
- Humidité (%)
- Impuretés (%)
- Couleur (Lovibond R/Y)
- Densité (kg/m³)
- Dashboard POME (Palm Oil Mill Effluent) : suivi environnemental + déclaration autorité
Phase 4 (RSPO compliance — Année 3+)
- Audit RSPO Gap Assessment
- Traçabilité plantation→pressoir complète (28 parcelles A-Z trackées)
- Mise en place ligne RSPO Certified Sustainable Palm Oil (CSPO)
- Prime de marché ciblée : +15 à +25% du prix de référence
Module documenté dans le cadre de l'EPIC FOF-927 (Help Ecosystem Sync — maturity grade + FFA timer + reception). Mis à jour : 2026-05-08.