53 lines
2.3 KiB
PHP
53 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* WEVIA NL NORMALIZER — V26-SURGICAL · Opus · 17 avril 2026 17h50
|
|
*
|
|
* Doctrine 72 (ex-71) respectée : fix chirurgical 1 ligne ajoutée dans master-api.php (pas modification)
|
|
* Doctrine 63 : non destructif, fichier séparé loadé avant OPUS_BUSINESS_COUNT_GUARD
|
|
*
|
|
* Fix : "combien j'ai de leads" avec apostrophe/espace → normalise vers "combien leads"
|
|
*
|
|
* Problème originel (ligne 322 master-api.php, auteur Opus5) :
|
|
* preg_match('/\b(?:combien|nombre)\s+(?:de\s+|d\'|of\s+)?([a-z_]+)/iu', ...)
|
|
* capture le premier token après "combien" → "j'ai" au lieu de "leads"
|
|
*
|
|
* Solution NL normalizer : normalise $_mam (message) en supprimant les intercalaires
|
|
* "j'ai/jai/j ai/nous avons/tu as/mon/mes/de mes..." → ""
|
|
*
|
|
* Tests : "combien j'ai de leads" → "combien leads" → route count_business_real OK
|
|
*/
|
|
|
|
if (!empty($_mam) && is_string($_mam)) {
|
|
$__orig = $_mam;
|
|
|
|
// Patterns à normaliser (ordre important: plus spécifique d'abord)
|
|
$__patterns = [
|
|
// Possessifs + auxiliaires entre "combien" et entité
|
|
'/\b(combien|nombre|count|total|quantit[eé])\s+(?:j[\' ]?ai|jai|nous\s+avons|tu\s+as|on\s+a|il\s+y\s+a|vous\s+avez)\s+(?:de\s+|des\s+|du\s+|d[\' ]\s*)?\b/iu' => '$1 ',
|
|
// "j'ai combien de X" → "combien X"
|
|
'/\bj[\' ]?ai\s+(combien|nombre|total)\s+(?:de\s+|des\s+|du\s+|d[\' ])?\b/iu' => '$1 ',
|
|
// "mes/mon/ma X" entre combien et entité
|
|
'/\b(combien|nombre|total|quantit[eé])\s+(?:de\s+|des\s+)?(?:mes|mon|ma|mon\s+pipeline|mes\s+actuels?)\s+\b/iu' => '$1 ',
|
|
// Articles résiduels
|
|
'/\b(combien|nombre|total)\s+(?:de\s+|des\s+|du\s+|d[\' ])\s+\b/iu' => '$1 ',
|
|
];
|
|
|
|
$__normalized = $__orig;
|
|
foreach ($__patterns as $__pat => $__rep) {
|
|
$__normalized = preg_replace($__pat, $__rep, $__normalized);
|
|
}
|
|
|
|
// Si normalisation a changé quelque chose, update $_mam pour le bloc suivant
|
|
if ($__normalized !== $__orig) {
|
|
// Log pour audit trail
|
|
@file_put_contents(
|
|
'/var/log/weval/wevia-nl-normalizer.log',
|
|
date('c') . " NORMALIZED: '$__orig' → '$__normalized'\n",
|
|
FILE_APPEND | LOCK_EX
|
|
);
|
|
$_mam = $__normalized;
|
|
// $_wm aussi (shared global)
|
|
if (isset($_wm)) $_wm = $__normalized;
|
|
}
|
|
}
|