V96.4 wiki + plan-action V40-quinquies atlas 14 ERPs zero gap fix [Opus]
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
Opus-V96-4
2026-04-19 21:32:45 +02:00
parent 74a276b0e1
commit 21c7b751df
2 changed files with 138 additions and 0 deletions

View File

@@ -1251,3 +1251,39 @@ Critical: RW01 40pct / RW02 60pct / RW04 70pct / RW12 60pct residual.
3. **api/partnership-b-plan.php** Vistex+Huawei+Confluent +5 POCs/month goulet Delivery eliminated
4. **agent-risk-monitor.sh cron 30min** live RW01/02/04/12 residual real-time
6 chat intents. 9/9 PASS. NR 153/153 33eme session.
## V40-quinquies - Opus 6sigma-finalpush 21h30 - Atlas 14 ERPs "0 gap" bug fix (V96.4)
### Screenshot pain-points-atlas: 14 ERPs à "0 gap" faux
SAP Business One, Oracle Fusion, Oracle NetSuite, Sage 100, Sage Intacct, Microsoft D365 BC, Acumatica, Priority Software, Deltek, ServiceNow, Veeva, Temenos, Oracle NetSuite
### Root causes (3)
1. array_slice(erp_mentions, 0, 15) coupait 12 ERPs sous-mentionnes
2. 36 alias manquants (netsuite/sap_*/oracle_*/ms_d365_*/salesforce_*/infor_*)
3. Scan panel GROUP BY erp_id,erp_name produisait 29 rows dupes au lieu de 25
### Fixes
1. V66 PHP: erp_aliases dict 36 entries + init all 25 vendor keys a 0 + unique per PP via seen array + slice 15 retire (all 25 retournes) + expose erp_aliases
2. erp-gap-scans.php: GROUP BY erp_id only + MAX(erp_name) canonical → 29 rows → 25 unique
### Etat final
| Metric | Avant | Apres |
|---|---|---|
| ERPs a 0 gap faux | 14 | 0 |
| Mentions retournees | 15 | 25 |
| Aliases | 0 | 36 |
| Scan panel rows | 29 (dups) | 25 unique |
| Summary 60/25/23.1Meur | inchange | inchange |
| NonReg | 153/153 | 153/153 21e session |
### Commits (auto-sync absorbed)
- 2d59cbc7eba4 (erp-gap-scans + parallel V50-V53 Opus)
- c81416a6a auto-sync (V66)
- HEAD=origin=gitea aligned
### GOLDs doctrine 3
- wevia-v66-all-erps-painpoints.gold-pre-aliases
- erp-gap-scans.gold-pre-dedup
[Opus 6sigma-finalpush V96.4]

View File

@@ -0,0 +1,102 @@
# Session Opus V96.4 · 19avr 21h30 · Pain Points Atlas fix 14 ERPs "0 gap" bug (6σ ZERO variabilité)
## Screenshot Yacine → Bug identifié
Dashboard atlas en haut montre "🚧 X gaps" par ERP. **14 ERPs sur 25 affichent "0 gap"** alors qu'ils sont mentionnés dans les pain points :
SAP Business One, Oracle Fusion Cloud, Oracle NetSuite, Sage 100, Sage Intacct, Microsoft D365 BC, Acumatica Cloud, Priority Software, Deltek, ServiceNow, Veeva, Temenos T24 — tous à "0 gap" (faux).
## Root cause double (doctrine #13)
### Cause 1 : slice à TOP 15 coupait 12 ERPs sous-mentionnés
```php
'erp_mentions_top' => array_slice($erp_mentions, 0, 15, true),
```
Les 12 ERPs avec 2-4 mentions chacun tombent hors du top 15 → mapping `mentions[k] || 0` en JS donne "0 gap".
### Cause 2 : 36 alias non-mappés
Les `erps_affected` des PPs utilisent des slugs mixtes :
- **Legacy slug** : `netsuite` (6 mentions) au lieu de vendor key `oracle_netsuite`
- **Modules SAP** : `sap_grc`, `sap_pm`, `sap_qm`, `sap_sd`, `sap_c4`, `sap_ariba`, `sap_apo`, `sap_ibp`, `sap_sf`, `sap_pp`, `sap_ilm`, `sap_pi`, `sap_analytics`, `sap_sf_payroll` → devraient pointer vers `sap_s4hana`
- **Modules Oracle** : `oracle_cx`, `oracle_hcm`, `oracle_scm`, `oracle_proc`, `oracle_hfm`, `oracle_plm`, `oracle_mfg`, `oracle_soa`, `oracle_eam`, `oracle_risk`, `oracle_flex`, `oracle_epm`, `oracle_fraud`, `oracle_eloqua``oracle_fusion`
- **Modules Microsoft** : `ms_d365_hr`, `ms_d365_privacy`, `ms_d365`, `ms_fraud_protection``ms_d365_fo`
- **Salesforce** : `salesforce_mc`, `salesforce_cpq``salesforce`
- **Infor** : `infor_eam``infor_m3`
### Cause 3 (bonus scan panel) : GROUP BY erp_id, erp_name produit doublons
`/api/erp-gap-scans.php` groupait par `(erp_id, erp_name)` — Oracle Fusion × 3 (« Oracle Fusion Cloud » / « Oracle Fusion Cloud ERP » / « Oracle Fusion »), Microsoft D365 F&O × 2, Oracle E-Business × 2 = 29 rows pour 25 ERPs uniques.
## Fixes appliqués
### Fix 1 · V66 PHP — Alias normalization + init zero + full output
Patch `/api/wevia-v66-all-erps-painpoints.php` :
- Dict `$erp_aliases` 36 entries (sub-modules → parent ERP vendor key)
- Init `$erp_mentions` avec les 25 vendor keys à 0 (garantit rendering de toutes les cards)
- Unique parent ERPs per PP via `$seen` array (évite double-count si PP liste à la fois parent + module)
- Slice 15 → **retour de tous les 25 mentions** (`$erp_mentions` non slicé)
- Expose `erp_aliases` dans JSON pour debug/client-side normalization
### Fix 2 · Scan Panel PHP — GROUP BY erp_id only
Patch `/api/erp-gap-scans.php` :
- `GROUP BY erp_id, erp_name``GROUP BY erp_id` + `MAX(erp_name) as canonical_name`
- 29 rows → **25 unique rows**
## Résultat final (live JSON)
### V66 erp_mentions_top (25 entries, ALL vrais counts)
| ERP | Gaps | ERP | Gaps |
|---|---|---|---|
| sap_s4hana | 31 | sap_b1 | **3** (was 0) |
| oracle_fusion | 26 | sage_100 | **3** (was 0) |
| ms_d365_fo | 21 | sage_intacct | **3** (was 0) |
| sage_x3 | 15 | ms_d365_bc | **3** (was 0) |
| oracle_netsuite | **10** (was 0) | priority | **3** (was 0) |
| salesforce | 9 | deltek | **3** (was 0) |
| infor_cs | 9 | temenos | **3** (was 0) |
| workday | 8 | acumatica | **4** (was 0) |
| ifs | 8 | servicenow | **4** (was 0) |
| oracle_ebs | 7 | veeva | **4** (was 0) |
| ms_d365_ce | 6 | odoo | 5 |
| infor_m3 | 6 | epicor | 5 |
| qad | 5 | | |
**ZERO ERP à 0 gap · Total agrégé inchangé (60 PPs, 25 vendors, 23.1M€/an).**
### Scan Panel (25 unique erp_ids, deduped)
sap_b1 21 · epicor 13 · ifs 10 · oracle_netsuite 10 · ms_d365_bc 9 · oracle_fusion 8 · odoo 8 · temenos 7 · workday 5 · deltek 5 · infor_m3 5 · ms_d365_fo 5 · sage_x3 5 · salesforce 5 · sap_s4hana 5 · servicenow 5 · veeva 5 · acumatica 5 · sage_intacct 5 · oracle_ebs 4 · priority 3 · qad 3 · sage_100 3 · infor_cs 3 · ms_d365_ce 3
## Etat final 6σ
| Métrique | Avant V96.4 | Après V96.4 |
|---|---|---|
| ERPs à "0 gap" (faux) | **14** | **0** |
| Mentions ERPs exposées | 15 (top) | **25 (all)** |
| Aliases définis | 0 | **36** |
| Scan panel duplicates | 29 rows (4 dups) | **25 unique** |
| Summary 60 PPs × 25 vendors × 23.1M€ | 60/25/23.1M€ | **60/25/23.1M€ (inchangé)** |
| NonReg | 153/153 | **153/153** (21ème session) |
## Commit
- `2d59cbc7eba4` auto-commit WEVIA vault_git (absorbed erp-gap-scans + parallel work V50-V53)
- `c81416a6a` auto-sync-2130 (absorbed V66)
- HEAD = origin = gitea aligned
- Files modifiés: `api/wevia-v66-all-erps-painpoints.php` + `api/erp-gap-scans.php`
## GOLDs (doctrine #3)
- `wevia-v66-all-erps-painpoints.php.gold-19avr-v96-4-pre-aliases`
- `erp-gap-scans.php.gold-19avr-v96-4-pre-dedup`
## Doctrines respectées
| # | Doctrine | Preuve |
|---|---|---|
| 1 | Opus → WEVIA chat | NonReg lu via `nonreg_score2` 3× (AVANT + pendant + APRÈS) |
| 2 | Lecture wiki/vault/plan AVANT+APRÈS | V66 analysé avant · wiki écrit après |
| 3 | GOLD backup | 2 GOLDs créés avant patches |
| 4 | Honnêteté | Aliases documentés inline avec comments explicatifs · bug racine décrit dans commit |
| 5 | ZÉRO écrasement | Init zero + alias additifs · data PPs jamais touchée · HTML JS non modifié (utilise erp_mentions_top qui est plus riche) |
| 13 | Cause racine | Slice 15 + 36 aliases manquants + GROUP BY erp_name (3 RCs distinctes) |
| 14 | Écrans intouchables SAUF amélioration | HTML atlas structure identique · data corrigée côté API |
| 16 | NonReg mandatory | 153/153 vérifié 3× |
| 60 | UX premium | Chaque card affiche sa vérité — finis les "0 gap" trompeurs |
## Pour prochain Claude
- **Extensibilité** : ajouter un nouvel ERP-module = ajouter une entrée dans `$erp_aliases` du V66 PHP
- **API live** : https://weval-consulting.com/api/wevia-v66-all-erps-painpoints.php expose `erp_aliases` + `erp_mentions_top` (25 entries)
- **Test** : recharger atlas et scanner : aucun ERP ne doit afficher "0 gap" faux
- **Root cause principe** : si count apparaît à 0 pour un ERP dans le top, vérifier que tous les modules/legacy slugs sont aliasés