AUTO-FRANCE-PARTS commited on
Commit
e6ce7f9
·
1 Parent(s): ee194aa

refactor: Update nearby parcel retrieval to return structured response and improve error handling

Browse files
app.py CHANGED
@@ -52,7 +52,7 @@ async def get_nearby_parcels(
52
  longitude: float = Query(..., description="Longitude du point central en degrés décimaux"),
53
  radius_m: float = Query(200, description="Rayon de recherche en mètres", gt=0),
54
  step_m: float = Query(100, description="Pas d'échantillonnage en mètres (densité des points)", gt=0)
55
- ) -> List[Dict[str, Any]]:
56
  """
57
  Récupère les parcelles à proximité d'un point donné par échantillonnage.
58
 
@@ -77,7 +77,10 @@ async def get_nearby_parcels(
77
  # Exécution du use case
78
  nearby_parcels = await get_nearby_parcels_use_case(latitude, longitude)
79
 
80
- return nearby_parcels
 
 
 
81
 
82
  except Exception as e:
83
  raise HTTPException(
 
52
  longitude: float = Query(..., description="Longitude du point central en degrés décimaux"),
53
  radius_m: float = Query(200, description="Rayon de recherche en mètres", gt=0),
54
  step_m: float = Query(100, description="Pas d'échantillonnage en mètres (densité des points)", gt=0)
55
+ ) -> Dict :
56
  """
57
  Récupère les parcelles à proximité d'un point donné par échantillonnage.
58
 
 
77
  # Exécution du use case
78
  nearby_parcels = await get_nearby_parcels_use_case(latitude, longitude)
79
 
80
+ return {
81
+ "parcels": nearby_parcels["parcels"],
82
+ "number_of_points": nearby_parcels["number_of_points"]
83
+ }
84
 
85
  except Exception as e:
86
  raise HTTPException(
domain/repositories/parcel_repository.py CHANGED
@@ -23,7 +23,7 @@ class ParcelRepository:
23
  parcel_data = await self.lexicon_api.get_parcel_from_lat_lon(latitude, longitude)
24
 
25
  # Si l'API ne retourne pas de données de parcelle, on retourne None
26
- if not parcel_data or not parcel_data.get('@id'):
27
  return None
28
 
29
  return parcel_data
 
23
  parcel_data = await self.lexicon_api.get_parcel_from_lat_lon(latitude, longitude)
24
 
25
  # Si l'API ne retourne pas de données de parcelle, on retourne None
26
+ if not parcel_data :
27
  return None
28
 
29
  return parcel_data
domain/use_cases/get_nearby_parcels_by_sampling.py CHANGED
@@ -14,7 +14,7 @@ class GetNearbyParcelsBySamplingUseCase:
14
  self.to_projected = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True).transform
15
  self.to_geographic = Transformer.from_crs("EPSG:3857", "EPSG:4326", always_xy=True).transform
16
 
17
- async def __call__(self, lat: float, lon: float) -> List[dict]:
18
  center = transform(self.to_projected, Point(lon, lat))
19
 
20
  sampled_points = self._generate_sampling_points(center)
@@ -43,7 +43,10 @@ class GetNearbyParcelsBySamplingUseCase:
43
  nearby_parcels.append(parcel)
44
  seen_ids.add(parcel_id)
45
 
46
- return nearby_parcels
 
 
 
47
 
48
  def _generate_sampling_points(self, center: Point) -> List[Point]:
49
  points = []
 
14
  self.to_projected = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True).transform
15
  self.to_geographic = Transformer.from_crs("EPSG:3857", "EPSG:4326", always_xy=True).transform
16
 
17
+ async def __call__(self, lat: float, lon: float) -> dict:
18
  center = transform(self.to_projected, Point(lon, lat))
19
 
20
  sampled_points = self._generate_sampling_points(center)
 
43
  nearby_parcels.append(parcel)
44
  seen_ids.add(parcel_id)
45
 
46
+ return {
47
+ "parcels": nearby_parcels,
48
+ "number_of_points": len(sampled_points)
49
+ }
50
 
51
  def _generate_sampling_points(self, center: Point) -> List[Point]:
52
  points = []