515 lines
36 KiB
PHP
515 lines
36 KiB
PHP
<?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">95.216.167.89</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>
|