Épico 6 — Seleção de Clínica — Protótipo (v1.1)
Documentos deste épico: 01 - Definição (v1.3) · 02 - Especificação (v1.3) · 03 - Protótipo (v1.1, código executável em 03 - Protótipo v1.1.html) · 04 - Mapeamento de Banco de Dados (v1.3). Este épico faz parte do documento guarda-chuva Check-in de Usuários.
SEÇÃO 3 — PROTÓTIPO HTML
Protótipo funcional único (HTML + CSS + JS inline), cobrindo os touchpoints de ponta a ponta: carregamento da tela (loading), lista de clínicas, card de convite pendente com aceite, seleção de clínica com os dois desfechos de RN-CIU-015 (perfil encontrado / ausente), e o estado de erro de carregamento (EX-E6-04). Usa os tokens do Design System (Design System.md) diretamente como CSS custom properties.
Arquivo: 03 - Protótipo v1.1.html (código executável, mesma pasta deste documento).
Estados contemplados
- Loading: skeleton nos lugares da lista e da área de destaque, exibido enquanto
GET /api/v1/checkin/clinic-selectionestá em voo. - Default: lista de clínicas + (quando houver) cards de convite em destaque.
- Empty de convites: área de destaque de convites simplesmente não é renderizada quando
convites(02 - Especificação, “Integração com Backend”) vem vazio — não é tratada como “vazio” visualmente, pois é o caso comum (maioria dos logins não tem convite pendente). - Erro de carregamento (EX-E6-04): mensagem MSG-E6-03 + botão “Tentar novamente” (MSG-B6-02), sem lista nem cards.
- Aceite em andamento: botão “Aceitar” do card em estado loading (spinner interno), desabilitado até a resposta do backend.
- Bloqueio pós-seleção (RN-CIU-015, sem perfil): mensagem inline MSG-I6-01 associada ao item selecionado, profissional permanece na tela.
- Sucesso na seleção: simulação de redirecionamento (placeholder — a tela real de destino é o cockpit de cada perfil, fora do escopo deste protótipo).
O mock de JavaScript simula os três endpoints da Seção 2: GET /api/v1/checkin/clinic-selection (carregamento inicial), POST .../accept-invite (aceite do card) e POST .../{usuarioClienteId}/{clienteEmpresaId}/select (seleção de clínica — o comentário do mock e os dois identificadores no path foram corrigidos na v1.1 para refletir o endpoint atual, que passou a exigir clienteEmpresaId além de usuarioClienteId).
Histórico de Versões
- v1.0 (29/08/2026) — Arquivo criado pela divisão do documento único
(CIU-E6) Seleção de Clínica v1.0.mdem arquivos por seção (ver Skill Designer, “Organização Física: Pasta por Funcionalidade”, Lição #18). Conteúdo sem alteração de substância em relação à v1.0 original — apenas reorganização física (o protótipo HTML já era um arquivo separado desde a v1.0 original, só foi renomeado para a convenção nova). Histórico de revisões anterior a esta divisão (v0.1 a v1.0) preservado integralmente no documento original arquivado. - v1.1 (14/09/2026) — o endpoint de seleção de clínica passou a exigir dois identificadores no path (
.../{usuarioClienteId}/{clienteEmpresaId}/select, desde a correção de granularidade Cliente × ClienteEmpresa na 02-Especificação v1.1, 14/09/2026), mas o mock de JavaScript deste protótipo ainda comentava e simulava o formato antigo, de um único identificador — corrigido nesta revisão (comentário do mock e dados simulados dos cards). Cabeçalho de irmãos atualizado para 01-Definição (v1.2), 02-Especificação (v1.2) e 04-Mapeamento (v1.2), e para o guarda-chuva (v2.11). Nenhuma mudança visual ou de layout — apenas o comentário e os dados internos do mock, que não afetam o que é renderizado.