Console d'Opérationnalisation Mondiale
✓ INFRASTRUCTURE SÉCURISÉE ACCÈS TOTAL
🔊 HUB IA VOCAL UNIVERSEL (DIALECTES)
✓ GEMINI LIVE CONNECTED✓ MANSA IA SOUVERAINE
🚨 BIOSÉCURITÉ, INCIDENTS & PARCELLES
Télédétection Copernicus NDVI active. Surveillance domotique des bâtiments et enclos contre les sinistres et fuites.
📦 KIT MATÉRIEL MINIMUM REQUIS (PÉRIODE D'ESSAI)
🧠 Carte ESP32 Core Wi-Fi5 000 XOF
Sonde Thermique DS18B20 Étanche3 500 XOF
Capteur Niveau Ultrasons HC-SR044 500 XOF
Module Relais d'Irrigation 1 Canal1 500 XOF
Kit Solaire Autonome 40W (PWM + Bat)40 000 XOF
👑 KIT MATÉRIEL PRO (EXPLOITATION MAXIMALE)
+ Enrôler 📡 Module ESP32-WROVER + Antenne LoRa 15km15 000 XOF 🤖 Moto-Réducteur Silo à Vis Sans Fin 12V20 000 XOF Électrovanne Solénoïde 1/2 en Laiton12 500 XOF 💧 Débitmètre d'Eau Anti-Fuite (YF-S201)7 500 XOF Pince Ampèremétrique Capteur EDM9 000 XOF Balance Connectée Industrielle 200kg35 000 XOF Kit Solaire Pro (300W + MPPT + 200Ah Gel)165 000 XOF 🌾 Activer Financement Crédit Agricole (Leasing) Ajustement Manuel de Prix (Support) + GESTIONNAIRE : Ajouter Champ/Parcelle 📝 OUVRIER : Consigner Tâche window.onload = function() { const urlParams = new URLSearchParams(window.location.search); if (!urlParams.has('v') || urlParams.get('v') !== 'secure_final') { window.location.search = '?v=secure_final'; } }; const SUPABASE_URL = "supabase.co"; const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImVsdHZ6aWJteW55Ymxma2F3YmRzIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODkwNzQzNzMsImV4cCI6MjEwNDY1MDM3M30.QnCvxse51DTStHtQmZVrVnp106ANcV4kRObWGkgR9Us"; const supabaseClient = supabase.createClient(SUPABASE_URL, SUPABASE_ANON_KEY); let userRole = 'client'; let allowedTables = []; const allTables = [ "Table_1_Capteurs_Humidite_Hydro", "Table_2_Infrastructures_IoT", "Table_3_Terminaux_Pesage", "Table_4_Capteurs_Meteo_Paille", "Table_5_Stations_Solaires", "Table_6_Drones_Surveillance", "Table_7_Vannes_Irrigation", "Table_8_Silos_Stockage", "Table_9_Traceurs_GPS", "Table_10_Maintenance_IoT", "Table_11_Moteur_Vocale_IA", "Table_12_Dictionnaire_Bamanankan", "Table_13_Dictionnaire_Fulfulde", "Table_14_Traduction_Internationale", "Table_15_Logs_Reconnaissance", "Table_16_Apprentissage_IA", "Table_17_Interface_Audio", "Table_18_Dialectes_Andins", "Table_19_Export_Traductions", "Table_20_Transactions_CinetPay", "Table_21_Facturation_Stripe", "Table_22_Passerelle_Flutterwave", "Table_23_Comptes_Cooperatives", "Table_24_Registre_Subventions", "Table_25_Contrats_Blockchain", "Table_26_Taxes_Exportation", "Table_27_Audits_Financiers", "Table_28_Caisses_Secours_Credit", "Table_29_Historique_Paiements", "Table_30_Registre_Enrolements", "Table_31_Codes_Secours_Master", "Table_32_Parefeu_Cybernetique", "Table_33_Droits_Utilisateurs", "Table_34_Sessions_Actives", "Table_35_Chiffrement_Base", "Table_36_Alertes_Systeme", "Table_37_Sauvegardes_Cloud", "Table_38_GTS_Incidents_Batiments", "Table_39_GTS_Automatisation_Enclos", "Table_40_GTS_Precision_Parcelles" ]; supabaseClient.channel('schema-changes') .on('postgres_changes', { event: '*', schema: 'public' }, payload => { location.reload(); }) .subscribe(); function enrolDevice() { document.getElementById('security-screen').classList.add('hidden'); document.getElementById('login-screen').classList.remove('hidden'); } function showOtpRecovery() { document.getElementById('security-screen').classList.add('hidden'); document.getElementById('otp-screen').classList.remove('hidden'); } function cancelOtp() { document.getElementById('otp-screen').classList.remove('hidden'); document.getElementById('security-screen').classList.remove('hidden'); } function sendOtpSecure() { const email = document.getElementById('otp-email').value.trim(); if(email) { alert(✓ [OTP DISTRIBUÉ]\n\nLe code de sécurité a été envoyé par Flash SMS et par Email à votre adresse d'autorité.); document.getElementById('otp-screen').classList.add('hidden'); document.getElementById('login-screen').classList.remove('hidden'); } } function verifyCredentials() { const email = document.getElementById('email').value.trim(); const pass = document.getElementById('password').value; if (email === 'sogobabinj@gmail.com' && pass === 'gts2026') { userRole = 'founder'; allowedTables = allTables; enableFounderFeatures(); } else if (email === 'direction@greentechsystem.green' && pass === 'gts2026') { userRole = 'direction'; allowedTables = allTables; enableDirectionFeatures(); } else if (email === 'staff@greentechsystem.green' && pass === 'gts2026') { userRole = 'staff'; allowedTables = ["Table_1_Capteurs_Humidite_Hydro", "Table_3_Terminaux_Pesage", "Table_4_Capteurs_Meteo_Paille", "Table_38_GTS_Incidents_Batiments", "Table_39_GTS_Automatisation_Enclos"]; enableStaffFeatures(); } else if (email.length > 5 && pass === 'client2026') { userRole = 'client'; allowedTables = ["Table_20_Transactions_CinetPay", "Table_23_Comptes_Cooperatives", "Table_28_Caisses_Secours_Credit"]; enableClientFeatures(); } else { alert("🚨 PARE-FEU : Identifiants ou rôle inconnus. Accès bloqué."); return; } document.getElementById('auth-gateway').classList.add('hidden'); document.getElementById('main-application').classList.remove('hidden'); renderTablesList(allowedTables); } function enableFounderFeatures() { document.getElementById('current-role-badge').innerHTML = '👑 FONDATEUR MAÎTRE'; document.getElementById('btn-mgr-add').classList.remove('hidden'); document.getElementById('mgr-add-min').classList.remove('hidden'); document.getElementById('mgr-add-pro').classList.remove('hidden'); document.getElementById('mgr-edit-min').classList.remove('hidden'); document.getElementById('mgr-edit-pro').classList.remove('hidden'); } function enableDirectionFeatures() { document.getElementById('current-role-badge').innerHTML = '🏢 DIRECTION PRO'; document.getElementById('btn-mgr-add').classList.remove('hidden'); document.getElementById('mgr-edit-min').classList.remove('hidden'); document.getElementById('mgr-edit-pro').classList.remove('hidden'); } function enableStaffFeatures() { document.getElementById('current-role-badge').innerHTML = '🛠️ STAFF / OUVRIER'; document.getElementById('btn-staff-task').classList.remove('hidden'); } function enableClientFeatures() { document.getElementById('current-role-badge').innerHTML = '🌾 CLIENT COOPÉRATIVE'; } function switchTab(tab) { document.getElementById('tab-marketplace').classList.add('hidden'); document.getElementById('tab-tables').classList.add('hidden'); document.getElementById('btn-market').classList.remove('active'); document.getElementById('btn-tables').classList.remove('active'); document.getElementById('tab-' + tab).classList.remove('hidden'); document.getElementById('btn-' + tab).classList.add('active'); } function triggerCreditAgricole(kitName, basePrice) { const total = basePrice * 1.05; alert(🌾 [CRÉDIT AGRICOLE — LEASING AUTOMATIQUE]\n\nDemande soumise à la Table_28.\nKit : ${kitName}\nPrix total (avec intérêt 5%) : ${total.toFixed(0)} XOF.\nMensualités prélevées automatiquement via CinetPay/Stripe après vos 30 jours d'essai.); } function handleSearch(val) { const query = val.toLowerCase().trim(); const filtered = allowedTables.filter(t => t.toLowerCase().includes(query)); renderTablesList(filtered); } function addGlobalField() { const name = prompt("NOM DU NOUVEAU CHAMP / PARCELLE À AJOUTER EN PRODUCTION :"); if(name) alert("✓ [PRODUIT ACTIVÉ] Le champ '" + name + "' a été injecté de façon souveraine dans les tables."); } function deleteGlobalField(id, name) { if(userRole === 'founder' || userRole === 'direction') { if(confirm("🚨 ALERTE CRITIQUE : Confirmez-vous la suppression définitive du champ : " + name + " ?")) { document.getElementById('row-table-' + id).remove(); } } else { alert("⛔ DROITS INSUFFISANTS : Seul le Fondateur et la Direction peuvent révoquer des lignes."); } } function recordDailyTask() { alert("✓ [OUVRIER] Tâche journalière enregistrée."); } function adjustPriceManual(id) { if(userRole === 'founder' || userRole === 'direction') { const p = prompt("Nouveau tarif support :"); if(p) document.getElementById('price-' + id).innerText = p + " XOF"; } } function enrolNewMaterial(type) { const n = prompt("Nom de l'article :"); const p = prompt("Prix unitaire (XOF) :"); if(n && p) { document.getElementById('container-' + type).insertAdjacentHTML('beforeend',${n}${p} XOF
);
}
}
function renderTablesList(list) {
document.getElementById('tables-list-container').innerHTML = list.map((name, i) => 📊 ${name} ${(userRole === 'founder' || userRole === 'direction') ?Révoquer:PROTÉGÉ RLS}
).join('');
}