# Normalize Entity Name

Diseño original para fuzzygraph.

## Funcion a implementar

### normalize_entity_name

- **Dominio:** core
- **Lang:** Python
- **Purity:** pure
- **Signature:** `normalize_entity_name(name: str, entity_type: str = "") -> str`
- **Descripcion:** Normaliza el nombre de una entidad para comparacion y deduplicacion. Aplica reglas diferentes segun el tipo de entidad.
- **Algoritmo:**
  1. Strip whitespace
  2. **Si tipo es IP/email/domain/crypto_wallet/phone:** normalizar formato tecnico
     - IP: strip, lower (para IPv6)
     - Email: lower, strip
     - Domain: lower, strip, remover trailing dot, remover "www." prefix
     - Crypto wallet: strip (case-sensitive, no lowercase — Bitcoin addresses son case-sensitive)
     - Phone: remover espacios, guiones, parentesis, mantener solo digitos y +
  3. **Si tipo es persona:** normalizar nombre humano
     - Remover titulos: "Dr.", "Mr.", "Mrs.", "Prof.", etc.
     - "Apellido, Nombre" → "Nombre Apellido" (detectar formato con coma)
     - Colapsar espacios multiples
     - Title case
  4. **Si tipo es organizacion:** normalizar nombre corporativo
     - Remover sufijos legales: "Inc.", "LLC", "Ltd.", "Corp.", "S.A.", "GmbH", etc.
     - Strip, colapsar espacios
  5. **Default:** lower, strip, colapsar espacios
- **Deps:** `re`
- **Tests:**
  - "  John Smith  " → "John Smith"
  - "Smith, John" → "John Smith"
  - "Dr. Jane Doe" → "Jane Doe"
  - "Google LLC" → "Google"
  - "ACME Corp." → "Acme"
  - "192.168.1.1" → "192.168.1.1" (sin cambio)
  - "user@GMAIL.com" → "user@gmail.com"
  - "www.example.com." → "example.com"
  - "+1 (555) 123-4567" → "+15551234567"
