feat: Gestion des secteurs et migration v3.0.4+304
- Ajout système complet de gestion des secteurs avec contours géographiques - Import des contours départementaux depuis GeoJSON - API REST pour la gestion des secteurs (/api/sectors) - Service de géolocalisation pour déterminer les secteurs - Migration base de données avec tables x_departements_contours et sectors_adresses - Interface Flutter pour visualisation et gestion des secteurs - Ajout thème sombre dans l'application - Corrections diverses et optimisations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
108
api/test_departements_init.php
Normal file
108
api/test_departements_init.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* Script de test pour l'initialisation des contours départementaux
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/src/Config/AppConfig.php';
|
||||
require_once __DIR__ . '/src/Core/Database.php';
|
||||
require_once __DIR__ . '/scripts/init_departements_contours.php';
|
||||
|
||||
echo "Test du système d'initialisation des contours départementaux\n";
|
||||
echo "===========================================================\n\n";
|
||||
|
||||
try {
|
||||
// Initialiser la base de données
|
||||
$appConfig = AppConfig::getInstance();
|
||||
Database::init($appConfig->getDatabaseConfig());
|
||||
$db = Database::getInstance();
|
||||
|
||||
// 1. Vérifier si la table existe
|
||||
$initializer = new DepartementContoursInitializer($db);
|
||||
$tableExists = $initializer->tableExists();
|
||||
|
||||
echo "1. État actuel:\n";
|
||||
echo " - Table x_departements_contours existe : " . ($tableExists ? "OUI" : "NON") . "\n\n";
|
||||
|
||||
if ($tableExists) {
|
||||
// Compter les enregistrements
|
||||
$stmt = $db->query("SELECT COUNT(*) as count FROM x_departements_contours");
|
||||
$count = $stmt->fetch()['count'];
|
||||
echo " - Nombre de départements : $count\n";
|
||||
|
||||
// Lister quelques départements
|
||||
$stmt = $db->query("SELECT code_dept, nom_dept FROM x_departements_contours ORDER BY code_dept LIMIT 10");
|
||||
$depts = $stmt->fetchAll();
|
||||
|
||||
echo " - Premiers départements :\n";
|
||||
foreach ($depts as $dept) {
|
||||
echo " * {$dept['code_dept']} - {$dept['nom_dept']}\n";
|
||||
}
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
// 2. Tester la méthode runIfNeeded
|
||||
echo "2. Test de runIfNeeded():\n";
|
||||
|
||||
// Test avec un utilisateur non-admin
|
||||
echo " - Test avec utilisateur 'test' : ";
|
||||
$result = DepartementContoursInitializer::runIfNeeded($db, 'test');
|
||||
echo ($result === null ? "Ignoré (OK)" : "Exécuté (ERREUR)") . "\n";
|
||||
|
||||
// Test avec d6soft mais table existante
|
||||
if ($tableExists) {
|
||||
echo " - Test avec 'd6soft' et table existante : ";
|
||||
$result = DepartementContoursInitializer::runIfNeeded($db, 'd6soft');
|
||||
echo ($result === null ? "Ignoré (OK)" : "Exécuté (ERREUR)") . "\n";
|
||||
}
|
||||
|
||||
// 3. Test de récupération d'un département spécifique
|
||||
echo "\n3. Test de l'API geo.api.gouv.fr:\n";
|
||||
echo " - Récupération du département 22 (Côtes-d'Armor)...\n";
|
||||
|
||||
$url = "https://geo.api.gouv.fr/departements/22?fields=nom,contour";
|
||||
$context = stream_context_create([
|
||||
'http' => [
|
||||
'timeout' => 10,
|
||||
'header' => "User-Agent: Geosector/1.0\r\n"
|
||||
]
|
||||
]);
|
||||
|
||||
$response = @file_get_contents($url, false, $context);
|
||||
|
||||
if ($response !== false) {
|
||||
$data = json_decode($response, true);
|
||||
echo " ✓ Réponse reçue\n";
|
||||
echo " - Nom : " . ($data['nom'] ?? 'Non disponible') . "\n";
|
||||
echo " - Contour : " . (isset($data['contour']) ? "Disponible" : "Non disponible") . "\n";
|
||||
|
||||
if (isset($data['contour']['coordinates'])) {
|
||||
$coords = $data['contour']['coordinates'];
|
||||
$pointCount = 0;
|
||||
|
||||
// Compter les points selon la structure
|
||||
if (isset($coords[0][0]) && is_numeric($coords[0][0])) {
|
||||
$pointCount = count($coords);
|
||||
} elseif (isset($coords[0]) && is_array($coords[0])) {
|
||||
$pointCount = count($coords[0]);
|
||||
}
|
||||
|
||||
echo " - Nombre de points : $pointCount\n";
|
||||
}
|
||||
} else {
|
||||
echo " ✗ Erreur lors de la récupération\n";
|
||||
}
|
||||
|
||||
// 4. Si la table n'existe pas, proposer de l'initialiser
|
||||
if (!$tableExists) {
|
||||
echo "\n4. La table n'existe pas.\n";
|
||||
echo " Pour l'initialiser :\n";
|
||||
echo " - Connectez-vous avec l'utilisateur 'd6soft'\n";
|
||||
echo " - OU exécutez : php scripts/init_departements_contours.php\n";
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo "✗ Erreur : " . $e->getMessage() . "\n";
|
||||
echo "Trace:\n" . $e->getTraceAsString() . "\n";
|
||||
}
|
||||
|
||||
echo "\n";
|
||||
Reference in New Issue
Block a user