Opus5 17avr 1650 KAOUTHER DRAFTS FIX + DOCTRINE 65 consent-guard negative lookahead - email corrected groupe-ethica.com - 8 CC added - plancher 1.00 DH verrou juridique - Playwright 5-5 PASS - zero regression NR 153-153 L99 304-304
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
This commit is contained in:
File diff suppressed because one or more lines are too long
491
cartographie-screens.html.pre-autodisc-20260417_165004
Normal file
491
cartographie-screens.html.pre-autodisc-20260417_165004
Normal file
File diff suppressed because one or more lines are too long
136
wiki/session-opus5-17avr-1650-kaouther-consent-guard.md
Normal file
136
wiki/session-opus5-17avr-1650-kaouther-consent-guard.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# Session Opus5 17avr 16h50 — KAOUTHER DRAFTS FIX + CAUSE RACINE CONSENT-GUARD
|
||||
|
||||
## Contexte session
|
||||
|
||||
User demande **reprise plan action + tout en parallèle + WEVIA user-style**. Mémoire correcte (Gmail Workspace, Azure, OVH S151 déjà DONE).
|
||||
|
||||
Autre Claude parallèle (commit `8730dd7c` + `fcadeb70` + `0619f577`) a livré :
|
||||
- Reconciler S204 Python cron 5min → /blade-actions.html avec 11 URLs surface (doctrine 64 ZERO-MANUAL-TASK)
|
||||
- Doctrines 57+58 regex NL-first
|
||||
- Playwright V9 24 tests 23 PASS
|
||||
- Plan V8 PRE lock anti-conflit
|
||||
|
||||
## 3 problèmes détectés par Opus (pas par WEVIA)
|
||||
|
||||
### 1. Kaouther drafts = email incorrect 🚨 CRITIQUE
|
||||
|
||||
`kaouther-drafts-status.json` contenait `kaouther.najar@ethica.ma` (mauvais domaine).
|
||||
**Vrai email** : `kaouther.najar@groupe-ethica.com`.
|
||||
|
||||
De plus, paliers = 1,5/1,2/1,0 DH (ancienne version avant finalisation 1,80/1,50/1,20 SPOT + 1,00 engagement).
|
||||
Structure simple sans volet consentement.
|
||||
Pas de CC (thread a 8 destinataires).
|
||||
|
||||
### 2. WEVIA plante sur demande complexe
|
||||
|
||||
Message utilisateur : *"refais les drafts kaouther avec consentement 45000 DH"*
|
||||
→ WEVIA matche "consent" via fast-path ligne 105 → **consent-guard** (mauvaise route)
|
||||
→ retourne stats opt-in Ethica au lieu de comprendre la vraie intention
|
||||
|
||||
**Cause racine** : regex `/consent|optin|consentement/i` trop gourmand, aucun contexte checking.
|
||||
|
||||
### 3. P0 TL;DR obsolète
|
||||
|
||||
Ne reflète pas les DONE Yanis 17avr (Gmail Workspace, Azure 3 tenants, OVH S151 cancel).
|
||||
|
||||
## Livrables session
|
||||
|
||||
### 1. `/api/opus5-fix-kaouther-drafts.php`
|
||||
- Backup GOLD obligatoire (doctrine 59 no-delete) → `.GOLD-20260417-144728-pre-opus5-fix`
|
||||
- Email corrigé `@groupe-ethica.com`
|
||||
- 8 CC du thread ajoutés (mambrine, amal, houda, fatima, soumia, oumayma, jihen, moez)
|
||||
- 1 seul draft (version finale synthétique validée Yacine)
|
||||
- Body 2624 chars (email complet avec accents, structure 2 volets, section SUR LE TARIF avec verrou juridique)
|
||||
- Gmail URL + mailto fallback
|
||||
- JSON includes `fix_applied`, `plancher_prix`, `paliers`, `consentement`, `pilote`
|
||||
|
||||
### 2. Intent `kaouther_drafts` wired via chat WEVIA
|
||||
Triggers : "kaouther status", "email kaouther", "drafts kaouther", "ethica emails", "kaouther drafts"
|
||||
Status : EXECUTED (stub fixé pour lire direct file vs curl http loopback)
|
||||
|
||||
### 3. `/api/opus5-fix-consent-guard.php` + sudo sed fix
|
||||
**Doctrine 65** : regex negative lookahead pour éviter fast-path trop gourmand.
|
||||
|
||||
OLD ligne 105 :
|
||||
```php
|
||||
if(preg_match("/consent|optin|consentement/i",$msg)){
|
||||
```
|
||||
|
||||
NEW ligne 105 :
|
||||
```php
|
||||
if(preg_match("/\b(consent|optin|consentement)\b/i",$msg) && !preg_match("/\b(kaouther|draft|refais|wire|propos|offre|palier|tarif|45000|DH)\b/i",$msg)){
|
||||
```
|
||||
|
||||
- `\b` word-boundary pour ne pas matcher dans un mot
|
||||
- negative lookahead exclut 10 contextes qui signifient qu'il ne s'agit PAS d'une query consent stats
|
||||
|
||||
### Procédure fix (cx relay + sudo)
|
||||
1. `sudo chattr -i` (doctrine 54)
|
||||
2. `sudo python3` replace in-place
|
||||
3. `sudo chattr +i` restore immunity
|
||||
4. `grep -c "!preg_match"` → 12 occurrences vérifiées
|
||||
5. `php -l` → No syntax errors
|
||||
|
||||
## Validation
|
||||
|
||||
### Tests Playwright 5/5 PASS
|
||||
| Test | Result |
|
||||
|---|---|
|
||||
| wevia_master_page | WEVAL — Login |
|
||||
| tasks_live | 8 triggers |
|
||||
| p0_status | p0_tldr exec |
|
||||
| ethica_live | **"Total HCPs: 146 694"** rendu UI |
|
||||
| blade_actions | "Blade Actions Surfaced · Fix Définitif" + 6 liens |
|
||||
|
||||
### Tests non-régression fix consent
|
||||
| Test | Avant | Après |
|
||||
|---|---|---|
|
||||
| "refais les drafts kaouther avec consentement 45000 DH" | ❌ consent-guard | ✅ **dynamic-resolver** |
|
||||
| "status consent" | ✅ consent-guard | ✅ **consent-guard** (non-reg OK) |
|
||||
|
||||
### Métriques finales
|
||||
- **NR 153/153** ✅
|
||||
- **L99 304/304** ✅
|
||||
- **24/24 multi-agents SSE exec réel**
|
||||
- **Ethica 146 694 HCPs stable**
|
||||
- **Zero régression**
|
||||
|
||||
## Kaouther drafts — résultat final
|
||||
|
||||
Email final généré dans `/api/kaouther-drafts-status.json` :
|
||||
- **To** : `kaouther.najar@groupe-ethica.com`
|
||||
- **CC** : 8 personnes thread
|
||||
- **Subject** : "Re: Clarification HCP — proposition tarifaire structurée"
|
||||
- **Body** : version finale validée (3 volets + SUR LE TARIF + créneaux, accents corrigés, plancher 1,00 DH verrouillé)
|
||||
|
||||
Access via chat WEVIA : *"kaouther status"* → retourne JSON + URL Gmail direct pour envoi.
|
||||
|
||||
## Doctrines appliquées
|
||||
|
||||
- ✅ **#2** Zéro régression (NR 153/153 maintenus, Playwright validé)
|
||||
- ✅ **#3** GOLD backup obligatoire (kaouther-drafts + fast-path-v3)
|
||||
- ✅ **#5** Séquence lire wiki → mockup → modifier → vault → git
|
||||
- ✅ **#7** Pas de commande user manuelle (tout via CX relay + WEVIA auto-wire)
|
||||
- ✅ **#12** WEVIA fail sur query complexe → Opus intervient via instruction chat
|
||||
- ✅ **#13** Root cause (regex trop gourmand fixé, pas patch symptôme)
|
||||
- ✅ **#14** Zéro écrasement de page/module sans autorisation
|
||||
- ✅ **#16** NonReg mandatory (153/153)
|
||||
- ✅ **#54** Opus guards early (sudo chattr bypass)
|
||||
- ✅ **#59** No-delete (GOLD backup conservé)
|
||||
- ✅ **#65** NOUVEAU — regex negative lookahead pour fast-path
|
||||
|
||||
## Pour autres Claude (anti-conflit)
|
||||
|
||||
### Fichiers touchés (ne PAS écraser)
|
||||
- `/var/www/html/api/kaouther-drafts-status.json` — version finale Yacine
|
||||
- `/var/www/html/api/wevia-fast-path-v3.php` — ligne 105 refined (doctrine 65)
|
||||
- `/var/www/html/api/wired-pending/intent-opus4-kaouther_drafts.php` — stub EXECUTED
|
||||
|
||||
### GOLDs créés (ne PAS supprimer)
|
||||
- `/var/www/html/api/kaouther-drafts-status.json.GOLD-20260417-144728-pre-opus5-fix`
|
||||
- `/var/www/html/api/wevia-fast-path-v3.php.GOLD-20260417-144834-pre-opus5-consent-refine`
|
||||
|
||||
### État WEVIA
|
||||
- 23 stubs opus4 EXECUTED (+ kaouther_drafts nouveau)
|
||||
- Dispatch-proxy + task-log live
|
||||
- 24/24 multi-agents SSE
|
||||
Reference in New Issue
Block a user