Version initiale — carte des établissements scolaires
Carte Leaflet (annuaire Éducation nationale) + API PHP/MySQL : fiche établissement (effectifs, IPS, population INSEE, DPE ADEME), GED documents/photos, commentaires par groupe, gestion utilisateurs et politique de mots de passe. Imports opendata (effectifs, IPS, population, DPE, IRIS). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* Import des DPE ADEME + rattachement aux établissements (super-admin).
|
||||
* POST body { dep?: "75", radius?: 80 }
|
||||
* → télécharge le dataset DPE tertiaire, remplit « dpe », puis rattache
|
||||
* les DPE aux écoles par proximité (table « etab_dpe »).
|
||||
*
|
||||
* ⚠ Opération longue (le dataset complet ≈ 532 000 DPE) : à réserver à un
|
||||
* import ponctuel. Pour de gros volumes, préférez les scripts CLI
|
||||
* (php import_dpe.php ; php match_dpe.php). Accès Internet requis côté serveur.
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
require __DIR__ . '/dpe_lib.php';
|
||||
|
||||
try {
|
||||
require_super();
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
json_error('Méthode non supportée.', 405);
|
||||
}
|
||||
|
||||
set_time_limit(0);
|
||||
ini_set('memory_limit', '512M');
|
||||
|
||||
$in = body_json();
|
||||
$dep = isset($in['dep']) && $in['dep'] !== '' ? preg_replace('/[^0-9AB]/', '', strtoupper((string) $in['dep'])) : null;
|
||||
$radius = isset($in['radius']) ? max(1, min(2000, (int) $in['radius'])) : 5;
|
||||
|
||||
$pdo = db();
|
||||
$imported = dpe_import($pdo, $dep, static fn(string $m) => null);
|
||||
$geo = (int) $pdo->query('SELECT COUNT(*) FROM dpe WHERE lat IS NOT NULL')->fetchColumn();
|
||||
$match = dpe_match($pdo, $radius, static fn(string $m) => null);
|
||||
|
||||
json_out([
|
||||
'ok' => true,
|
||||
'imported' => $imported,
|
||||
'geocoded' => $geo,
|
||||
'radius' => $radius,
|
||||
'links' => $match['pairs'],
|
||||
'etabs' => $match['ecoles'],
|
||||
'dep' => $dep,
|
||||
]);
|
||||
} catch (Throwable $e) {
|
||||
if (isset($pdo) && $pdo->inTransaction()) {
|
||||
$pdo->rollBack();
|
||||
}
|
||||
json_error('Import DPE : ' . $e->getMessage(), 500);
|
||||
}
|
||||
Reference in New Issue
Block a user