petid-wikimemoria rápida, no arquitectura
‹ todos los flujos

Contact Request (descubrimiento cross-tenant)

petid-crmpetid-apipetid-client
actualizado 2026-09-02

Objetivo

Permitir que personal de una clínica distinta acceda al perfil de un dueño externo, con el dueño confirmando en su propio dispositivo — sin que el código pase nunca por quien lo solicita.

Cómo empieza

Staff en petid-crm, sección Usuarios externos, hace click en un usuario con externalAccess = true.

Pasos principales

  1. POST /users/:userId/contact-requestCreateContactRequestUseCase: valida target.externalAccess, genera código de 6 dígitos (randomInt(100000, 999999)), lo guarda hasheado en Redis (ContactRequest, TTL 15 min), emite ContactRequestCreatedEvent. Devuelve solo { requestId }el código nunca viaja en esta respuesta.
  2. El evento dispara push (contact-request-push) al dispositivo del target, con el código en el data silencioso del push, no en el título/cuerpo visible.
  3. petid-client recibe el push → access-request.tsx, gateado por LocalAuthentication.authenticateAsync() (biometría del dispositivo) antes de mostrar el código.
  4. El requester obtiene el código verbalmente del dueño y lo introduce → POST /users/:userId/verify-code { requestId, code }VerifyContactRequestUseCase valida vía ContactRequest.isValidFor(userId, hashedCode, now) y devuelve el perfil.

Reglas de negocio

Interacciones

petid-crmpetid-api → evento → notification-api (push) → petid-client (biometría) → dueño le dicta el código al staff → petid-crm de vuelta a petid-api.

Dónde seguir mirando

Casos especiales