Repository navigation
Unifier la ville d'une position et la détection des doublons de lieux entre l'admin et l'éditeur #616
Copy link
Copy link
Open
Labels
area:apiapps/apiapps/apiprio:P3BasseBassestatus:readySpec complète, prêt à coderSpec complète, prêt à codertype:choreOutillage, infra, processOutillage, infra, process
Milestone
Description
Contexte
Epic : #5
Admin-Web › A-04 (import CSV, doublons) · Admin-Web › Villes · API › Lieux · A-04 · E-13 · D-049 · D-085
Maquette : sans objet — unification de code de l'API, aucun écran ne change
Relecture MANAGER de la pile admin du 2026-10-21 (récapitulatif, ligne F7) : deux écrivains de lieux suivent deux règles.
- Admin (PR feat(admin): tableau de bord, lieux, parcours et import CSV #398, Admin : lieux, parcours, import CSV et tableau de bord (A-04, A-05) #55, fusionnée le 2026-10-21) :
findCityId(apps/api/src/catalog/place-writes.ts), lieu hors de toute ville refusé en 400 ; doublon = même nom à moins de 50 m (import CSV). - Éditeur (PR feat(api): chercher, créer et modifier un lieu (E-13) #594 de Marco, API : rechercher, créer et modifier un lieu avec détection de doublons (E-13) #46, ouverte) :
cityHolding(apps/api/src/places/create.ts), refus en 422outside_service_area; doublon = similarité de nom ≥ 0,4 (trigrammes) à moins de 50 m (placeDuplicateNameSimilarity,placeDuplicateRadiusM). - Relevé à la relecture de feat(api): chercher, créer et modifier un lieu (E-13) #594 :
PATCH /places/:idpar un modérateur hors de l'admin n'écrit pas de ligneadmin_actions, alors que la même modification depuis A-04 en écrit une.
Bloqué par #46 : à faire une fois #594 fusionnée.
Comportement attendu
- Une seule fonction de ville d'une position, dans un module des lieux partagé par l'admin et l'éditeur, et une seule réponse pour une position hors de toute ville (422
validation_erroravecoutside_service_area, comme un corps invalide selon D-071), jusqu'à ce que Ouvrir la création à toutes les villes : ville déduite de la position, recherche sans filtre de ville #340 crée la ville. - Une seule détection de doublon (rayon et similarité de
packages/shared), utilisée parPOST /places, la création d'un lieu dans A-04 et l'aperçu de l'import CSV ; « même nom à moins de 50 m » de l'import devient un cas de la règle commune. - La modification d'un lieu par un membre de l'équipe écrit
admin_actions(avant, après), qu'elle vienne de A-04 ou dePATCH /places/:id.
Critères d'acceptation
-
findCityIdetcityHoldingne font plus qu'un ; une position hors ville répond pareil dans l'admin et dans l'éditeur ; tests - L'import CSV et
POST /placessignalent les mêmes doublons pour le même fichier de cas (tests) -
PATCH /places/:idpar un modérateur écrit une ligneadmin_actions; test - Aucun changement de comportement pour l'app hors de ces trois points (tests existants verts)
Notes techniques
Si la règle de doublon de l'import change (similarité au lieu du nom exact), le préciser dans la PR : DESIGN alignera A-04. Niveau 1 ou 2 selon le diff (le journal touche la journalisation).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:apiapps/apiapps/apiprio:P3BasseBassestatus:readySpec complète, prêt à coderSpec complète, prêt à codertype:choreOutillage, infra, processOutillage, infra, process
Activity