Localizacion y Pais (LATAM)
La plataforma opera para paises de LATAM hispanohablante. En primer acceso se sugiere pais por IP, pero el usuario siempre puede elegir manualmente.
1. Flujo UX
- Deteccion automatica (GeoIP o
CF-IPCountry). - Confirmacion de pais detectado si pertenece a catalogo soportado.
- Selector manual obligatorio cuando no hay deteccion valida.
- Persistencia en perfil autenticado y cookie/localStorage para anonimos.
- Propagacion en requests con
X-Country-Code.
2. Fuente unica de paises y niveles
- El selector se alimenta de
/api/v1/meta/countries(soloenabled=true). - Los niveles geograficos se alimentan de
/api/v1/meta/location-levels?country_code=XX. - Ambos endpoints salen del mismo catalogo admin (
Catalogs), no de listas estaticas en frontend.
3. Estrategia multi-pais para niveles
Modelo tecnico fijo:
level=0,node_type=countrylevel=1,node_type=regionlevel=2,node_type=locality
Modelo visual por pais:
- GT: Region = Departamento, Localidad = Municipio
- MX: Region = Estado, Localidad = Municipio
- AR: Region = Provincia, Localidad = Municipio/Partido
Conclusión: no se crean columnas por pais; se usa metadata de labels por pais.
4. Contrato API esperado
GET /api/v1/meta/countriesGET /api/v1/meta/location-levels?country_code=XXPOST /api/v1/admin/catalogs/geo/countriesPOST /api/v1/admin/catalogs/geo/departmentsPOST /api/v1/admin/catalogs/geo/departments/bulkPOST /api/v1/admin/catalogs/geo/municipalitiesPOST /api/v1/admin/catalogs/geo/municipalities/bulkPATCH /api/v1/admin/catalogs/geo/{id}DELETE /api/v1/admin/catalogs/geo/{id}(solo sin hijos/referencias)
5. Reglas de negocio
country_codedebe ser ISO 3166-1 alpha-2.- Si un pais pasa a
enabled=false, el usuario debe reconfirmar pais en siguiente sesion. - No bloquear por mismatch de IP cuando usuario selecciona manualmente un pais soportado.
6. Seguridad y privacidad
- GeoIP solo para sugerencia; no persistir IP en perfil.
- Registrar eventos:
country_detected,country_confirmed,country_changed,country_rejected. - Validar
X-Country-Codecontra whitelist en backend.
7. QA minimo
- IP soportada -> preseleccion y continuar.
- IP no soportada -> selector manual obligatorio.
- Cambio manual de pais -> se actualiza
X-Country-Codeen siguiente request. - Usuario autenticado -> pais de perfil prevalece sobre cookie.