ROADMAP item #1.3 #11. localStorage por user_id pra isolar sessoes
diferentes no mesmo browser. ROADMAP sugeria localStorage OU tabela
user_recent_access — escolhi localStorage por simplicidade (sem
migration adicional + zero round-trip por visita).
composables/useRecentPatients.js:
- useRecentPatients() — composable reativo Tipo A: items + hasItems
+ addVisit + remove + clear + refresh
- registerPatientVisit(patient) — helper stateless pra usar fora
de setup (ex: navigation guards, action handlers)
- Sincroniza entre instancias na mesma aba via CustomEvent + 'storage'
- Max 5 items. Dedup por id, novo no topo.
Wire-up de visita (registra ao carregar prontuario):
- MelissaPaciente.vue: registerPatientVisit no loadAll apos detail.load
- PatientProntuario.vue: registerPatientVisit em loadDetail apos p resolved
Wire-up de visualizacao (mostra quando query vazia):
- GlobalSearch.vue: grupo "Acessados recentemente" antes dos Atalhos.
goTo("recent") navega pra /therapist/patients/:id.
- MelissaBusca.vue: grupo "Acessados recentemente". emit('paciente')
reusando a logica do MelissaLayout que ja navega pra
/melissa/paciente?id=X.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fecha ROADMAP #1.3 #10 (busca global topbar). GlobalSearch.vue
classic+rail ja usava RPC. MelissaBusca era client-side preview com
fallback nas props (pacientes+eventos do dia) — agora consulta a
mesma RPC search_global com debounce 200ms + searchSeq pra descartar
respostas obsoletas.
3 grupos novos exibidos quando RPC retorna:
- rpc-appointments -> sessoes qualquer data (alem de "hoje")
- rpc-documents -> documentos por nome/tipo
- rpc-intakes -> cadastros recebidos
Pacientes mescla: RPC tem prioridade (todos os pacientes); props
mantida como fallback rapido (digitacao curta antes do debounce).
Emits estendidos: novos 'documento' + 'intake' alem dos existentes
'acao' + 'paciente' + 'evento'.
MelissaLayout atualizado:
- @paciente agora navega pra /melissa/paciente?id=X (antes ignorava
payload e so abria secao generica — bug existente)
- @documento abre prontuario do paciente com tab=documentos
- @intake abre /melissa cadastros-recebidos
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>