From 61a2f1000f5eb7ce350c937f748d47eaebbf9211 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Tue, 7 Jul 2026 11:19:29 -0400 Subject: [PATCH] =?UTF-8?q?planif:=20efficacit=C3=A9=20GLOBALE=20en=20%=20?= =?UTF-8?q?intuitif=20(haut=20=3D=20plus=20rapide),=20coh=C3=A9rent=20avec?= =?UTF-8?q?=20le=20per-skill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le champ « Cadence » global était un FACTEUR brut (step 0.05, bas=rapide) → taper 1000 = facteur 1000 = catastrophiquement lent. Passé en % via effPctOf/factorFromPct (100/x) : 1000 % = facteur 0.1 = 10× plus rapide, 90 % = plus lent. Renommé « Efficacité % » + tooltip. Le per-skill était déjà en % (inchangé). NB : l'efficacité n'influe que sur les stratégies heuristiques (Intelligent/Meilleurs/Équilibré/Juste-ce-qu'il-faut), PAS sur « Optimiser » (VRP OR-Tools) qui optimise routes+compétences+capacité sans facteur d'efficacité. Co-Authored-By: Claude Opus 4.8 --- apps/ops/src/pages/PlanificationPage.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/ops/src/pages/PlanificationPage.vue b/apps/ops/src/pages/PlanificationPage.vue index b027bc0..11f040d 100644 --- a/apps/ops/src/pages/PlanificationPage.vue +++ b/apps/ops/src/pages/PlanificationPage.vue @@ -675,12 +675,12 @@
Cadence : 1.00 normal · 1.10 = +10 % (plus lent) · 0.90 = −10 % (plus rapide). Coût chargé/h = salaire × (1 + charges %) + autres (véhicule, outils, frais). Le solveur préfère les techs rapides et moins coûteux.
- + - + @@ -2681,6 +2681,9 @@ function skillEffOf (t, sk) { const e = t.skill_eff && t.skill_eff[sk]; return ( // CADENCE en % : 100 = normal · 200 = deux fois plus de jobs (moitié du temps) · <100 = plus lent. Interne = FACTEUR de durée (200 %→0.5). function effPctOf (factor) { const f = Number(factor) || 1; return Math.round(100 / (f > 0 ? f : 1)) } function factorFromPct (pct) { const p = Number(pct) || 100; const f = 100 / (p > 0 ? p : 100); return Math.max(0.1, Math.min(5, Math.round(f * 100) / 100)) } // cap 20 %–1000 % +// Efficacité GLOBALE saisie en % (haut = plus rapide, comme le per-skill) — tampon pour ne pas se battre avec la frappe. +const gEffBuf = reactive({}) +function commitGEff (t) { if (!(t.id in gEffBuf)) return; const v = gEffBuf[t.id]; delete gEffBuf[t.id]; t.efficiency = factorFromPct(v); saveEff(t) } function skillEffPct (t, sk) { const e = t.skill_eff && t.skill_eff[sk]; return (e != null && e !== '') ? effPctOf(e) : '' } // '' = hérite de la globale function setSkillEffPct (t, sk, pct) { const m = { ...(t.skill_eff || {}) }; if (pct === '' || pct == null) delete m[sk]; else m[sk] = factorFromPct(pct); t.skill_eff = m; queueSkillSave(t) } // libre (ex. +80) // Saisie efficacité : tampon local pendant l'édition (pas de debounce qui perdait la valeur au blur) → commit sur blur/Entrée.
TechnicienCompétencesCadenceSalaire/hCharges %Autres/hCoût chargé/h
TechnicienCompétencesEfficacité %Salaire/hCharges %Autres/hCoût chargé/h
{{ t.name }}{{ t.group }} 100 % = cadence normale · PLUS HAUT = plus rapide (fait plus de jobs). Ex. 300 % = 3× plus rapide · 60 % = plus lent.