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
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. Workflow réception au pressoir
Lorsqu'un camion arrive au pressoir, l'opérateur exécute le workflow suivant :
- Ouvrir le module Production → onglet Transport
- Sélectionner l'entrée
harvest_transport_entriescorrespondant au numéro de bon de transport - Renseigner le champ Heure d'arrivée (
reception_timestamp) - Le bridge calcule automatiquement
harvests.ffa_risk_hours = reception_timestamp - cutting_start - Un badge couleur s'affiche selon le seuil dépassé :
- 🟢 Vert : moins de 5h (zone optimale)
- 🟡 Jaune : 5h à 6h (zone d'alerte — pressage prioritaire)
- 🔴 Rouge : plus de 6h (seuil critique, déclassement standard)
- Si
maturity_grade = "refuse"→ l'opérateur peut rejeter le FFB ou demander reclassement avec justification écrite
Validation timestamp
Le reception_timestamp est clampé entre harvests.cutting_start et NOW() + 1h pour éviter les saisies aberrantes (timestamp passé impossible, futur lointain bloqué).
Captures d'écran à venir dans docs-site/static/img/palm-oil/ : Transport tab → reception flow → badge couleur.
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.