Pular para o conteúdo principal
PDGRHSuperviseur

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

Données d'exemple (tenant test-import)

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) :

NiveauCapacité par défautOER attenduÉquipements typiquesCertification
L1 Artisanal0.1 TPH (100 kg/h)12-13%Pressoir manuel, cuves boisAucune
L2 Semi-mécanisé0.5 TPH (500 kg/h)14-15%Cuiseur + presse à vis motoriséeOptionnelle 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 Industriel5.0 TPH20-23%Multi-ligne + traçabilité plantation→pressoir totaleRSPO Principles & Criteria v4 obligatoire
Capacité TPH = tenant-configurable

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 industriePlage TPH typiqueActeurs représentatifs
Petit moulin (small)1 - 5 TPHProducteurs artisanaux et semi-industriels Afrique de l'Ouest et Centrale (Cameroun, Côte d'Ivoire, Nigeria)
Moyen moulin (medium)5 - 20 TPHActeurs régionaux ; cible long terme typique pour les tenants L3→L4
Grand moulin (large)20+ TPHBig 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.

Référence Big 5

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) :

GradeLabel UISignificationAction recommandée
pas_mur"Pas mûr"Régime vert / sous-mûrLaisser mûrir, FFA bas mais huile insuffisante
presque_mur"Presque mûr"Transition mûreLaisser mûrir 24-48h
mur"Mûr"Maturité optimaleFenê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 conformeBridge SKIP — n'incrémente PAS oil_production_records.input_quantity
Comportement bridge sur "refuse"

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.

Référence Big 5

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 :

  1. 0 → 15 minutes : FFA stable (lipase activée mais pas encore productive)
  2. 15 minutes → 6 heures : montée linéaire (oxydation enzymatique)
  3. Au-delà de 6 heures : seuil critique — perte de prime qualité, passage en seuil "standard"

Mécanisme système

  • harvests.ffa_risk_hours est calculé à l'enregistrement (différence entre cutting_start et reception_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é).

Référence Big 5 + RSPO

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 :

  1. Ouvrir le module Production → onglet Transport
  2. Sélectionner l'entrée harvest_transport_entries correspondant au numéro de bon de transport
  3. Renseigner le champ Heure d'arrivée (reception_timestamp)
  4. Le bridge calcule automatiquement harvests.ffa_risk_hours = reception_timestamp - cutting_start
  5. 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)
  6. 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 via linked_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_quantity de l'OPR est incrémenté par harvests.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)

ActeurApport adopté
Wilmar InternationalStandard 4-5 tier maturité, traçabilité plantation→pressoir
Sime Darby PlantationRSPO Principles & Criteria v4 implémentation, ligne de presse 1 TPH+
IOI GroupRègle 6h FFA biologique, intégration verticale plantation→raffinage
Golden Agri-ResourcesModèle L1-L4 maturité opérationnelle (artisanal → industriel)
FGV HoldingsWorkflow 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.