Skip to Content
PatternsMobile · Push handover

Push handover · web ↔ mobile

Fase γ · 03 · entregue na v3.0

Push chega no celular · operador continua no desktop. Estado flui em < 2s · deep-link entrega contexto exato · três tiers de push (crítico · alto · monitor) com vibração e som calibrados. Sem isso, mobile vira ilha · com isso, mobile é canal de paridade.

Princípio · um caso, dois dispositivos

O operador tem uma única caixa de trabalho · que vive em dois dispositivos. Push no celular não cria sessão paralela · entrega contexto + acelera o salto. Ack no mobile reflete no desktop em <2s. Decisão começada no celular pode continuar no desktop sem repetir leitura.

A regra é: deep-link entrega contexto · sync mantém estado.

Operador chega na mesma tela onde a Cris pausou, com o mesmo draft em aberto, mesma seleção, mesma posição no audit log.

Três momentos:

  1. Push recebido · notificação na tela de bloqueio.
  2. Operador toca · deep-link resolve com contexto.
  3. Desktop sincronizado em <2s · ação sugerida destacada.

URL canônica · scheme custom para mobile, https para web. Cada segmento tem responsabilidade clara.

pulso://crisis/248?action=ack&from=push&push_id=p_9b22
SegmentoConteúdoNotas
schemepulso:// mobile · https://pulso.app webResolução automática · mesmo deep-link funciona nos dois
hostTipo da entidade · crisis, audit, case-listDetermina rota de destino
pathSeparador estrutural · path-stylePermite hierarquia (/crisis/248/notes/v3)
idID estável do recurso · 248Sem ambiguidade entre clientes
actionIntenção pré-resolvida · ack, view, escalateDesktop abre a tela e destaca a ação
metadatafrom=push · push_id=...Traça origem no audit log (β.5) · push virou ação

Três tiers de push

Cada tier define som, vibração, persistência e capacidade de bypass do modo silencioso. Operador escolhe nas configurações · default segue tier do caso.

Tier 01 · Crítico

Caso novo crítico · escalada decisiva · falha bloqueante. Operador on-call precisa ver.

SlotSpec
SomÁudio distintivo · sobrepõe silenciamento
VibraçãoPadrão longo · 3× pulsos fortes
Bypass DNDSim · contas on-call
PersistênciaNão dismiss automático · 30 min na central
Apple alerttime-sensitive · sobrepõe modo Foco

Tier 02 · Alto

Caso em tier atenção · recomendação decisiva da Cris aguardando · update relevante em caso ativo.

SlotSpec
SomPadrão · sistema
Vibração2× pulsos médios
Bypass DNDNão · respeita silenciamento
Persistência15 min na central
Apple alertactive · padrão

Tier 03 · Monitor

Resumo diário · digest · sugestões de baixa confiança · sinais informativos sem ação imediata.

SlotSpec
SomNenhum
VibraçãoNenhuma
Bypass DNDNão · agrupa silenciosamente
PersistênciaAparece só na central · sem badge
Apple alertpassive · não interrompe

SLA · 4 alvos de sync

Métricas mensuráveis. Se qualquer um desliza, o sistema avisa internamente · drift de mais de 2s entre dispositivos é incidente, não inconveniente.

AlvoMétricaO que mede
< 2spush → desktopTempo entre push entregue e estado refletir no desktop logado
< 800msack → outros devicesAck no celular some do desktop · ou vice-versa · conexão estável
100%deep-link cold-startApp fechado · operador toca push · destino correto na primeira tela após auth
99.5%push entrega · críticoPush tier 01 entregue em < 10s em rede normal · failover de provider em 30s

Regras

✕ Não usar crítico fora de crítico

Tier 01 sobrepõe silenciamento. Usar para update menor queima a credibilidade. Em 3 push falsos críticos, operador desliga · perde a próxima real.

Auditoria de uso: tier 01 não pode exceder 5% do volume mensal · alerta interno aciona se passa.

Toda notificação carrega pulso:// · tap leva exatamente à tela do contexto. Operador nunca abre app e procura o caso que recebeu push. Falhar deep-link parsing > abrir lista de alertas. Sempre ter fallback graceful.

✕ Não duplicar push entre devices

Operador com celular + tablet + desktop recebe um único push · entregue no dispositivo mais ativo. Tier 01 entrega em todos como fallback · demais escolhem alvo. Backend mantém focus_score por device · push vai para o mais alto.

✓ State sync via stream · não polling

WebSocket / SSE persistente · cada ação propaga em ms. Polling perde mudanças, atrasa < 2s SLA · sync precisa ser empurrado, não puxado. Em offline (γ.2), stream para · reconecta com diff desde último ack ao voltar.

✕ Não fazer push ser único caminho de informação

Push é veículo · não fonte. Estado completo vive no servidor · push é convite para olhar. Push perdido nunca leva a estado perdido. Quando push falha entrega, in-app badge no desktop continua mostrando · operador sabe ao abrir.

✓ Auditoria de push no audit log

Push enviado é evento auditável (β.5) · com tier, conteúdo, timestamp de entrega, ação resultante. Pergunta “por que recebi push às 3am?” tem resposta investigável. Evento push_sent com retention class definida pelo tier · crítico vira 24mo · monitor 3mo.

Dependências

  • γ.1 · Gestures — ações via push usam mesma gramática · swipe-to-ack na notificação reflete swipe-to-ack no app.
  • γ.2 · Offline-first — ack iniciado offline no mobile pode confirmar no desktop ao reconectar.
  • v2 · 1.2 · Risk redundância — glifo do tier (● ◆ ○) entra no título do push · cor sozinha não basta no lock screen.
  • β.4 · Recommendation — recomendação decisiva da Cris dispara push tier 02 · operador pode tocar e cair direto no RecommendationCard.
  • β.5 · Audit trail — push enviado + ação resultante encadeiam-se no audit log · investigação “do push até a ação” em 1 query.
  • v2 · 4.4 · Notifications template — preferences ganha aba “Push” · operador escolhe tier por canal (móvel, desktop, watch).
Last updated on