🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
136 lines
2.8 KiB
Markdown
136 lines
2.8 KiB
Markdown
---
|
|
id: "US-SCR-003"
|
|
title: "Normalizacion de datos de multiples fuentes"
|
|
type: "User Story"
|
|
epic: "IAI-007"
|
|
status: "Draft"
|
|
story_points: 8
|
|
priority: "Alta"
|
|
project: "inmobiliaria-analytics"
|
|
created_date: "2026-01-04"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# US-SCR-003: Normalizacion de datos de multiples fuentes
|
|
|
|
---
|
|
|
|
## User Story
|
|
|
|
**Como** sistema de analytics
|
|
**Quiero** que los datos de diferentes portales se normalicen a un schema unificado
|
|
**Para** poder realizar analisis consistentes independientemente de la fuente
|
|
|
|
---
|
|
|
|
## Descripcion
|
|
|
|
Implementar el pipeline ETL que transforma datos raw de cada portal al schema normalizado, incluyendo limpieza de datos, geocoding, calculo de metricas derivadas y deteccion de duplicados.
|
|
|
|
---
|
|
|
|
## Criterios de Aceptacion
|
|
|
|
### Funcionales
|
|
|
|
- [ ] Tipos de propiedad se mapean a enum unificado
|
|
- [ ] Precios se convierten a formato numerico estandar
|
|
- [ ] Direcciones se geocodifican a lat/lon
|
|
- [ ] Duplicados cross-source se detectan y fusionan
|
|
- [ ] Precio por m2 se calcula automaticamente
|
|
|
|
### Calidad de Datos
|
|
|
|
- [ ] 95%+ de registros tienen geocoding exitoso
|
|
- [ ] 0% de precios con formato incorrecto
|
|
- [ ] Duplicados detectados con precision > 98%
|
|
|
|
---
|
|
|
|
## Transformaciones
|
|
|
|
```yaml
|
|
transformaciones:
|
|
precio:
|
|
input: "$3,500,000 MXN" | "3.5 millones"
|
|
output: 3500000.00
|
|
pasos:
|
|
- remove_currency_symbols
|
|
- expand_abbreviations
|
|
- to_decimal
|
|
|
|
tipo_propiedad:
|
|
input: "Casa en Venta" | "Casa" | "Residencia"
|
|
output: "house"
|
|
pasos:
|
|
- lowercase
|
|
- normalize_synonyms
|
|
- map_to_enum
|
|
|
|
ubicacion:
|
|
input: "Col. Providencia, Guadalajara, Jal."
|
|
output:
|
|
neighborhood: "Providencia"
|
|
city: "Guadalajara"
|
|
state: "Jalisco"
|
|
pasos:
|
|
- parse_address_components
|
|
- normalize_state_names
|
|
- geocode_to_coordinates
|
|
```
|
|
|
|
---
|
|
|
|
## Reglas de Deduplicacion
|
|
|
|
```yaml
|
|
deduplicacion:
|
|
estrategia_primaria:
|
|
match: source_id + source
|
|
accion: update
|
|
|
|
estrategia_fallback:
|
|
match:
|
|
- address_normalized
|
|
- price +/- 5%
|
|
- type
|
|
- size +/- 10%
|
|
accion: merge
|
|
|
|
merge_policy:
|
|
precio: most_recent
|
|
descripcion: longest
|
|
fotos: union
|
|
first_seen: oldest
|
|
last_seen: newest
|
|
```
|
|
|
|
---
|
|
|
|
## Tareas Tecnicas
|
|
|
|
| # | Tarea | Estimacion |
|
|
|---|-------|------------|
|
|
| 1 | Parser de precios robusto | 3h |
|
|
| 2 | Normalizador de tipos | 2h |
|
|
| 3 | Integracion geocoding API | 4h |
|
|
| 4 | Algoritmo de deduplicacion | 6h |
|
|
| 5 | Calculo de metricas derivadas | 2h |
|
|
| 6 | Tests unitarios | 4h |
|
|
|
|
**Total estimado:** 21h (~3 dias)
|
|
|
|
---
|
|
|
|
## Definition of Done
|
|
|
|
- [ ] Pipeline procesa 1000 propiedades/hora
|
|
- [ ] Metricas de calidad cumplen objetivos
|
|
- [ ] Tests de transformacion pasan
|
|
- [ ] Documentacion de mappings completa
|
|
|
|
---
|
|
|
|
**Asignado a:** -
|
|
**Sprint:** -
|