# Directorio → Flujos de contacto — Referencia para desarrollo > Este documento mapea los mockups que corresponden a cada acción de contacto en el directorio (tabs Atletas, Coaches y Clubs), indicando el punto de entrada, el paso inicial y el flujo completo. --- ## Tab Coaches **Punto de entrada:** `MOCKUP-RCH-Directorio-v01.html` → Tab Coaches → clic en tarjeta → modal → botón **"Contactar al coach"** Ese botón abre el panel lateral de mensajería. El flujo completo vive en dos archivos (un POV por cada lado de la conversación): | Archivo | POV | Paso inicial | Flujo | |---|---|---|---| | `MOCKUP-RCH-Mensajes-Coach-v01.html` | Ángeles — quien inicia (atleta) | **Paso 1 / 4** — panel lateral sobre el directorio: tarjeta de contexto del coach + textarea "Tu mensaje" + botón "Enviar solicitud →" | Paso 1 redacta → Paso 2 confirmación enviada → Paso 3 en espera (toggle "Javier acepta / rechaza") → Paso 4a chat activo / Paso 4b pantalla de rechazo | | `MOCKUP-RCH-Mensajes-Javier-v01.html` | Javier Ríos — quien recibe (coach) | **Paso 1 / 3** — panel lateral sobre el inbox del coach: tarjeta de contexto del atleta + mensaje + botones "Rechazar" / "Aceptar solicitud" | Paso 1 solicitud entrante → Paso 2a chat abierto / Paso 2b rechazado → Paso 3 chat activo (solo ruta acepta) | --- ## Tab Clubs **Punto de entrada:** `MOCKUP-RCH-Directorio-v01.html` → Tab Clubs → clic en tarjeta → modal → botón **"Enviar mensaje"** | Archivo | POV | Paso inicial | Flujo | |---|---|---|---| | `MOCKUP-RCH-Mensajes-Club-v01.html` | Ángeles — quien inicia (atleta) | **Paso 1 / 3** — panel lateral sobre el directorio tab Clubs: tarjeta de contexto del club + textarea + botón "Enviar mensaje →" | Paso 1 redacta → Paso 2 confirmación enviada → Paso 3 chat en curso | | `MOCKUP-RCH-Mensajes-ClubAdmin-v01.html` | Laura M. — quien recibe (admin del club) | **Paso 1 / 3** — panel lateral sobre el panel admin: tarjeta del atleta + mensaje + botones "Rechazar" / "Abrir chat" | Paso 1 mensaje entrante → Paso 2a chat abierto / Paso 2b solicitud rechazada → Paso 3 chat activo (solo ruta acepta) | > **Regla clave (ver DECISIONES-RCH.md — D-017, D-018):** que el admin abra el chat no convierte al atleta en miembro del club. Son dos acciones distintas. La membresía se gestiona por separado desde el panel de miembros → "Agregar miembro". --- ## Tab Atletas — contacto 1:1 para relay **Punto de entrada:** `MOCKUP-RCH-Directorio-v01.html` → Tab Atletas → clic en tarjeta de un atleta con badge "Busco equipo" → modal → botón de contacto Este flujo **sí existe** (contra lo que decía una versión anterior de este documento, que lo marcaba como backlog). Es el flujo de reclutamiento 1:1 para relay: un atleta contacta a otro que tiene el toggle "Busco equipo para Relay" activo, para armar equipo juntos. | Archivo | POV | Paso inicial | Flujo | |---|---|---|---| | `MOCKUP-RCH-Mensajes-v01.html` | Ángeles — quien inicia (atleta) | **Paso 1 / 4** — panel lateral sobre el directorio tab Atletas: tarjeta de contexto del relay (evento, disciplinas cubiertas/faltantes) + selector de tu disciplina + textarea + botón "Enviar mensaje →" | Paso 1 redacta (elige disciplina propia) → Paso 2 confirmación enviada → Paso 3 en espera (toggle "Carlos acepta / rechaza") → Paso 4a chat activo / Paso 4b pantalla de rechazo | | `MOCKUP-RCH-Mensajes-Carlos-v01.html` | Carlos Mendoza — quien recibe (atleta) | **Paso 1 / 3** — dropdown de notificación sobre su perfil: solicitud de Ángeles con mini-perfil + botones "Rechazar" / "Aceptar y responder" | Paso 1 notificación → Paso 2 solicitud recibida (acepta/rechaza) → Paso 3 chat activo, incluye sugerencias del sistema para cubrir el tercer integrante del relay (toggle relay 2 vs 3 personas) | > **Nota:** a diferencia de los flujos de Coach/Club, el "botón de contacto" en la tarjeta de atleta del modal de `MOCKUP-RCH-Directorio-v01.html` **no está verificado que dispare este flujo correctamente** — ver advertencia abajo. --- ## ✅ Bug de CTA en el modal de Directorio — corregido `MOCKUP-RCH-Directorio-v01.html`, función `openModal()`, tenía la lógica de botones invertida (Club mostraba "Contactar al coach", y Coach/Atletas compartían la misma rama "Enviar mensaje" sin diferenciar). Ya corregido: ```js if (isClub) { actions.innerHTML = `...Enviar mensaje...`; } else if (d.rol === 'coach') { actions.innerHTML = `...Contactar al coach...`; } else if (d.buscoequipo === 'yes') { actions.innerHTML = `...Contactar para relay...`; } else { // Atleta sin toggle "Busco equipo": sin flujo de contacto definido (backlog) actions.innerHTML = ''; } ``` Atletas con el toggle "Busco equipo" activo ahora muestran su propio botón "Contactar para relay", que dispara el flujo documentado arriba (`MOCKUP-RCH-Mensajes-v01.html`). Atletas sin ese toggle no muestran botón — el contacto general 1:1 (fuera de relay) sigue en backlog. --- ## Mockups activos para este sprint | Archivo | Rol en el flujo | |---|---| | `MOCKUP-RCH-Directorio-v01.html` | Punto de entrada — directorio con modales y botones CTA (⚠️ ver bug arriba) | | `MOCKUP-RCH-Mensajes-Coach-v01.html` | Flujo contacto coach — POV atleta (4 pasos) | | `MOCKUP-RCH-Mensajes-Javier-v01.html` | Flujo contacto coach — POV coach (3 pasos) | | `MOCKUP-RCH-Mensajes-Club-v01.html` | Flujo contacto club — POV atleta (3 pasos) | | `MOCKUP-RCH-Mensajes-ClubAdmin-v01.html` | Flujo contacto club — POV admin (3 pasos acepta / 2 pasos rechaza) | | `MOCKUP-RCH-Mensajes-v01.html` | Flujo contacto 1:1 relay — POV atleta que inicia (4 pasos) | | `MOCKUP-RCH-Mensajes-Carlos-v01.html` | Flujo contacto 1:1 relay — POV atleta que recibe (3 pasos) | --- ## Backlog — no prioritarios para este sprint `MOCKUP-RCH-Eventos-v01.html` · `MOCKUP-RCH-Footer-v01.html` · `MOCKUP-RCH-Inbox-v01.html` · `MOCKUP-RCH-Inbox-v02.html` · `MOCKUP-RCH-Baja-Relay-v01.html` > Estos mockups no son prioritarios para *implementar* en este sprint, pero eso no aplica a Perfil (ver nota abajo). --- ## Dependencia de datos: Perfil es la fuente canónica **No confundir "no prioritario para este sprint" con "no relacionado".** `MOCKUP-RCH-Perfil-v01.html` / `-light` no está en la lista de backlog de arriba a propósito: es el formulario de origen de **todos** los campos que se muestran en las tarjetas y modales del Directorio (nombre, apellidos, ciudad, país, disciplinas, nivel, especialidad de coach, biografía, etc.). Regla de integridad de datos (ver `SPEC-FLUJOS-RCH.md` §9.1): > "Solo se puede mostrar información que haya sido capturada explícitamente en algún formulario del producto. Ninguna tarjeta, modal, chip, header ni metadata puede mostrar un dato que el usuario no haya ingresado previamente. Si un campo no existe en el formulario de perfil, no puede aparecer en ninguna otra vista." Para implementar el Directorio con datos reales, Gus necesita `MOCKUP-RCH-Perfil-v01.html` como referencia de qué campos existen y cómo se llaman — no como flujo de mensajería, sino como **contrato de datos**.