Files
wevads-platform/scripts/architecture-v2.php
2026-02-26 04:53:11 +01:00

515 lines
36 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* WEVAL Architecture Documentation - Version 2.0
* Mise à jour: 28/01/2026
* Enrichi avec audit complet des schemas et tables
*/
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documentation Architecture WEVAL v2.0</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Segoe UI', system-ui, sans-serif;
background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
color: #e2e8f0;
min-height: 100vh;
}
.container { max-width: 1400px; margin: 0 auto; padding: 20px; }
.header {
background: rgba(15, 23, 42, 0.8);
border: 1px solid #334155;
border-radius: 16px;
padding: 30px;
margin-bottom: 30px;
text-align: center;
}
.header h1 {
font-size: 2.5em;
background: linear-gradient(135deg, #06b6d4, #3b82f6);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-bottom: 10px;
}
.header .version { color: #94a3b8; font-size: 1.1em; }
.header .update-date { color: #22c55e; font-size: 0.9em; margin-top: 5px; }
.nav-container { display: flex; gap: 20px; margin-bottom: 30px; }
.toc {
width: 280px;
background: rgba(15, 23, 42, 0.9);
border: 1px solid #334155;
border-radius: 12px;
padding: 20px;
position: sticky;
top: 20px;
height: fit-content;
max-height: calc(100vh - 40px);
overflow-y: auto;
}
.toc h3 { color: #06b6d4; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #334155; }
.toc a {
display: block; color: #94a3b8; text-decoration: none;
padding: 8px 12px; border-radius: 6px; margin-bottom: 4px;
font-size: 0.9em; transition: all 0.2s;
}
.toc a:hover { background: rgba(6, 182, 212, 0.1); color: #06b6d4; }
.toc a.section-title { color: #e2e8f0; font-weight: 600; margin-top: 10px; }
.toc a.new-tag::after {
content: 'NEW'; background: #22c55e; color: #000;
font-size: 0.7em; padding: 2px 6px; border-radius: 4px; margin-left: 8px;
}
.main-content { flex: 1; }
.section {
background: rgba(15, 23, 42, 0.8);
border: 1px solid #334155;
border-radius: 16px;
padding: 30px;
margin-bottom: 30px;
}
.section h2 {
color: #06b6d4; font-size: 1.8em; margin-bottom: 20px;
padding-bottom: 15px; border-bottom: 2px solid #334155;
display: flex; align-items: center; gap: 10px;
}
.section h3 { color: #3b82f6; font-size: 1.3em; margin: 25px 0 15px 0; }
.section h4 { color: #8b5cf6; font-size: 1.1em; margin: 20px 0 10px 0; }
.cards-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px; margin: 20px 0;
}
.card {
background: rgba(30, 41, 59, 0.5);
border: 1px solid #475569;
border-radius: 12px; padding: 20px;
}
.card.primary { border-color: #06b6d4; }
.card.success { border-color: #22c55e; }
.card.warning { border-color: #f59e0b; }
.card.danger { border-color: #ef4444; }
.card.info { border-color: #3b82f6; }
.card-header { display: flex; align-items: center; gap: 10px; margin-bottom: 15px; }
.card-icon {
width: 40px; height: 40px; border-radius: 10px;
display: flex; align-items: center; justify-content: center; font-size: 1.5em;
}
.card.primary .card-icon { background: rgba(6, 182, 212, 0.2); }
.card.success .card-icon { background: rgba(34, 197, 94, 0.2); }
.card.warning .card-icon { background: rgba(245, 158, 11, 0.2); }
.card.danger .card-icon { background: rgba(239, 68, 68, 0.2); }
.card.info .card-icon { background: rgba(59, 130, 246, 0.2); }
.card-title { font-size: 1.2em; font-weight: 600; }
.card-subtitle { color: #94a3b8; font-size: 0.85em; }
.card-content { color: #cbd5e1; font-size: 0.95em; line-height: 1.6; }
.card-stats { display: flex; gap: 15px; margin-top: 15px; flex-wrap: wrap; }
.stat { background: rgba(0,0,0,0.2); padding: 8px 12px; border-radius: 8px; }
.stat-value { font-size: 1.3em; font-weight: 700; color: #06b6d4; }
.stat-label { font-size: 0.75em; color: #94a3b8; }
.table-container { overflow-x: auto; margin: 20px 0; }
table { width: 100%; border-collapse: collapse; font-size: 0.9em; }
th, td { padding: 12px 15px; text-align: left; border-bottom: 1px solid #334155; }
th { background: rgba(6, 182, 212, 0.1); color: #06b6d4; font-weight: 600; white-space: nowrap; }
tr:hover { background: rgba(255,255,255,0.02); }
.badge {
display: inline-block; padding: 4px 10px;
border-radius: 20px; font-size: 0.8em; font-weight: 600;
}
.badge-success { background: rgba(34, 197, 94, 0.2); color: #22c55e; }
.badge-warning { background: rgba(245, 158, 11, 0.2); color: #f59e0b; }
.badge-danger { background: rgba(239, 68, 68, 0.2); color: #ef4444; }
.badge-info { background: rgba(59, 130, 246, 0.2); color: #3b82f6; }
.badge-primary { background: rgba(6, 182, 212, 0.2); color: #06b6d4; }
.badge-new { background: rgba(34, 197, 94, 0.3); color: #22c55e; }
.badge-legacy { background: rgba(239, 68, 68, 0.2); color: #ef4444; }
.code-block {
background: #0f172a; border: 1px solid #334155; border-radius: 8px;
padding: 15px; font-family: 'Fira Code', 'Monaco', monospace;
font-size: 0.85em; overflow-x: auto; white-space: pre;
color: #e2e8f0; line-height: 1.5;
}
.arch-diagram {
background: #0f172a; border: 1px solid #334155; border-radius: 12px;
padding: 20px; font-family: 'Fira Code', monospace; font-size: 0.8em;
overflow-x: auto; white-space: pre; line-height: 1.4; color: #94a3b8;
}
.arch-diagram .highlight { color: #06b6d4; }
.arch-diagram .success { color: #22c55e; }
.arch-diagram .warning { color: #f59e0b; }
.arch-diagram .danger { color: #ef4444; }
.schema-grid {
display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 15px; margin: 20px 0;
}
.schema-box {
background: rgba(30, 41, 59, 0.5); border: 1px solid #475569;
border-radius: 10px; padding: 15px;
}
.schema-box.active { border-color: #22c55e; border-width: 2px; }
.schema-box.legacy { border-color: #ef4444; opacity: 0.7; }
.schema-name { font-weight: 600; color: #06b6d4; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.schema-tables { font-size: 0.85em; color: #94a3b8; }
.schema-tables li { padding: 3px 0; list-style: none; }
.schema-tables li::before { content: '├── '; color: #475569; }
.schema-tables li:last-child::before { content: '└── '; }
.flow-container { background: #0f172a; border: 1px solid #334155; border-radius: 12px; padding: 25px; margin: 20px 0; }
.flow-step { display: flex; align-items: center; gap: 15px; margin-bottom: 15px; }
.flow-number {
width: 35px; height: 35px; background: linear-gradient(135deg, #06b6d4, #3b82f6);
border-radius: 50%; display: flex; align-items: center; justify-content: center;
font-weight: 700; flex-shrink: 0;
}
.alert { padding: 15px 20px; border-radius: 10px; margin: 15px 0; display: flex; align-items: flex-start; gap: 12px; }
.alert-icon { font-size: 1.3em; }
.alert-success { background: rgba(34, 197, 94, 0.1); border: 1px solid #22c55e; }
.alert-warning { background: rgba(245, 158, 11, 0.1); border: 1px solid #f59e0b; }
.alert-danger { background: rgba(239, 68, 68, 0.1); border: 1px solid #ef4444; }
.alert-info { background: rgba(59, 130, 246, 0.1); border: 1px solid #3b82f6; }
@media print { body { background: white; color: black; } .toc { display: none; } .section { break-inside: avoid; } }
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>📊 Documentation Architecture WEVAL</h1>
<div class="version">Version 2.0 - Audit Complet</div>
<div class="update-date">Dernière mise à jour: <?= date('d/m/Y H:i') ?></div>
</div>
<div class="nav-container">
<nav class="toc">
<h3>📑 Table des Matières</h3>
<a href="#overview" class="section-title">1. Vue d'ensemble</a>
<a href="#architecture">2. Architecture Globale</a>
<a href="#databases" class="section-title new-tag">3. Bases de Données</a>
<a href="#schemas" class="new-tag">4. Schémas Détaillés</a>
<a href="#master-table" class="new-tag">5. Master Table</a>
<a href="#brain-engine" class="new-tag">6. Brain Engine</a>
<a href="#affiliate-system" class="new-tag">7. Système Affiliate</a>
<a href="#tracking-flow" class="new-tag">8. Flow Tracking</a>
<a href="#email-flow" class="new-tag">9. Flow Email</a>
<a href="#hamid-ia" class="new-tag">10. WEVAL MIND</a>
<a href="#office365">11. Office 365</a>
<a href="#pmta">12. PMTA & Email</a>
<a href="#cleanup" class="new-tag">13. Nettoyage</a>
<a href="#monitoring">14. Monitoring</a>
</nav>
<main class="main-content">
<section id="overview" class="section">
<h2>📌 1. Vue d'ensemble</h2>
<p style="margin-bottom: 20px; color: #cbd5e1; line-height: 1.7;">
WEVAL est une plateforme complète de gestion d'email marketing haute performance.
Elle comprend trois applications principales partageant une infrastructure commune de bases de données,
avec des systèmes de tracking dédiés, un Brain Engine pour l'optimisation automatique,
et une intégration avec des serveurs PMTA pour l'envoi d'emails à grande échelle.
</p>
<div class="cards-grid">
<div class="card primary">
<div class="card-header">
<div class="card-icon">🖥️</div>
<div><div class="card-title">Serveur Principal</div><div class="card-subtitle">89.167.40.150</div></div>
</div>
<div class="card-content">Ubuntu 24.04 LTS<br>4 CPU Cores / 16 GB RAM<br>150 GB SSD<br>Hetzner Cloud (HEL1)</div>
</div>
<div class="card success">
<div class="card-header">
<div class="card-icon">📡</div>
<div><div class="card-title">Serveur Tracking</div><div class="card-subtitle">151.80.235.110</div></div>
</div>
<div class="card-content">OVH Infrastructure<br>Tracking opens/clicks<br>SSL/TLS enabled<br>High availability</div>
</div>
<div class="card info">
<div class="card-header">
<div class="card-icon">☁️</div>
<div><div class="card-title">Cloud Storage</div><div class="card-subtitle">AWS S3</div></div>
</div>
<div class="card-content">Région: eu-north-1<br>Content hosting<br>Image assets<br>Tracking elements</div>
</div>
</div>
<h3>📊 Statistiques Plateforme</h3>
<div class="cards-grid">
<div class="card">
<div class="card-stats">
<div class="stat"><div class="stat-value">329</div><div class="stat-label">Tables adx_system</div></div>
<div class="stat"><div class="stat-value">119</div><div class="stat-label">Tables adx_clients</div></div>
<div class="stat"><div class="stat-value">5</div><div class="stat-label">Schemas actifs</div></div>
</div>
</div>
<div class="card">
<div class="card-stats">
<div class="stat"><div class="stat-value">1,352</div><div class="stat-label">Comptes Office365</div></div>
<div class="stat"><div class="stat-value">1,182</div><div class="stat-label">Domaines Pool</div></div>
<div class="stat"><div class="stat-value">51,246</div><div class="stat-label">Brain Seeds</div></div>
</div>
</div>
<div class="card">
<div class="card-stats">
<div class="stat"><div class="stat-value">78</div><div class="stat-label">ISPs Configurés</div></div>
<div class="stat"><div class="stat-value">32</div><div class="stat-label">Offres Actives</div></div>
<div class="stat"><div class="stat-value">26+</div><div class="stat-label">Providers IA</div></div>
</div>
</div>
</div>
</section>
<section id="databases" class="section">
<h2>🗄️ 3. Bases de Données <span class="badge badge-new">ENRICHI</span></h2>
<div class="cards-grid">
<div class="card primary">
<div class="card-header">
<div class="card-icon">🗃️</div>
<div><div class="card-title">adx_system</div><div class="card-subtitle">Base principale</div></div>
</div>
<div class="card-content">Configuration système, Brain Engine, données de production, serveurs MTA, campagnes, offres affiliées et statistiques.</div>
<div class="card-stats">
<div class="stat"><div class="stat-value">329</div><div class="stat-label">Tables</div></div>
<div class="stat"><div class="stat-value">5</div><div class="stat-label">Schemas</div></div>
</div>
</div>
<div class="card success">
<div class="card-header">
<div class="card-icon">📧</div>
<div><div class="card-title">adx_clients</div><div class="card-subtitle">Listes Email</div></div>
</div>
<div class="card-content">Listes d'emails segmentées par ISP (Gmail, Yahoo, Hotmail, GMX, etc.) avec gestion des suppressions par client.</div>
<div class="card-stats">
<div class="stat"><div class="stat-value">119</div><div class="stat-label">Tables</div></div>
<div class="stat"><div class="stat-value">8+</div><div class="stat-label">Schemas ISP</div></div>
</div>
</div>
</div>
<div class="alert alert-info">
<span class="alert-icon">💡</span>
<div><strong>Architecture Multi-Schema:</strong> adx_system utilise 5 schemas distincts (admin, affiliate, actions, production, system_admin) pour séparer les responsabilités.</div>
</div>
</section>
<section id="schemas" class="section">
<h2>📐 4. Schémas Détaillés <span class="badge badge-new">NOUVEAU</span></h2>
<h3>adx_system - Architecture des Schemas</h3>
<div class="arch-diagram">
DATABASE: <span class="highlight">ADX_SYSTEM</span> │
┌─────────────────────────────────────────────────────────────────────────────┐ │
│ <span class="success">SCHEMA: admin</span> (329 tables) - Configuration principale │ │
│ • brain_* (configs, seeds, winners, tests, send_methods) │ │
│ • domains_pool (1,182) - Domaines Office365/Cloudflare │ │
│ • office_accounts (1,352) - Comptes Office365 │ │
│ • target_isps (78) - ISPs cibles configurés │ │
│ • campaigns (19) - Campagnes mailing │ │
│ • hamid_* - Configuration WEVAL MIND │ │
│ • <span class="warning">⚠️ offers/sponsors/creatives (VIDES - utiliser affiliate.*)</span> │ │
└─────────────────────────────────────────────────────────────────────────────┘ │
┌─────────────────────────────────────────────────────────────────────────────┐ │
│ <span class="success">SCHEMA: affiliate</span> - OFFRES & RÉSEAUX (VRAIES DONNÉES) │ │
│ • affiliate_networks - Réseaux (CX3 Ads, Double M, Everflow...) │ │
│ • offers (32) - Offres avec production_id, payout │ │
│ • creatives - Créatives HTML/images par offre │ │
│ • from_names, subjects, links, suppressions │ │
└─────────────────────────────────────────────────────────────────────────────┘ │
┌─────────────────────────────────────────────────────────────────────────────┐ │
│ <span class="success">SCHEMA: actions</span> - TRACKING & ANALYTICS │ │
│ • clicks, leads, opens, optouts, unsubscribes │ │
│ • Colonnes: offer_production_id, affiliate_network_id, user_production_id │ │
└─────────────────────────────────────────────────────────────────────────────┘ │
┌─────────────────────────────────────────────────────────────────────────────┐ │
│ <span class="success">SCHEMA: production</span> - PROCESSUS D'ENVOI │ │
│ • <span class="success">✅ mta_processes</span> - Envoi via PMTA │ │
│ • <span class="success">✅ smtp_processes</span> - Envoi SMTP (Office365/IPs propres/Gmail) │ │
│ • <span class="success">✅ auto_responders</span> - Répondeurs automatiques │ │
│ • <span class="danger">❌ fapi/gapi/oapi_processes</span> - LEGACY NE FONCTIONNENT PLUS │ │
└─────────────────────────────────────────────────────────────────────────────┘ │
</div>
<h3>adx_clients - Schemas par ISP</h3>
<div class="schema-grid">
<div class="schema-box active"><div class="schema-name">📧 gmail</div><ul class="schema-tables"><li>gmail (principal)</li><li>gmail_1 à gmail_14</li></ul></div>
<div class="schema-box active"><div class="schema-name">📧 hotmail</div><ul class="schema-tables"><li>hotmail_uk, hotmail_de</li><li>hotmail_se, hotmail_be, hotmail_us</li></ul></div>
<div class="schema-box active"><div class="schema-name">📧 gmx</div><ul class="schema-tables"><li>emails</li></ul></div>
<div class="schema-box active"><div class="schema-name">📧 webde</div><ul class="schema-tables"><li>emails</li></ul></div>
<div class="schema-box active"><div class="schema-name">📧 tonline</div><ul class="schema-tables"><li>emails</li></ul></div>
<div class="schema-box active"><div class="schema-name">📧 yahoo</div><ul class="schema-tables"><li>yahoo</li></ul></div>
<div class="schema-box active"><div class="schema-name">📧 videotron</div><ul class="schema-tables"><li>emails</li></ul></div>
<div class="schema-box active"><div class="schema-name">🚫 suppressions</div><ul class="schema-tables"><li>sup_list_* (40+ tables)</li></ul></div>
</div>
</section>
<section id="master-table" class="section">
<h2>📋 5. Master Table <span class="badge badge-new">NOUVEAU</span></h2>
<div class="table-container">
<table>
<thead><tr><th>Schema.Table</th><th>Rows</th><th>Description</th><th>Status</th></tr></thead>
<tbody>
<tr style="background: rgba(6, 182, 212, 0.05);"><td colspan="4"><strong>🔧 SCHEMA: admin</strong></td></tr>
<tr><td><code>admin.brain_seeds</code></td><td><strong>51,246</strong></td><td>Seeds testeurs Brain Engine</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.domains_pool</code></td><td><strong>1,182</strong></td><td>Pool domaines Office365/Cloudflare</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.office_accounts</code></td><td><strong>1,352</strong></td><td>Comptes Office 365</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.target_isps</code></td><td><strong>78</strong></td><td>ISPs cibles configurés</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.brain_configs</code></td><td><strong>16</strong></td><td>Configurations Brain</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.brain_winners</code></td><td><strong>6</strong></td><td>Configs gagnantes validées</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.campaigns</code></td><td><strong>19</strong></td><td>Campagnes mailing</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.cloudflare_accounts</code></td><td><strong>36</strong></td><td>Comptes Cloudflare DNS</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>admin.knowledge_base</code></td><td><strong>29</strong></td><td>KB WEVAL MIND (ancienne)</td><td><span class="badge badge-warning">⚠️ Migrer</span></td></tr>
<tr><td><code>admin.hamid_knowledge</code></td><td><strong>0</strong></td><td>KB WEVAL MIND (nouvelle - VIDE)</td><td><span class="badge badge-danger">❌ Vide</span></td></tr>
<tr><td><code>admin.offers</code></td><td><strong>0</strong></td><td>DOUBLON - utiliser affiliate.offers</td><td><span class="badge badge-legacy">Legacy</span></td></tr>
<tr style="background: rgba(34, 197, 94, 0.05);"><td colspan="4"><strong>🎯 SCHEMA: affiliate</strong></td></tr>
<tr><td><code>affiliate.affiliate_networks</code></td><td><strong>?</strong></td><td>Réseaux (CX3, Double M...)</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>affiliate.offers</code></td><td><strong>32</strong></td><td>Offres avec production_id</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>affiliate.creatives</code></td><td><strong>?</strong></td><td>Créatives par offre</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>affiliate.suppressions</code></td><td><strong>?</strong></td><td>Suppressions par réseau</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr style="background: rgba(59, 130, 246, 0.05);"><td colspan="4"><strong>📊 SCHEMA: actions</strong></td></tr>
<tr><td><code>actions.clicks</code></td><td><strong>?</strong></td><td>Clics trackés</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>actions.leads</code></td><td><strong>?</strong></td><td>Leads générés</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>actions.opens</code></td><td><strong>?</strong></td><td>Opens trackés</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr style="background: rgba(139, 92, 246, 0.05);"><td colspan="4"><strong>🚀 SCHEMA: production</strong></td></tr>
<tr><td><code>production.mta_processes</code></td><td><strong>?</strong></td><td>Processus PMTA</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>production.smtp_processes</code></td><td><strong>?</strong></td><td>SMTP (O365/IP/Gmail)</td><td><span class="badge badge-success">✅ Actif</span></td></tr>
<tr><td><code>production.fapi_processes</code></td><td><strong>?</strong></td><td>LEGACY FreeDNS</td><td><span class="badge badge-legacy">❌ Legacy</span></td></tr>
</tbody>
</table>
</div>
</section>
<section id="brain-engine" class="section">
<h2>🧠 6. Brain Engine <span class="badge badge-new">NOUVEAU</span></h2>
<p style="margin-bottom: 20px; color: #cbd5e1;">Le Brain Engine optimise automatiquement les configurations d'envoi pour maximiser les taux d'inbox par ISP.</p>
<div class="cards-grid">
<div class="card primary">
<div class="card-header"><div class="card-icon">🌱</div><div><div class="card-title">brain_seeds</div><div class="card-subtitle">51,246 testeurs</div></div></div>
<div class="card-content">Emails testeurs par ISP pour vérifier inbox/spam. Inclut credentials IMAP.</div>
</div>
<div class="card success">
<div class="card-header"><div class="card-icon">⚙️</div><div><div class="card-title">brain_configs</div><div class="card-subtitle">16 configurations</div></div></div>
<div class="card-content">Headers, from, subject, body, send_method, domain, IP, SPF, DKIM, DMARC.</div>
</div>
<div class="card info">
<div class="card-header"><div class="card-icon">🏆</div><div><div class="card-title">brain_winners</div><div class="card-subtitle">6 gagnants</div></div></div>
<div class="card-content">Configurations validées avec inbox_rate > 85%.</div>
</div>
</div>
<h3>🔄 Flow Brain Engine</h3>
<div class="flow-container">
<div class="flow-step"><div class="flow-number">1</div><div>Sélection configuration (brain_configs)</div></div>
<div class="flow-step"><div class="flow-number">2</div><div>Envoi aux seeds ISP cible (brain_seeds)</div></div>
<div class="flow-step"><div class="flow-number">3</div><div>Vérification IMAP: inbox ou spam? (brain_test_results)</div></div>
<div class="flow-step"><div class="flow-number">4</div><div>Si inbox_rate > 85% → Promotion en brain_winners</div></div>
<div class="flow-step"><div class="flow-number">5</div><div>Utilisation automatique pour envois réels</div></div>
</div>
</section>
<section id="tracking-flow" class="section">
<h2>📊 8. Flow Tracking <span class="badge badge-new">NOUVEAU</span></h2>
<div class="arch-diagram">
FLOW TRACKING COMPLET │
EMAIL ENVOYÉ → OPEN → CLICK → LEAD → CONVERSION │
│ │ │ │ │
▼ ▼ ▼ ▼ │
<span class="success">actions.opens</span> → <span class="success">actions.clicks</span> → <span class="success">actions.leads</span> → <span class="highlight">conversions</span> │
Serveur Tracking: <span class="highlight">151.80.235.110</span> (OVH) │
URLs: /op/{drop_id}_{type}/{uid}/{vid}/{ofid}/{lid}/{cid} │
/cl/{drop_id}_{type}/{uid}/{vid}/{ofid}/{lid}/{cid} │
</div>
</section>
<section id="email-flow" class="section">
<h2>📧 9. Flow Email Marketing <span class="badge badge-new">NOUVEAU</span></h2>
<div class="arch-diagram">
FLOW EMAIL MARKETING COMPLET │
<span class="highlight">1. CONFIG</span>: affiliate.offers + admin.brain_* + admin.domains_pool + office_accounts │
▼ │
<span class="highlight">2. DATA</span>: adx_clients (gmail.*, hotmail.*, gmx.*, yahoo.*, videotron.*) │
▼ │
<span class="highlight">3. ENVOI</span>: production.smtp_processes (O365/IP/Gmail) | production.mta_processes │
▼ │
<span class="highlight">4. TRACK</span>: actions.opens → actions.clicks → actions.leads → conversions │
</div>
</section>
<section id="hamid-ia" class="section">
<h2>🤖 10. WEVAL MIND <span class="badge badge-new">NOUVEAU</span></h2>
<p style="margin-bottom: 20px; color: #cbd5e1;">WEVAL MIND (Hyper-Advanced Multi-Intelligence Director) - Système IA multi-providers avec failover automatique.</p>
<div class="cards-grid">
<div class="card primary">
<div class="card-header"><div class="card-icon">🧠</div><div><div class="card-title">26+ Providers</div><div class="card-subtitle">Failover automatique</div></div></div>
<div class="card-content">Cerebras, Groq, DeepSeek, Gemini, Claude, Mistral, Cohere, SambaNova, Ollama...</div>
</div>
<div class="card info">
<div class="card-header"><div class="card-icon">📚</div><div><div class="card-title">Knowledge Base</div><div class="card-subtitle">29 documents</div></div></div>
<div class="card-content">Documentation PMTA, Office365, Tracking, Brain Engine...</div>
</div>
<div class="card warning">
<div class="card-header"><div class="card-icon">⚠️</div><div><div class="card-title">À Migrer</div><div class="card-subtitle">KB vide</div></div></div>
<div class="card-content">knowledge_base (29) → hamid_knowledge (0)</div>
</div>
</div>
<div class="alert alert-warning">
<span class="alert-icon">⚠️</span>
<div><strong>Action requise:</strong> Migrer <code>knowledge_base</code> (29 docs) vers <code>hamid_knowledge</code>.</div>
</div>
</section>
<section id="cleanup" class="section">
<h2>🧹 13. Nettoyage Recommandé <span class="badge badge-new">NOUVEAU</span></h2>
<h3>Tables Doublons (à supprimer)</h3>
<div class="table-container">
<table>
<thead><tr><th>Table Legacy</th><th>Rows</th><th>Remplacer par</th><th>Action</th></tr></thead>
<tbody>
<tr><td><code>admin.offers</code></td><td>0</td><td>affiliate.offers</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
<tr><td><code>admin.sponsors</code></td><td>0</td><td>affiliate.affiliate_networks</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
<tr><td><code>admin.creatives</code></td><td>0</td><td>affiliate.creatives</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
<tr><td><code>admin.senddata</code></td><td>0</td><td>adx_clients.*</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
<tr><td><code>admin.send_data</code></td><td>0</td><td>adx_clients.*</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
<tr><td><code>admin.domain_pools</code></td><td>0</td><td>admin.domains_pool</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
<tr><td><code>admin.o365_accounts</code></td><td>0</td><td>admin.office_accounts</td><td><span class="badge badge-danger">Supprimer</span></td></tr>
</tbody>
</table>
</div>
<h3>Tables Legacy Production</h3>
<div class="alert alert-info">
<span class="alert-icon"></span>
<div>Ces tables ne fonctionnent plus: <code>production.fapi_processes</code>, <code>production.gapi_processes</code>, <code>production.oapi_processes</code></div>
</div>
</section>
</main>
</div>
<footer style="text-align: center; padding: 30px; color: #64748b; font-size: 0.9em;">
Documentation générée le <?= date('d/m/Y à H:i') ?><br>
WEVAL Marketing v2.0 - Audit complet des schemas et tables
</footer>
</div>
<script>
document.querySelectorAll('.toc a').forEach(link => {
link.addEventListener('click', (e) => {
e.preventDefault();
const target = document.querySelector(link.getAttribute('href'));
if (target) target.scrollIntoView({ behavior: 'smooth', block: 'start' });
});
});
</script>
</body>
</html>