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

210 lines
7.5 KiB
PHP
Executable File

<?php
require_once("/opt/wevads/config/credentials.php");
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$db_config = [
'host' => '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]
]
]
]);
}
?>