# Épico 6 — Seleção de Clínica — Protótipo (v1.1)

**Documentos deste épico:** [01 - Definição](./01%20-%20Defini%C3%A7%C3%A3o%20v1.3.md) (v1.3) · [02 - Especificação](./02%20-%20Especifica%C3%A7%C3%A3o%20v1.3.md) (v1.3) · [03 - Protótipo](./03%20-%20Prot%C3%B3tipo%20v1.1.md) (v1.1, código executável em `03 - Protótipo v1.1.html`) · [04 - Mapeamento de Banco de Dados](./04%20-%20Mapeamento%20de%20Banco%20de%20Dados%20v1.3.md) (v1.3). Este épico faz parte do documento guarda-chuva [Check-in de Usuários](../00%20-%20Guarda-chuva%20v2.18.md).

---

## 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-selection` está 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.md` em 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.
