SPB Git

spb/vrai-prix Public

Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.

TypeScript 96.7% CSS 3.2%
1.3 KB · 37 lines typescript
Raw Blame History
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// Recherche par carte : unités d'évaluation autour d'un point (boîte englobante).3// Le rayon est plafonné côté serveur — la carte doit être assez zoomée.4import { NextRequest, NextResponse } from "next/server";5import { unitsNear } from "@/lib/db";67const MAX_HALF_LAT = 0.02; // ~2,2 km8const MAX_HALF_LNG = 0.03;9const MAX_LIMIT = 400;1011export function GET(req: NextRequest) {12  const q = req.nextUrl.searchParams;13  const lat = Number(q.get("lat"));14  const lng = Number(q.get("lng"));15  if (!Number.isFinite(lat) || !Number.isFinite(lng)) {16    return NextResponse.json({ error: "lat et lng requis" }, { status: 400 });17  }18  const halfLat = Math.min(Math.abs(Number(q.get("halfLat")) || 0.008), MAX_HALF_LAT);19  const halfLng = Math.min(Math.abs(Number(q.get("halfLng")) || 0.012), MAX_HALF_LNG);20  const limit = Math.min(Math.abs(Number(q.get("limit")) || 300), MAX_LIMIT);21  try {22    const results = unitsNear(lat, lng, halfLat, halfLng, limit).map((u) => ({23      id: u.id_provinc,24      adresse: u.adresse,25      apt: u.apt,26      municipalite: u.municipalite,27      typeProp: u.type_prop,28      lat: u.lat,29      lng: u.lng,30      est2026: u.est_2026,31    }));32    return NextResponse.json({ results });33  } catch {34    return NextResponse.json({ results: [] });35  }36}37