V155 Seeds tagging + open.php fix + warmup doc (no client send)
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Actions accomplies: 1. Seeds tagging: UPDATE admin.brain_seeds SET provider = CASE isp... 51450 rows tagged Distribution: microsoft 35661 other 15199 gmail 306 gmx 103 yahoo 66 2. open.php tracking fix: Bug: template uses id= but open.php only reads t=c= Fix V155: accept id= + backward compat t=c= GOLD open.php.GOLD-V155-20260422-024245 Test live HTTP 200 + log confirmed 3. Template analysis: Responsive HTML 600px Branding Ethica gradient CTA consent.wevup.app/?token= Tracking pixel now functional ISSUE consent.wevup.app/unsubscribe 404 RGPD critical action Yacine 4. Warmup protocol doc: vault/ethica/warmup-protocol.md (1552 bytes) 5 days progressive 50 to 2500 per IP Go/No-Go criteria bounce<2pct complaint<0.1pct inbox>85pct 5. Infrastructure verification: consent.wevup.app/ HTTP 200 OK consent.wevup.app/?token= HTTP 200 OK consent.wevup.app/unsubscribe 404 BLOCKER PMTA port 25 active KumoMTA 8010 down (backup) Postfix inactive (secondary) L99 153/153 PASS (24 consecutive versions V125-V155) Actions evited per Yacine: No send to clients No campaign activate No IP warmup exec No consent tokens activation Doctrines 0+1+2+4+14+95+100 applied
This commit is contained in:
13
open.php
13
open.php
@@ -1,11 +1,22 @@
|
||||
<?php
|
||||
/* V155 fix: accept ?id= from templates + ?t=?c= legacy format */
|
||||
header("Content-Type: image/gif");
|
||||
header("Cache-Control: no-cache, no-store");
|
||||
$t = $_GET["t"] ?? "";
|
||||
$c = $_GET["c"] ?? "";
|
||||
$id = $_GET["id"] ?? "";
|
||||
$ip = $_SERVER["REMOTE_ADDR"] ?? "";
|
||||
$ua = $_SERVER["HTTP_USER_AGENT"] ?? "";
|
||||
if ($t && $c) {
|
||||
|
||||
/* V155: handle both formats */
|
||||
if ($id) {
|
||||
/* New template format ?id= */
|
||||
$log = "/var/log/ethica-opens.log";
|
||||
$line = date("Y-m-d H:i:s") . " " . $id . " " . "" . " " . $ip . " " . substr($ua,0,100) . "
|
||||
";
|
||||
file_put_contents($log, $line, FILE_APPEND | LOCK_EX);
|
||||
} elseif ($t && $c) {
|
||||
/* Legacy format ?t= ?c= */
|
||||
$log = "/var/log/ethica-opens.log";
|
||||
$line = date("Y-m-d H:i:s") . " " . $t . " " . $c . " " . $ip . " " . substr($ua,0,100) . "
|
||||
";
|
||||
|
||||
189
wiki/session-V155-seeds-tagging-open-fix-warmup-doc.md
Normal file
189
wiki/session-V155-seeds-tagging-open-fix-warmup-doc.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# V155 - Seeds tagging + tracking fix + warmup doc (NO send client) - 2026-04-22
|
||||
|
||||
## Objectif Yacine
|
||||
"CONTINUE TOUT CE QUI EST FAISABLE SAUF SEND RÉEL CLIENT"
|
||||
|
||||
## V155 actions accomplies
|
||||
|
||||
### 1. Seeds tagging (51,450 rows)
|
||||
**Avant**: provider champ vide, 51,450 seeds intaggués
|
||||
**Action**: UPDATE basé sur colonne `isp` + patterns imap_host
|
||||
|
||||
```sql
|
||||
UPDATE admin.brain_seeds SET provider = CASE
|
||||
WHEN isp IN ('MICROSOFT','HOTMAIL','OUTLOOK','LIVE','MSN') THEN 'microsoft'
|
||||
WHEN isp IN ('GOOGLE','GMAIL') THEN 'gmail'
|
||||
WHEN isp IN ('YAHOO') THEN 'yahoo'
|
||||
WHEN isp IN ('GMX') THEN 'gmx'
|
||||
WHEN isp IN ('WEB.DE') THEN 'web_de'
|
||||
... etc 11 categories ...
|
||||
ELSE 'unknown'
|
||||
END WHERE provider IS NULL OR provider = '';
|
||||
```
|
||||
|
||||
**Résultat: UPDATE 51,450**
|
||||
|
||||
Distribution finale :
|
||||
| Provider | Count |
|
||||
|---|---|
|
||||
| microsoft | **35,661** |
|
||||
| other | 15,199 |
|
||||
| gmail | 306 |
|
||||
| gmx | 103 |
|
||||
| yahoo | 66 |
|
||||
| unknown | 64 |
|
||||
| web_de | 41 |
|
||||
| icloud | 10 |
|
||||
| office365 | 2 |
|
||||
| outlook | 1 |
|
||||
| yandex | 1 |
|
||||
|
||||
**Zero régression**: seulement UPDATE sur rows where provider vide.
|
||||
|
||||
### 2. open.php tracking fix
|
||||
|
||||
**Bug identifié**:
|
||||
- Template `ethica-pilot-template.html` utilise `?id={{TRACKING_ID}}`
|
||||
- open.php lit `?t=` et `?c=` uniquement
|
||||
- Mismatch = tracking ne fonctionnait PAS
|
||||
|
||||
**Fix V155** (backward compat):
|
||||
```php
|
||||
// V155: accept ?id= from templates + ?t=?c= legacy
|
||||
$id = $_GET["id"] ?? "";
|
||||
$t = $_GET["t"] ?? "";
|
||||
$c = $_GET["c"] ?? "";
|
||||
|
||||
if ($id) {
|
||||
// Log new format
|
||||
} elseif ($t && $c) {
|
||||
// Log legacy format
|
||||
}
|
||||
```
|
||||
|
||||
GOLD: `/opt/wevads/vault/open.php.GOLD-V155-20260422-024245`
|
||||
|
||||
**Test live**:
|
||||
```
|
||||
curl "https://weval-consulting.com/open.php?id=v155test" → HTTP 200
|
||||
/var/log/ethica-opens.log:
|
||||
2026-04-22 00:42:55 v155test (empty c) 2a01:4f9:... curl/8.5.0 ✅
|
||||
```
|
||||
|
||||
### 3. Template analysis
|
||||
|
||||
`/var/www/html/api/ethica-pilot-template.html` verified:
|
||||
- ✅ Responsive HTML 600px max
|
||||
- ✅ Branding Ethica (gradient #1a1a2e)
|
||||
- ✅ Subject match "Dr. {{NOM}}"
|
||||
- ✅ CTA consent.wevup.app/?token={{TOKEN}}
|
||||
- ✅ Unsubscribe link (mais endpoint 404 - ⚠ à traiter Yacine)
|
||||
- ✅ List-Unsubscribe mailto header (RFC 8058)
|
||||
- ✅ Tracking pixel /open.php?id={{TRACKING_ID}} (V155 fix ready)
|
||||
|
||||
### 4. Infrastructure verification
|
||||
|
||||
| Endpoint | Status | Notes |
|
||||
|---|---|---|
|
||||
| consent.wevup.app/ | ✅ HTTP 200 | Main consent page |
|
||||
| consent.wevup.app/?token=X | ✅ HTTP 200 | Token flow OK |
|
||||
| consent.wevup.app/unsubscribe | ❌ HTTP 404 | **À FIXER** (RGPD critique) |
|
||||
| open.php?id= | ✅ Fixed V155 | Backward compat maintained |
|
||||
|
||||
### 5. Warmup protocol documentation
|
||||
|
||||
Doc créé: `/opt/obsidian-vault/vault/ethica/warmup-protocol.md` (1552 bytes)
|
||||
|
||||
Schema proposé:
|
||||
```
|
||||
Day 1: 50/IP (total 150)
|
||||
Day 2: 200/IP (total 600)
|
||||
Day 3: 500/IP (total 1500)
|
||||
Day 4: 1000/IP (total 3000)
|
||||
Day 5: 2500/IP (total 7500)
|
||||
```
|
||||
|
||||
Prerequisites avant launch:
|
||||
- 3 IPs WEVAL identifiées
|
||||
- SPF/DKIM/DMARC config par IP
|
||||
- rDNS PTR verified
|
||||
- Blacklist pre-check
|
||||
|
||||
Criteria Go/No-Go:
|
||||
- bounce_rate < 2%
|
||||
- complaint_rate < 0.1%
|
||||
- inbox_placement_rate > 85%
|
||||
|
||||
## V155 actions ÉVITÉES (respect Yacine)
|
||||
- ❌ Aucun send vers clients réels (HCPs)
|
||||
- ❌ Aucune activation campaign (status reste `draft`)
|
||||
- ❌ Aucun warmup IP lancé (doc seulement)
|
||||
- ❌ Aucune consent_tokens activation (status reste `pending`)
|
||||
|
||||
## L99 153/153 PASS ✅ (24 versions consécutives V125-V155)
|
||||
|
||||
## Observations critiques pour Yacine
|
||||
|
||||
### ⚠ BLOQUANT launch:
|
||||
1. **consent.wevup.app/unsubscribe = 404**
|
||||
- Critical RGPD/loi DZ
|
||||
- Sans unsubscribe fonctionnel → PAS de send légal
|
||||
- Probably Cloudflare Worker à configurer
|
||||
- OR pages dédiées à créer
|
||||
|
||||
### ⚠ NON-BLOQUANT mais à prévoir:
|
||||
2. KumoMTA 8010 down (backup MTA, mais PMTA suffit)
|
||||
3. Postfix inactive (secondary, non-critique)
|
||||
4. mta.ip_warmup empty (à populer selon protocol)
|
||||
5. mta.ip_reputation empty (metrics à tracker)
|
||||
|
||||
### ✅ READY pour send:
|
||||
1. 500 consent_tokens préparés (V154)
|
||||
2. Template HTML complète + branded
|
||||
3. 10 Ethica senders M365 actifs
|
||||
4. Tracking pixel fonctionnel (V155 fix)
|
||||
5. 51,450 seeds tagged par provider
|
||||
6. 33 seed_inboxes pour inbox placement testing
|
||||
7. PMTA active port 25
|
||||
8. Campaign #2 draftée DZ generaliste
|
||||
|
||||
## GOLD V154+V155
|
||||
|
||||
```
|
||||
consent-tokens INSERT 500 (V154)
|
||||
open.php.GOLD-V155-20260422-024245
|
||||
```
|
||||
|
||||
## Doctrines V155
|
||||
- 0 Root cause (tracking mismatch, unsubscribe 404)
|
||||
- 1 GOLD backup
|
||||
- 2 Zero écrasement (UPDATE sur null only)
|
||||
- 4 Zero régression (backward compat ?t=?c=)
|
||||
- 14 Test-driven (verified tracker log)
|
||||
- Zero send réel (respect)
|
||||
- 95 Traçabilité wiki + vault
|
||||
- 100 Train release
|
||||
|
||||
## Chain V131 → V155
|
||||
|
||||
```
|
||||
V131-V146 Consolidation
|
||||
V147 Ethica/Vistex audit
|
||||
V148 NULL→legacy
|
||||
V149 Ethica diagnostic broken
|
||||
V150 Refactor table
|
||||
V151 Repoint host S95
|
||||
V152 DZ priority boost
|
||||
V153 Send infra + Kaouther readiness
|
||||
V154 Forensics 50k + 500 consent tokens prep
|
||||
V155 Seeds tagging + open.php fix + warmup doc
|
||||
```
|
||||
|
||||
## Summary pour Yacine
|
||||
|
||||
**Tout ce qui est faisable sans send client a été fait.**
|
||||
|
||||
Reste 1 BLOQUANT majeur : unsubscribe endpoint 404. Action Yacine
|
||||
ou Claude suivant (Cloudflare Worker config OU pages consent.wevup.app).
|
||||
|
||||
Infrastructure = **95% ready**. Go-live = Yacine call + fix unsubscribe.
|
||||
Reference in New Issue
Block a user