Files
html/api/v83-dark-scout-enriched.php
2026-04-20 04:20:01 +02:00

100 lines
3.7 KiB
PHP

<?php
// V83 Dark Scout Enriched API - market intel for SAP/Pharma/ERP consulting
// Doctrine 65: drill-down multi-source, doctrine 4: honest
header('Content-Type: application/json; charset=utf-8');
$q = $_GET['q'] ?? '';
$preset = $_GET['preset'] ?? '';
// Preset queries for Dark Scout categories
$presets = [
'sap_maroc' => 'consulting SAP Maroc Casablanca',
'pharma_intel' => 'pharma Maroc digital transformation HCP',
'erp_migration' => 'ERP migration SAP S/4HANA Morocco',
'devops_jobs' => 'recrutement DevOps Casablanca LinkedIn',
'ai_consulting' => 'AI consulting Maghreb enterprise',
'vistex_deals' => 'Vistex pricing rebates Maroc',
'huawei_cloud' => 'Huawei Cloud partner MENA',
'abbott_pharma' => 'Abbott MENA pharma pipeline',
'competitor_moroc' => 'Capgemini Deloitte Accenture Maroc',
];
if ($preset && isset($presets[$preset])) $q = $presets[$preset];
if (!$q) { echo json_encode(['error' => 'no query or preset', 'presets' => array_keys($presets)]); exit; }
// Multi-engine search via searxng-proxy
$engines_list = [
'general' => 'google,bing,duckduckgo',
'jobs' => 'indeed,linkedin',
'news' => 'google_news',
'social' => 'linkedin,twitter',
];
$engine_key = $_GET['cat'] ?? 'general';
$engines = $engines_list[$engine_key] ?? 'google,bing';
$url = "http://127.0.0.1/api/searxng-proxy.php?k=WEVSX2026&q=" . urlencode($q) . "&engines=" . urlencode($engines);
$ch = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15]);
$body = curl_exec($ch);
curl_close($ch);
$data = @json_decode($body, true) ?: [];
$results = $data['results'] ?? [];
// Enrich with classification
function classify_result($r) {
$t = strtolower(($r['title'] ?? '') . ' ' . ($r['content'] ?? ''));
if (preg_match('/sap|s\/4hana|abap|fiori/', $t)) return 'sap';
if (preg_match('/pharma|hcp|medical|hospital|medecin|docteur|pharmacie/', $t)) return 'pharma';
if (preg_match('/ethica|weval|consulting sap maroc/', $t)) return 'competitor';
if (preg_match('/linkedin\.com\/in\/|jobs/', $t)) return 'lead';
if (preg_match('/ai|ia|gpt|claude|llm|intelligence artificielle/', $t)) return 'ai';
if (preg_match('/vistex|rebate|pricing/', $t)) return 'vistex';
if (preg_match('/huawei|cloud|aws|azure/', $t)) return 'cloud';
return 'general';
}
$enriched = [];
$categories_count = [];
foreach ($results as $r) {
$cat = classify_result($r);
$categories_count[$cat] = ($categories_count[$cat] ?? 0) + 1;
$enriched[] = [
'title' => $r['title'] ?? '',
'url' => $r['url'] ?? '',
'snippet' => substr($r['content'] ?? '', 0, 220),
'category' => $cat,
'engine' => $r['engine'] ?? '',
'score' => $r['score'] ?? 0,
];
}
// Save to Qdrant-friendly structure + append to intel log
$intel_log = '/var/www/html/api/dark-scout-intel-log.json';
$history = @json_decode(@file_get_contents($intel_log), true) ?: [];
$history[] = [
'ts' => date('c'),
'q' => $q,
'preset' => $preset ?: null,
'results' => count($enriched),
'categories' => $categories_count,
];
$history = array_slice($history, -50);
@file_put_contents($intel_log, json_encode($history, JSON_PRETTY_PRINT));
$out = [
'v' => 'V83-dark-scout-enriched',
'ts' => date('c'),
'query' => $q,
'preset' => $preset ?: null,
'engines' => $engines,
'results' => $enriched,
'count' => count($enriched),
'categories' => $categories_count,
'presets_available' => $presets,
'intel_history_count' => count($history),
'doctrine_4' => 'honest - real SearXNG results only, no synthetic',
];
echo json_encode($out, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);