diff --git a/partners-emails-gen.py b/partners-emails-gen.py new file mode 100755 index 000000000..b3a3dedff --- /dev/null +++ b/partners-emails-gen.py @@ -0,0 +1,105 @@ +"""Génère drafts partenaires Gmail compose URLs""" +import json, urllib.parse, datetime + +partners = [ + { + "id": "vistex_olga", + "name": "Vistex — Olga Bornescu", + "to": "olga.bornescu@vistex.com", + "subject": "WEVAL x Vistex — Partenariat dealer incentives pharma MENA", + "body": """Bonjour Olga, + +Suite à notre échange, je formalise une proposition Vistex x WEVAL. + +CONTEXTE WEVAL (MENA pharma & B2B): +- Stack souverain Maroc: 3 serveurs CF+nginx+PG+Ollama+9 IA providers (Groq/Cerebras/SambaNova), 0€ AI +- Base HCPs pharma validée: 146 694 (DZ 107K / MA 20K / TN 18K), 110K emails, 141K téléphones +- DNS SPF+DKIM+DMARC opérationnel wevup.app (CF zone live) +- 37 836 companies B2B + 61 812 contacts (sources PwC+Kompass+SAP+Procurement) +- 60K contacts classifiés par industrie (Gov/Finance/Retail/Mfg/Pharma/Energy) + +PROPOSITION VISTEX PARTNERSHIP: +1. Intégration Vistex CDP ↔ WEVAL base HCPs MENA pour dealer incentives programs pharma +2. White-label campagnes email/WhatsApp/SMS souveraines Maroc pour clients Vistex +3. Revenue share 30/70 ou forfait mensuel selon volume + +Disponible 30min call cette semaine. + +Bien cordialement, +Yacine Mahboub · CEO WEVAL Consulting +ymahboub@weval-consulting.com""" + }, + { + "id": "huawei_ray", + "name": "Huawei Cloud — Ray Wu", + "to": "ray.wu@huawei.com", + "subject": "WEVAL MENA — Cloud souverain + AI platform for Huawei Cloud partners", + "body": """Bonjour Ray, + +Suite à notre discussion Huawei Cloud MENA, voici WEVAL Consulting. + +POSITIONNEMENT: +- Consulting ERP/SAP/Cloud/Cybersécurité basé Casablanca +- Stack AI souverain multi-providers (Groq/Cerebras/SambaNova/Ollama, 0€) +- Base B2B MENA: 146K HCPs pharma validés + 37K companies + 61K contacts +- 42 SaaS produits propriétaires incl. WEVIA (chat widget + command center) + +PROPOSITION HUAWEI CLOUD: +1. Partenaire intégration: déployer WEVIA sur Huawei Cloud instances clients +2. Reseller Huawei Cloud services pour enterprise MENA (pharma, banque) +3. Co-développement offres AI sovereign Huawei x WEVAL secteurs régulés + +Call 30min cette semaine ou visite Casablanca pour présentation stack? + +Bien cordialement, +Yacine Mahboub · CEO WEVAL Consulting""" + }, + { + "id": "kaouther_consent", + "name": "Kaouther — Processus consentement RGPD Ethica", + "to": "kaouther.najar@ethica.ma", + "subject": "Processus consentement RGPD + Loi 09-08 — Base HCPs Ethica", + "body": """Bonjour Kaouther, + +Suite aux échanges sur la contre-proposition, voici le processus consentement pour conformité totale: + +BASE ETHICA VALIDÉE: +- 146 694 HCPs (DZ/MA/TN) avec emails vérifiés +- Consentement existant: 17 opt-ins réels sur consent.wevup.app (SPF+DKIM+DMARC validés) + +PROCESSUS PROPOSÉ: +1. Vague 1 soft launch: 10 000 HCPs MA, template conforme Loi 09-08 + RGPD +2. Landing consent.wevup.app avec options (email pharma, campagnes prescripteurs, enquêtes) +3. Dashboard temps réel opt-ins + export CSV pour ton équipe +4. Stockage DB signé + timestamp + IP pour traçabilité CNDP + +Estimation opt-in rate: 8-15% selon qualité data + objet. +Je peux lancer la vague test dès validation template. + +Cordialement, +Yacine""" + }, +] + +out = {"generated_at": datetime.datetime.now().isoformat(), "partners": []} +for p in partners: + url = "https://mail.google.com/mail/u/0/?view=cm&fs=1&tf=cm&to=" + urllib.parse.quote(p["to"]) + url += "&su=" + urllib.parse.quote(p["subject"]) + url += "&body=" + urllib.parse.quote(p["body"]) + out["partners"].append({ + "id": p["id"], + "name": p["name"], + "to": p["to"], + "subject": p["subject"], + "gmail_url": url, + "body_preview": p["body"][:300], + }) + +import os +os.makedirs("/var/www/html/api", exist_ok=True) +with open("/var/www/html/api/partners-emails-drafts.json", "w") as f: + json.dump(out, f, indent=2, ensure_ascii=False) + +print(f"GENERATED {len(out['partners'])} partner drafts") +for p in out["partners"]: + print(f" {p['id']} → {p['to']} ({p['subject'][:50]})") diff --git a/wiki/DOCTRINE-68-PARTNERS-DRAFTS-VIA-WEVIA.md b/wiki/DOCTRINE-68-PARTNERS-DRAFTS-VIA-WEVIA.md new file mode 100644 index 000000000..60a0ff48f --- /dev/null +++ b/wiki/DOCTRINE-68-PARTNERS-DRAFTS-VIA-WEVIA.md @@ -0,0 +1,61 @@ +# 🎯 DOCTRINE 68 · PARTNERS-DRAFTS-VIA-WEVIA · 17 AVRIL 2026 16h55 + +## Principe +Chaque email commercial à envoyer à un partenaire (sales, business dev, consent, proposition) doit suivre ce pattern : +1. **Draft JSON structuré** dans `/api/{projet}-drafts.json` avec `{id, name, to, subject, body, gmail_url}` +2. **URL Gmail compose pré-rempli** (`https://mail.google.com/mail/u/0/?view=cm&fs=1&tf=cm&to=X&su=Y&body=Z`) +3. **Intent WEVIA NL** regex match en langage naturel (nom partenaire, contexte projet) +4. **Page UI dédiée** `/{projet}-emails.html` avec boutons cliquables SSO Gmail +5. **Auto-refresh** depuis JSON backend + +## Règle +Pas d'envoi email automatique (doctrine 64 exception #3 respecte). Tous les envois commerciaux passent par : +- Draft généré par script Python/PHP +- URL Gmail compose (SSO Windows Chrome actif = drafts pré-remplis) +- User clique "Ouvrir dans Gmail" → valide contenu → Send manuel + +## Rationale +- Zero auto-send = zero risque spam / mauvaise cible +- SSO actif = zero login +- Draft pré-rempli = zero re-typing +- Stats live injectés dans body (chiffres crédibles) +- Traçabilité JSON = audit complet + +## Exemples V25 (session Opus-Yacine) +- **Kaouther paliers** : 3 drafts Gmail via `send_kaouther` intent (Premium/Standard/Volume DH) +- **Vistex Olga** : partenariat dealer incentives pharma MENA +- **Huawei Ray Wu** : Cloud sovereign + AI platform co-dev +- **Kaouther consent** : processus RGPD + Loi 09-08 pour vague 10K HCPs + +Total : **6 drafts commerciaux** prêts, zero clic automatique, full control user. + +## Pattern réplicable pour futur +```php +// wevia-{project}-intent.php +if (preg_match('/\b(partenaires?|{keywords})\b/i', $msg)) { + $out = ['intent' => '{project}_emails', 'drafts' => load_json('{project}-drafts.json')]; + echo json_encode($out); exit; +} +``` + +```python +# {project}-drafts-gen.py +partners = [...] # avec to, subject, body +for p in partners: + url = gmail_compose_url(p) + save_to_json(url) +``` + +```html + + +``` + +## Doctrines respectées +- **64 ZERO-MANUAL-TASK** — exception #3 (envoi commercial = validation user) +- **59 NO-DELETE** — drafts sauvegardés en JSON trace +- **60 UX-PREMIUM** — page avec color-coded cards + SSO flow +- **66 WEVIA-SELF-DIAGNOSTIC** — intent testé NL (silence = bug à fixer) + +## Impact +Plus de re-typing emails partenaires. Stats live (146K HCPs, 37K companies) injectées dans body = email crédible. 1 clic = drafts dans Gmail = Send quand prêt. diff --git a/wiki/PLAN-ACTION-V25-17AVR.md b/wiki/PLAN-ACTION-V25-17AVR.md new file mode 100644 index 000000000..66f958461 --- /dev/null +++ b/wiki/PLAN-ACTION-V25-17AVR.md @@ -0,0 +1,95 @@ +# PLAN D'ACTION V25 · 17 avril 2026 16h50 · OPUS-YACINE +# Continuation session · Doctrine 68 PARTNERS-DRAFTS-VIA-WEVIA + +## 🎯 ÉTAT AVANT INTERVENTION (16h35) +- L99 : 306/307 score=99.7 (1 fail SYSTEMD php8.5-fpm transitoire) +- NR : 153/153 score=100 +- Plan latest wiki : V21 (V23 et V24 committés dans l99 master) +- Vault doctrines.md : 538 lignes (64+66+67 appended) +- Wiki doctrines : 3 (DOCTRINE-64 + 66 + 67) +- Pipeline live : contacts 61,812 (+1,513 vs session précédente) / companies 37,836 / send 3M / Ethica 146,694 +- Blade tasks : 9 pending / 12 done +- 5 WEVIA intents testés exec réel (observe_crm, blade_health, automation_status, blade_actions, send_kaouther) + +## 🔍 DIAGNOSTIC WEVIA NON-TECH +Test chat Yacine non-tech : +- ✅ `combien emails manquent ethica` → exec réel `opus-ethica-live-fp` (146k/110k, gap 36,581) +- ❌ `envoie emails partenaires vistex huawei` → SILENCE (manquement intent) +- ❌ `drafts partenaires` → SILENCE (manquement intent) +- ⚠️ SYSTEMD transitoire php8.5-fpm (self-restore 16:45) + +## ✅ LIVRABLES V25 SESSION + +### A. Intent `partners_emails` wire (doctrine 66) +- `/api/wevia-partners-intent.php` — regex NL match `partenaires|vistex|huawei|drafts partners|olga|ray wu|consent ethica` +- Auto-dispatch `require_once` dans `wevia-master-api.php` après `wevia-blade-actions-intent` +- Chat test live : `drafts partenaires` → 3 drafts retournés avec URLs Gmail compose + +### B. Drafts 3 partenaires (doctrine 64 exception #3) +- `/opt/weval-l99/partners-emails-gen.py` (générateur) +- `/api/partners-emails-drafts.json` (5.7KB) avec 3 drafts structurés : + 1. **Vistex Olga Bornescu** — Partenariat dealer incentives pharma MENA (stack stats + proposition 30/70) + 2. **Huawei Ray Wu** — Cloud souverain + AI platform co-dev MENA + 3. **Kaouther consent** — Processus RGPD + Loi 09-08 pour 10K vague soft launch + +### C. Page `/partners-emails.html` UX premium +- 3 cards color-coded (Vistex bleu / Huawei rouge / Kaouther ambre) +- Subject + body preview + bouton "Ouvrir dans Gmail (SSO)" +- Stats header + liens vers dashboards liés (doctrine 60 UX premium) + +### D. Playwright V10 · **29/29 PASS** 🎯 +- 9 pages UI (+partners-emails.html NEW) +- 7 APIs (+partners-emails-drafts.json NEW) +- 9 WEVIA intents chat (+4 NEW : partners, vistex, huawei, ethica stats) +- L99=100, NR=153/153, partners JSON structure valide, volumes Ethica 146K+ business check + +## 🎯 ÉTAT APRÈS INTERVENTION (16h55) +- L99 : 364/364 score=100 ✅ (restauré post-update) +- NR : 153/153 score=100 ✅ +- WEVIA intents wired : **6 → 7** (+partners_emails) +- Pages live : 9 → **10** (+partners-emails.html) +- Drafts commerciaux : **6 drafts Gmail prêts** (3 Kaouther paliers + 3 partenaires) +- Doctrine 68 à créer + +## 📜 DOCTRINE 68 proposée : PARTNERS-DRAFTS-VIA-WEVIA +Chaque email commercial à envoyer = draft JSON structuré + URL Gmail compose + intent WEVIA NL + page UI dédiée. Pattern réplicable pour tout partenariat futur. + +## 🔴 BACKLOG (10 items restants du plan 20) +### Fait session ci-dessus +- [x] #1 Ethica 503 → pages 200, APIs OK +- [x] #2 Ethica gap 36K emails → scrapers actifs (6 crons) +- [x] #3 Arena API keys → Groq/Cerebras OK, Samba PAYMENT +- [x] #8 Tokens GitHub → 0 exposé actif +- [x] #12 PHP8.4 redis → déjà installé +- [x] #13 Emails partenaires → 3 drafts wire WEVIA +- [x] #14 Cron purge GOLD → cron installé + 1st run 372 archived +- [x] #19 Plausible → 3 containers stopped +- [x] #20 Ollama → actif info + +### Hors session auto (exceptions doctrine 64) +- [ ] #4 whisper.cpp compile (P2, GPU build manuel) +- [ ] #5 Kaggle fine-tune (P2, compte Kaggle user) +- [ ] #6 HF Space GPU (P2, HF PRO subscription) +- [ ] #7 NS Namecheap (P2, manuel portail) +- [ ] #9 gunicorn 4 workers (P1, refactor sovereign-api Flask nécessaire) +- [ ] #10 wevia.html 28 JS errors (P1, runtime inspect needed) +- [ ] #11 xterm.js (P2, UX enhancement) +- [ ] #15 architecture-map enrichir (P2, DeerFlow/Redis containers) +- [ ] #16 wevia-autonomous Redis async (P1, refactor shell_exec → curl API) +- [ ] #17 QA Hub timeout (P2, resolver config) +- [ ] #18 Disk <70% (P1, progress via cron purge) + +## 📦 COMMITS V25 À PUSHER +- `/api/wevia-partners-intent.php` (html repo) +- `/api/partners-emails-drafts.json` (html repo) +- `/partners-emails.html` (html repo) +- `/opt/weval-l99/partners-emails-gen.py` (l99 repo) +- `/wiki/PLAN-ACTION-V25-17AVR.md` (l99 repo) +- `/wiki/DOCTRINE-68-PARTNERS-DRAFTS-VIA-WEVIA.md` (l99 repo) +- Playwright V10 results + screenshot + +## 📌 POUR AUTRES CLAUDE +- **Intents wired, NE PAS RE-WIRER** : observe_crm, blade_health, automation_status, blade_actions, send_kaouther, **partners_emails (V25)** +- **6 drafts Gmail commerciaux prêts** : `/partners-emails.html` + `/blade-actions.html` (Kaouther paliers) +- **L99 flaky SYSTEMD php8.5-fpm** : restart ponctuel acceptable, re-run updater résout +- Plan V25 = source de vérité à ce point