Étape une — le score
Chaque lieu candidat dans la ville reçoit un score. L'importance passe en premier : liens interlangues Wikipédia, nombre de pages vues et statut patrimonial, calculés une seule fois lors de l'ingestion plutôt qu'à chaque requête. Vos intérêts pondèrent ensuite ce score par facette, ainsi choisir les musées rehausse les musées sans supprimer tout le reste.
La pondération plutôt que le filtrage est délibérée. Un filtre uniquement historique à Istanbul éliminerait le ferry du Bosphore, et aucun plan honnête de trois jours n'omet le ferry.
Étape deux — le regroupement
Le pool noté est regroupé géographiquement avant toute programmation, car le temps de trajet est la véritable contrainte. Deux arrêts sur des rives opposées peuvent coûter une heure de déplacement ; deux arrêts à Fatih coûtent huit minutes. Le regroupement en amont est ce qui empêche une journée de zigzaguer d'un bout à l'autre de la ville.
La masse du groupement décroît avec le rang, ainsi une journée construite autour d'un lieu exceptionnel n'entraîne pas six lieux médiocres uniquement parce qu'ils sont proches.
- La durée du séjour limite le rayon : un jour reste dans un rayon de 15 km, trois jours 25 km, une semaine 45 km.
- Un seul arrêt peut occuper une journée entière quand il absorbe plus de 60 % du créneau et se situe près de la limite du rayon.
- Les jours consécutifs sont éloignés géographiquement pour que vous ne traversiez pas le même pont deux fois.
Étape trois — l'ordonnancement
Chaque groupement est ordonnancé en une séquence de marche sur une matrice de distances injectée. Les temps de trajet sont de vrais résultats d'itinéraire, pas des estimations à vol d'oiseau, et la matrice n'est pas supposée symétrique — monter à Beyoğlu n'est pas la même chose que descendre.
Étape quatre — la programmation
C'est seulement maintenant que l'horloge entre en jeu. La séquence est programmée en fonction des heures d'ouverture enregistrées de chaque lieu et de votre fenêtre horaire, ajustée par le tempo et le type de groupe. Les pauses repas sont placées dans leurs fenêtres comme des arrêts à part entière, car elles représentent du temps réel.
- Tempo
- Un multiplicateur sur la durée de visite : relaxé ×1,67, standard ×1,00, intensif ×0,67. Aucune limite sur le nombre d'arrêts.
- Type de groupe
- Un facteur sur la fenêtre horaire de la journée : seul ×1,1, couple ×0,9, amis ×1,0, famille ×0,75.
- Fenêtre horaire
- Vos propres heures de début et de fin, mises à l'échelle par le facteur de groupe.
- Nombre d'arrêts
- Un résultat. La journée se remplit jusqu'à épuisement de son budget temps, puis s'arrête.
Deux invariants disposent de tests dédiés et tiennent sans exception : aucun arrêt n'est programmé pendant la fermeture de son lieu, et le total planifié d'une journée — temps de visite × tempo, plus les déplacements, plus les pauses — ne dépasse jamais la fenêtre horaire de cette journée.
Quand les données sont maigres
Un lieu sans horaires d'ouverture enregistrés est programmé de manière conservative au milieu de la journée et marqué comme non vérifié. Une durée issue de la valeur par défaut de la catégorie plutôt que du lieu est indiquée avec un signe approximatif. Et lorsqu'une ville compte moins de lieux intéressants que vos journées ne le nécessitent, vous obtenez des journées plus courtes et un avertissement — pas de remplissage artificiel.