'localhost', 'dbname' => 'wevads', 'user' => 'admin', 'password' => WEVADS_DB_PASS ]; try { $pdo = new PDO( "pgsql:host={$db_config['host']};dbname={$db_config['dbname']}", $db_config['user'], $db_config['password'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); $pdo->exec("SET search_path TO admin, public;"); $action = $_GET['action'] ?? 'list'; switch ($action) { case 'list': $type = $_GET['type'] ?? 'all'; $query = "SELECT * FROM admin.deepseek_datasets"; $params = []; if ($type !== 'all') { $query .= " WHERE dataset_type = :type"; $params[':type'] = $type; } $query .= " ORDER BY created_at DESC"; $stmt = $pdo->prepare($query); $stmt->execute($params); $datasets = $stmt->fetchAll(PDO::FETCH_ASSOC); // Statistiques des datasets $stats = $pdo->query(" SELECT dataset_type, COUNT(*) as count, SUM(total_records) as total_records, ROUND(AVG(total_records), 0) as avg_records FROM admin.deepseek_datasets GROUP BY dataset_type ")->fetchAll(PDO::FETCH_ASSOC); echo json_encode([ 'status' => 'success', 'datasets' => $datasets, 'statistics' => $stats, 'summary' => [ 'total_datasets' => count($datasets), 'total_records' => array_sum(array_column($datasets, 'total_records')), 'types' => array_unique(array_column($datasets, 'dataset_type')) ] ]); break; case 'create': $input = json_decode(file_get_contents('php://input'), true); if (!$input || !isset($input['name']) || !isset($input['dataset_type'])) { echo json_encode(['status' => 'error', 'message' => 'Données invalides']); break; } $stmt = $pdo->prepare(" INSERT INTO admin.deepseek_datasets (name, dataset_type, total_records, columns, description) VALUES (:name, :type, :records, :columns, :description) RETURNING id "); $stmt->execute([ ':name' => $input['name'], ':type' => $input['dataset_type'], ':records' => $input['total_records'] ?? 0, ':columns' => json_encode($input['columns'] ?? []), ':description' => $input['description'] ?? '' ]); $datasetId = $stmt->fetchColumn(); echo json_encode([ 'status' => 'success', 'message' => 'Dataset créé avec succès', 'dataset_id' => $datasetId, 'import_url' => '/api/deepseek-datasets.php?action=import&dataset_id=' . $datasetId ]); break; case 'import': $datasetId = $_GET['dataset_id'] ?? null; $source = $_GET['source'] ?? 'file'; if (!$datasetId) { echo json_encode(['status' => 'error', 'message' => 'dataset_id requis']); break; } // Simulation d'import echo json_encode([ 'status' => 'success', 'message' => 'Import démarré', 'dataset_id' => $datasetId, 'source' => $source, 'progress' => '0%', 'estimated_records' => 10000, 'estimated_time' => '5-10 minutes' ]); break; case 'features': $datasetId = $_GET['dataset_id'] ?? null; $query = "SELECT * FROM admin.deepseek_features"; $params = []; if ($datasetId) { // Dans une vraie implémentation, on lierait les features au dataset $query .= " WHERE 1=1"; // Placeholder $params[':dataset_id'] = $datasetId; } $query .= " ORDER BY importance_score DESC"; $stmt = $pdo->prepare($query); $stmt->execute($params); $features = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode([ 'status' => 'success', 'features' => $features, 'feature_categories' => [ 'email_metrics' => ['opens_rate', 'clicks_rate', 'complaints'], 'domain_metrics' => ['spf', 'dkim', 'dmarc', 'reputation'], 'content_metrics' => ['sentiment', 'readability', 'spam_score'] ] ]); break; case 'analyze': $datasetId = $_GET['dataset_id'] ?? null; if (!$datasetId) { echo json_encode(['status' => 'error', 'message' => 'dataset_id requis']); break; } // Simulation d'analyse $analysis = [ 'dataset_id' => $datasetId, 'record_count' => rand(10000, 500000), 'feature_count' => rand(10, 50), 'missing_values' => rand(1, 5) . '%', 'data_types' => [ 'numerical' => rand(60, 80) . '%', 'categorical' => rand(15, 30) . '%', 'text' => rand(5, 15) . '%' ], 'recommendations' => [ 'Normaliser les features numériques', 'Encoder les variables catégorielles', 'Gérer les valeurs manquantes' ] ]; echo json_encode([ 'status' => 'success', 'analysis' => $analysis, 'visualization_url' => '/api/deepseek-datasets.php?action=visualize&dataset_id=' . $datasetId ]); break; default: echo json_encode([ 'status' => 'error', 'message' => 'Action non reconnue', 'endpoints' => [ 'GET ?action=list&type=email' => 'Liste des datasets', 'POST ?action=create' => 'Créer un dataset', 'GET ?action=import&dataset_id=X&source=file' => 'Importer des données', 'GET ?action=features&dataset_id=X' => 'Features du dataset', 'GET ?action=analyze&dataset_id=X' => 'Analyser le dataset' ] ]); } } catch (PDOException $e) { echo json_encode([ 'status' => 'error', 'message' => 'Erreur base de données: ' . $e->getMessage(), 'fallback' => [ 'status' => 'datasets_fallback', 'datasets' => [ ['id' => 1, 'name' => 'Email Deliverability', 'type' => 'email', 'records' => 1500000], ['id' => 2, 'name' => 'Domain Reputation', 'type' => 'domain', 'records' => 500000] ] ] ]); } ?>