from optimizer import solve_optimization from landmarks_manager import generate_landmarks from structs.landmarks import LandmarkTest from structs.landmarks import Landmark from structs.landmarktype import LandmarkType from structs.preferences import Preferences, Preference from fastapi import FastAPI, Query, Body from typing import List app = FastAPI() # Assuming frontend is calling like this : #"http://127.0.0.1:8000/process?param1={param1}¶m2={param2}" @app.post("/optimizer_coords/{longitude}/{latitude}/{city_country}") def main1(preferences: Preferences = Body(...), longitude: float = None, latitude: float = None, city_country: str = None) -> List[Landmark]: # From frontend get longitude, latitude and prefence list # Generate the landmark list landmarks = generate_landmarks(preferences=preferences, city_country=city_country, coordinates=tuple((longitude, latitude))) # Set the max distance max_steps = 90 # Compute the visiting order visiting_order = solve_optimization(landmarks, max_steps, True) return visiting_order @app.get("test") def test(): # CONSTRAINT TO RESPECT MAX NUMBER OF STEPS max_steps = 16 # Initialize all landmarks (+ start and goal). Order matters here landmarks = [] landmarks.append(LandmarkTest("départ", -1, (0, 0))) landmarks.append(LandmarkTest("tour eiffel", 99, (0,2))) # PUT IN JSON landmarks.append(LandmarkTest("arc de triomphe", 99, (0,4))) landmarks.append(LandmarkTest("louvre", 99, (0,6))) landmarks.append(LandmarkTest("montmartre", 99, (0,10))) landmarks.append(LandmarkTest("concorde", 99, (0,8))) landmarks.append(LandmarkTest("arrivée", -1, (0, 0))) visiting_order = solve_optimization(landmarks, max_steps, True) return visiting_order # should return landmarks = the list of Landmark (ordered list) #return("max steps :", max_steps, "\n", visiting_order) # input city, country in the form of 'Paris, France' @app.post("/test2/{city_country}") def test2(city_country: str, preferences: Preferences = Body(...)) -> List[Landmark]: landmarks = generate_landmarks(city_country, preferences) max_steps = 9000000 visiting_order = solve_optimization(landmarks, max_steps, True)