refactor(search): remplacer l’index .six hors-ligne par find/json + lignes en mémoire #6
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
CyrilLeblanc/gresit#6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
La recherche lit aujourd'hui un index binaire bundlé
assets/grenoble-search.six(data/local/SearchIndex.kt) qui indexe 3 types —LINE,STOP,ADDRESS— et fonctionne 100 % hors-ligne. Cet index est généré à froid parscripts/generate_addresses.py(transit-data.json + géocodage BAN), est gitignoré, et doit être régénéré à chaque évolution du réseau. Cela ajoute du poids à l'APK, un pipeline à maintenir, et fige des données (adresses, noms d'arrêts) qui évoluent côté M réso.L'API M réso
find/jsoncouvre nativement la recherche d'arrêts et d'adresses à jour ; les lignes (jeu borné, ~60) sont déjà chargées en RAM depuis Room.Comportement attendu
Supprimer l'index
.sixet son pipeline, et répartir la recherche sur trois sources :state.lines(Room), filtre surshortName/longName. Reste hors-ligne.GET https://data.mobilites-m.fr/api/find/json?query=<q>&types=clusters&epci=All. L'API renvoie un GeoJSON dontfeatures[].properties.id(ex.SEM:VICTHUGO) matche directement lesClusterData.idde l'app → résolution Room pour les données complètes.find/json?types=rue,lieux(remplace BAN). Couvre l'agglomération M réso (LaMetro).Décisions retenues :
clusters,rue,lieuxuniquement (pas de POI M réso secondaires : parkings, recharge…).Pistes d'implémentation
findJson(query, types, epci)→ désérialisation du GeoJSON (FeatureCollection→features[].properties.{type,id,name,city}+geometry.coordinates). L'intercepteurOriginexiste déjà (TransitApp.kt).SearchViewModel: debounce (~250–300 ms) avant l'appel ; fusion des résultats lignes (mémoire) + clusters/adresses (API) ; état « recherche indisponible hors-ligne » explicite plutôt qu'un crash.data/local/SearchIndex.kt, l'assetassets/grenoble-search.six,scripts/generate_addresses.py, et l'import du.sixau premier lancement.Critères d'acceptation
clusters).rue/lieux)..sixdans les assets ni le build ;assembleReleaseOK.