|  |  | @ -38,11 +38,14 @@ Fase A1 — Aprendizaje “agresivo” al entrar en grupos (Completada) | 
			
		
	
		
		
			
				
					
					|  |  |  |     - Si el payload incluye id + jid, rellena alias automáticamente. |  |  |  |     - Si el payload incluye id + jid, rellena alias automáticamente. | 
			
		
	
		
		
			
				
					
					|  |  |  | - Mantener activo ContactsService.updateFromWebhook para capturar correlaciones adicionales en los primeros minutos. |  |  |  | - Mantener activo ContactsService.updateFromWebhook para capturar correlaciones adicionales en los primeros minutos. | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | Fase A2 — Ajuste clave sin fricción: conservar menciones con números |  |  |  | Fase A2 — Ajuste clave sin fricción: conservar menciones con números (Completada) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | - Estado: completada (deploy tras commit 8b1af56). | 
			
		
	
		
		
			
				
					
					|  |  |  | - En src/services/command.ts, al construir los candidatos a assignees: |  |  |  | - En src/services/command.ts, al construir los candidatos a assignees: | 
			
		
	
		
		
			
				
					
					|  |  |  |   - Si normalizeWhatsAppId(token) produce dígitos y resolveAliasOrNull devuelve null, CONSERVAR ese número (no descartarlo). |  |  |  |   - Si normalizeWhatsAppId(token) produce dígitos y resolveAliasOrNull devuelve null, CONSERVAR ese número (no descartarlo). | 
			
		
	
		
		
			
				
					
					|  |  |  |   - Asegurar ensureUserExists para esos IDs conservados antes de usarlos. |  |  |  |   - Asegurar ensureUserExists para esos IDs conservados antes de usarlos. | 
			
		
	
		
		
			
				
					
					|  |  |  |   - Filtrar CHATBOT_PHONE_NUMBER para evitar autoasignaciones al bot. |  |  |  |   - Filtrar CHATBOT_PHONE_NUMBER para evitar autoasignaciones al bot. | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | - Métrica: se incrementa onboarding_assign_failures_total con labels {group_id, source, reason} cuando una mención/token no es resoluble ni plausible. | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | - Configuración: ONBOARDING_FALLBACK_MIN_DIGITS (por defecto 8) controla la longitud mínima para considerar un número “plausible”. | 
			
		
	
		
		
			
				
					
					|  |  |  | - Efecto: reduce drásticamente los fallos de asignación por mención sin necesidad de DM. |  |  |  | - Efecto: reduce drásticamente los fallos de asignación por mención sin necesidad de DM. | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | Fase A3 — Mensaje único por grupo con wa.me (solo si hace falta) |  |  |  | Fase A3 — Mensaje único por grupo con wa.me (solo si hace falta) | 
			
		
	
	
		
		
			
				
					|  |  | 
 |