# Cenários de Teste — Agenda do Médico

**Funcionalidade:** [DOC-006] Agenda do Médico
**Versão de referência da especificação:** 01-Definição v1.14 / 02-Especificação v1.16 / 03-Protótipo v1.13 / 04-Mapeamento de BD v1.4
**Autor:** Marcos Arao, para uso da equipe de QA do Gemed 2.1
**Massa de dados de referência:** `CargaCMZero.xlsx` (a mesma da Central do Médico), **mais a massa complementar [PROPOSTA]** descrita na Seção 1 — necessária para clínica, classificação, modo Customizado e bloqueios, que a carga atual não cobre. Todos os resultados esperados supõem as duas carregadas.
**Data-base dos testes:** 23/09/2026 (quarta-feira) — a mesma da Central do Médico. "Hoje" é a data de execução: a `CargaCMZero.xlsx` recalcula as datas a cada carga (`UPDATE DATAS`, relativo a `GETDATE()`), e as datas absolutas abaixo (ex.: "sáb, 26/09") valem para a data-base e se deslocam junto. Os horários citados ("observar às 12:00") são horários reais de relógio do dia da execução.

---

## 1. Escopo

Este documento cobre a homologação funcional da Agenda do Médico, conforme [DOC-006]: lista do dia (consultas de todas as clínicas do cliente e bloqueios da Recepção), conteúdo do item de consulta, informações complementares (clínica, unidade, convênio, classificação), tags e 1ª Consulta, resumo de realizadas e canceladas, linha "AGORA", posição inicial da rolagem, sinalizador de atraso, item de bloqueio, navegação por dia (setas, "Hoje", atalhos de dia com consulta, calendário), fuso horário da agenda, atualização automática e faixa de sem conexão, layout, tema e acessibilidade, além dos 4 fluxos de exceção (EX-AGM-02, 03, 06 e 09) e do catálogo de mensagens.

Fora de escopo deste documento:

- Busca de pacientes do cabeçalho — é a da Central do Médico, com os mesmos casos (Central, CT-BUSCA-01 a 05). Aqui só se confere que ela está presente e abre o PEP (CT-AGM-CAB-01).
- Conteúdo do PEP aberto a partir da agenda — outra funcionalidade.
- Criar, editar, cancelar ou reagendar consultas e bloqueios — a tela é somente leitura (RN-AGM-001); essas ações são do Agendamento da Recepção, ainda não especificado. Aqui, mudanças de agenda feitas pela Recepção são simuladas por alteração direta no banco **(BD)**, só como pré-condição.
- Trilha de auditoria (NGS1.07.03/04) — o mecanismo é transversal e não está mapeado (04-Mapeamento, Pendências, item 2). CT-AGM-API-08 fica marcado como dependente dele.
- Textos em en-US e es-419 — o catálogo traz as 3 línguas, mas a troca de idioma da interface não é especificada nesta funcionalidade.

Cada seção traz uma tabela de casos (ID, Pré-condição, Passos, Resultado Esperado, Dados de Teste, RN/CA Relacionada). Quando o resultado esperado envolve vários itens, a tabela traz um resumo e o detalhamento completo fica na subseção "Detalhamento" logo abaixo. Casos marcados **(API)** são executados direto no endpoint (Postman, devtools ou equivalente). Casos marcados **(BD)** exigem alterar ou conferir o banco GescomClienteAlfa ou IpSeguranca — **restaurar o valor original ao final de cada um**.

### Endpoints envolvidos (referência)

| Endpoint | Uso |
|---|---|
| `GET /api/v1/agenda/doctor/day?date=` | Consultas (`appointments`) e bloqueios (`blocks`) do dia, `timeZone`, `serverNow`; atualização automática a cada 1 minuto |
| `GET /api/v1/agenda/doctor/days-with-appointments?from=&to=` | Dias marcados no calendário (intervalo máximo de 62 dias) |
| `GET /api/v1/agenda/doctor/next-appointment-date?direction=&from=` | Atalhos de próximo/anterior dia com consulta |
| `GET /api/v1/patients/search` | Busca do cabeçalho (da Central do Médico) |

### Massa de dados usada da `CargaCMZero.xlsx`

- **Clínica e acesso:** todos os médicos da massa estão no banco do cliente **Gama** (`ClienteBD` "Ambiente de Produção", `Tipo = 'P'`), com uma única `ClienteEmpresa`, "Clinica Gama". Nos registros de agenda, a clínica é `IdChClinica = 6`, de nome curto **"Clínica Gama"** (`Chave.Descricao`).
- **Unidades da Clínica Gama** (`UnidadeAtendimento`, `IdClinica = 6`): Consultórios Norte (1) e Consultórios Sul (2) com `StConsulta = 'S'`; Setor Verde (3) e Setor Rosa (4) com `StConsulta = 'N'`. Como há **duas unidades ativas para consultas**, a unidade aparece nas consultas que a têm.
- **Médicos:** **Dr. Craig Evans** (`IdChProfissional = 11`, usuário "Craig Evans") — acesso só à Clínica Gama; **Dr. Gilliard Onório Santos** (`IdChProfissional = 9`) — acesso à Clínica Gama e, pela massa complementar, à Gama Norte.
- **Convênios** (nome curto em `Chave.Descricao`): PARTICULAR (`Convenio.Convenio = 'T'`), Sulamérica, Unimed Nacional, Bradesco Saúde, HapVida, Cassi.
- **Tags exibidas em agendas** (`ProgramaApoio.MostrarEm` com o valor 32 incluído): VIP (`MostrarEm = 38`, cor `#80FF38`), IC (61, `#FFC400`), INT.MED (57, `#FBF8AF`), ESPECIAL (63, `#DEDAFF`). **Não aparecem em agendas:** Linha de cuidados/LC (1), Médico externo/EXT (17), Particular/PARTIC (6). Vínculos: VIP em `ProgramaApoioPaciente` — John Smith (3) desde 25/07/2026 e Sophia Muller (12) desde 10/09/2026; IC, INT.MED e ESPECIAL em `PEPProgramaApoioPaciente` — IC: Beatriz A. Lima (20), Marcelo T. Pinto (22), Carmen Garcia (14); INT.MED: Maria Silva (4), Yuki Tanaka (8), Roberto N. Alves (19); ESPECIAL: Otávio B. Lima (24). Ver Pendências sobre a origem dessas três.
- **Bloqueio:** Agenda 164 — Dr. 11, hoje 08:00–08:45, paciente reservado "BLOQUEIO" (`IdPaciente = 0`, `Paciente.Paciente = 'B'`), unidade Setor Rosa, sem complemento (sem motivo). É o mesmo registro usado na Central (CT-KPI-07, CT-CONS-10).
- **Fotos:** só Cecília R. Ferreira (23) e Otávio B. Lima (24) não têm foto — no desktop, o avatar mostra as iniciais.
- **Classificação:** nenhuma agenda da `CargaCMZero.xlsx` tem classificação — ver massa complementar.

### Massa complementar proposta [PROPOSTA]

> **Tudo nesta subseção é proposta deste documento.** Nomes de clínica, unidade, classificação e motivos de bloqueio são **inventados para o teste**, não registros existentes. Precisa ser criada (e conferida) pelo solicitante ou pela QA antes da execução, acrescentada à `CargaCMZero.xlsx`. Nenhum registro abaixo cai no dia de hoje, então os casos da Central do Médico não mudam.

**Ajustes em registros existentes:**

| Tabela (banco) | Registro | Ajuste | Motivo |
|---|---|---|---|
| `ClienteEmpresa` (IpSeguranca) | Clinica Gama | `FusoHorarioOficial = 'America/Sao_Paulo'` (campo novo, ainda não existe na carga) | Fuso da agenda (RN-AGM-018) |
| `ClienteEmpresa` (IpSeguranca) | Clinica Gama | `IdiomaOficial = 'pt-BR'` (hoje `'en-US'`) | O modo de atendimento e o nome do fuso são exibidos no idioma da clínica; os textos esperados deste documento estão em pt-BR |

**Registros novos:**

| Tabela (banco) | Registro novo | Observação |
|---|---|---|
| `Chave`/`Portador`/`Clinica` (GescomClienteAlfa) | `IdChClinica = 30`, nome curto **"Gama Norte"** | Segunda clínica do cliente Gama |
| `UnidadeAtendimento` (GescomClienteAlfa) | `IdUAtendimento = 5`, `IdClinica = 30`, "Consultório Único", `StConsulta = 'S'` | Clínica com **uma** unidade ativa para consultas — a unidade não aparece |
| `ClienteEmpresa` (IpSeguranca) | "Clínica Gama Norte (teste)", mesmo `ClienteBDId` da Clinica Gama, `FusoHorarioOficial = 'America/Sao_Paulo'`, `IdiomaOficial = 'pt-BR'` | — |
| `ClientePerfilAcessoUsuario` (IpSeguranca) | Dr. Gilliard (vínculo `UsuarioCliente` do Gama, `FA6D3868…`) na Clínica Gama Norte (teste), mesmo perfil da Clinica Gama, `RemovidoEm` nulo | Dr. 9 passa a ter acesso a **duas** clínicas — a clínica aparece nos itens dele. O Dr. 11 continua com uma só |
| `AgendaClassificacao` (GescomClienteAlfa) | Id 1 "Quimioterapia" e Id 2 "Seguimento", `IdChClinica = 6`, `TipoAgenda = 'C'` | — |
| `AgendaSubClassificacao` (GescomClienteAlfa) | Id 1 "Ciclo 2", da classificação 1 | — |

**Agendas novas** (`TipoAgenda = 'C'`, horários no fuso da clínica):

| Ref. | Médico | Dia | Horário | Clínica / Unidade | Paciente | Convênio | Situação | Outros campos |
|---|---|---|---|---|---|---|---|---|
| **A101** | Dr. 9 | hoje+1 | 08:00–08:30 | Gama Norte / Consultório Único | Helena Duarte Costa (21) | Unimed Nacional | A | — |
| **A102** | Dr. 9 | hoje+1 | 09:00–09:30 | Clínica Gama / Consultórios Sul | Marcelo Tavares Pinto (22) | HapVida | A | `Atendimento = 'C'` (Customizado); classificação 1 › subclassificação 1 |
| **A103** | Dr. 9 | hoje+1 | 10:00–10:30 | Clínica Gama / **sem unidade** (NULL) | Alejandro Ramirez (9) | PARTICULAR | A | classificação 2, sem subclassificação |
| **B101** | Dr. 9 | hoje+1 | 12:00–13:00 | Gama Norte / Consultório Único | BLOQUEIO (0) | BLOQUEIO (0) | A | `Complemento = 'Reunião da equipe multidisciplinar'` |
| **B111** | Dr. 11 | hoje+2 | 08:00–18:00 | Clínica Gama / sem unidade | BLOQUEIO (0) | BLOQUEIO (0) | A | `Complemento = 'Congresso de Oncologia'` — dia só com bloqueio |

### Pendências de Massa de Dados

- **Massa complementar inteira** — precisa ser criada. Sem ela, ficam sem dado: clínica no item (Seção 4, casos de Dr. 9), classificação, modo Customizado, bloqueio com motivo, dia só com bloqueio e o fuso (campo `FusoHorarioOficial` ainda não existe). Os casos de Dr. 11 em hoje, ontem e dias futuros que não citam A1xx/B1xx rodam só com a `CargaCMZero.xlsx`.
- **Idioma da Clinica Gama:** a carga traz `IdiomaOficial = 'en-US'`. Se não for ajustado para `'pt-BR'`, o rótulo do modo de atendimento e o nome do fuso aparecem em inglês, e os textos esperados destes casos não batem. Também não foi conferido se `TermoTraducao` (IpTerminologia) tem os rótulos de `ModoAtendimento` nas três línguas (04-Mapeamento, Seeds).
- **Diagnóstico de Yuki Tanaka (8) na carga:** `PEPDiagnostico` (IdPEP 1106) tem `IdDiagnostico = 'C56.3'`, mas o texto `Diagnostico` é "C50.3 - Câncer de ovários (bi)". A tela exibe o texto, então os casos abaixo esperam "C50.3 - Câncer de ovários (bi)". O Cenários de Teste da Central cita "C56.3 - Câncer de ovários (bi)" para o mesmo paciente — um dos dois precisa ser corrigido.
- **Diagnóstico de Reed Richards (1) na carga:** o texto é "C64 - Câncer de rins"; o Cenários de Teste da Central cita "C64 - Câncer do rim". Os casos abaixo seguem a carga.
- **Simulação de falha** (CT-AGM-ATU-03 a 05, CT-AGM-NAV-10, CT-AGM-LIS-12) — não é questão de massa: o ambiente precisa permitir derrubar ou atrasar um endpoint (proxy de rede, stub de back-end, devtools). Mesma pendência da Central do Médico.
- **Paciente com três diagnósticos** (CA-001.18): não existe na carga. CT-AGM-UI-04 é executado no Protótipo v1.13 (Beatriz Mendes, amanhã); no back-end, só depois de existir esse paciente.
- **Tag vencida** (primeira parte de CA-001.24): nenhuma atribuição da carga tem data de fim. CT-AGM-TAG-05 cria a condição por alteração temporária no banco.

---

## 2. Lista do Dia e Item de Consulta

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-LIS-01 | Dr. 11 logado na Central do Médico, desktop, hoje às 12:00 | Tocar no título do painel "Consultas" | Abre a Agenda do Médico no dia de hoje, em lista, botão "Hoje" no estado ativo. Lista principal com **7 itens** (6 consultas + 1 bloqueio) — ver detalhamento ⬇ (`CT-AGM-LIS-01`) | Agendas de hoje do Dr. 11 (101, 113, 103, 105, 62, 87, 107, 109, 1, 148) + bloqueio 164 | RN-AGM-002, RN-AGM-009; CA-001.1 |
| CT-AGM-LIS-02 | Dr. 11 logado na Central do Médico | Tocar no indicador "Consultas Hoje" | Mesmo resultado de CT-AGM-LIS-01 | — | CA-001.1 |
| CT-AGM-LIS-03 | Dr. 9 logado, desktop, Agenda aberta hoje às 12:00 | Observar a lista | Lista principal com **4 consultas**; linha "AGORA" acima delas — ver detalhamento ⬇ (`CT-AGM-LIS-03`) | Agendas de hoje do Dr. 9 (151, 102, 70, 65, 104, 132, 106, 108, 118, 134, 110) | RN-AGM-002, RN-AGM-009; CA-001.1 |
| CT-AGM-LIS-04 | Estado de CT-AGM-LIS-01 | Conferir o item de Fatima Al-Mansoori (16:00) e o de Cecília R. Ferreira (10:30) | Fatima: ícone de 1ª Consulta (número 1 no círculo, cor lilás) logo depois do nome; dica "1ª Consulta" ao passar o mouse. Cecília: sem o ícone | Agendas 148 (`PrimeiraConsulta='S'`) e 105 | RN-CM-028; CA-001.8 |
| CT-AGM-LIS-05 | Estado de CT-AGM-LIS-01 | Conferir o modo de atendimento de cada item | Linha 2 sempre com o modo: "Presencial" em todos, exceto Maria Silva (13:30): "Teleatendimento". O modo aparece mesmo quando é Presencial | Agenda 62 (`Atendimento='T'`) | RN-AGM-009; CA-001.14 |
| CT-AGM-LIS-06 | Dr. 9 logado, Agenda em hoje+1 (qui, 24/09) | Conferir o item de Marcelo T. Pinto (09:00) | Modo "Customizado" na linha 2 | A102 (massa complementar) | CA-001.14 |
| CT-AGM-LIS-07 | Estado de CT-AGM-LIS-01 | Conferir o chip de status de Yuki Tanaka (14:00), Reed Richards (15:45) e Fatima (16:00) | Chip "Agendado" na linha 1 dos três | Agendas 87, 1, 148 | RN-AGM-009; CA-001.15 |
| CT-AGM-LIS-08 | Estado de CT-AGM-LIS-01 | Observar a borda esquerda de Cecília (10:30) e de Maria Silva (13:30) | Cecília (Recepcionado): borda esquerda de 3px na cor secondary-pure. Maria (Aguardando Recepção): borda esquerda #FF8A80. Os demais itens sem borda colorida | Agendas 105, 62 | RN-AGM-009; CA-001.10 |
| CT-AGM-LIS-09 | Estado de CT-AGM-LIS-01 | Conferir o complemento de Reed Richards (15:45) | Linha própria, completa, em texto secundário, acima da linha de informações complementares: "estado agendado sem confirmar" | Agenda 1 | RN-AGM-007; CA-001.3 |
| CT-AGM-LIS-10 | Estado de CT-AGM-LIS-01 | Tocar no item de Maria Silva (13:30) | Abre o PEP de Maria Silva (4) | Agenda 62 | RN-AGM-009; CA-001.5 |
| CT-AGM-LIS-11 | Estado de CT-AGM-LIS-01; grupo "2 canceladas" expandido | Tocar no item de David Cohen (14:00, cancelado) | Abre o PEP de David Cohen (7) — itens de grupo também abrem o PEP | Agenda 107 | CA-001.5 |
| CT-AGM-LIS-12 | `GET /api/v1/agenda/doctor/day` simulando falha (500) | Abrir a Agenda; depois restabelecer o endpoint e tocar em "Tentar novamente" | Estado de erro no lugar da lista: "Não foi possível carregar a agenda. Tente novamente." (MSG-EAGM-03) + botão "Tentar novamente", sem nenhum item e sem a faixa de sem conexão. Depois de "Tentar novamente": a agenda carrega normalmente | — | EX-AGM-02; CA-001.6 |
| CT-AGM-LIS-13 | `GET /day` com resposta lenta | Abrir a Agenda e observar durante o carregamento | Skeleton no lugar da lista enquanto carrega | — | 02-Especificação, Mapeamento de Componentes (Skeleton) |
| CT-AGM-LIS-14 | Dr. 11 logado, Agenda em hoje+1 (qui, 24/09) | Observar a lista | Linha do fuso no topo; abaixo, estado vazio "Nenhuma consulta neste dia." (MSG-TAGM-01) e o botão "Próximo dia com consulta · sáb, 26/09". Tocar no botão carrega 26/09 (hoje+2 tem só bloqueio e é pulado) | Nenhuma agenda do Dr. 11 em hoje+1; B111 em hoje+2 | EX-AGM-03; CA-001.7 |

### Detalhamento — Resultado Esperado

> **Formato do item:** "início–término · nome (+ ①) · diagnóstico · status · modo · tags · atraso · complemento · informações complementares". No desktop, linha 1 = nome, 1ª Consulta, diagnóstico e status; linha 2 = modo, tags e atraso; depois complemento (se houver) e informações complementares. No celular, o diagnóstico vai para a linha 2, antes do modo. Nada é truncado.
>
> **Informações complementares do Dr. 11:** ele tem acesso a uma só clínica, então a clínica nunca aparece; como a Clínica Gama tem duas unidades ativas para consultas, a unidade aparece sozinha, com o ícone de alfinete (`map-pin`). O convênio aparece sempre, com o ícone de carteira (`wallet-cards`). Nenhuma agenda de hoje tem classificação.

#### CT-AGM-LIS-01 — lista principal em ordem (Dr. 11, hoje, 12:00)

1. **08:00–08:45 · Bloqueado** — cadeado, sem motivo · unidade "Setor Rosa" (ver CT-AGM-BLQ-02)
2. **09:30–10:00 · Beatriz Andrade Lima (20)** · C50.9 - Câncer de mama · Em Atendimento · Presencial · tag IC · unidade Consultórios Norte · convênio Bradesco Saúde
3. **10:30–11:00 · Cecília Ramos Ferreira (23)** · sem diagnóstico · Recepcionado (borda secondary-pure) · Presencial · sem tag · sinalizador **"Esperando · 90min"** · Consultórios Norte · Cassi · sem foto (iniciais "CF" no desktop)
4. **Linha "AGORA" — 12:00**
5. **13:30–14:00 · Maria Silva (4)** · C50.2 - Câncer de mama (QSI) · Aguardando Recepção (borda #FF8A80) · Teleatendimento · tag INT.MED · Consultórios Sul · Unimed Nacional
6. **14:00–14:15 · Yuki Tanaka (8)** · C50.3 - Câncer de ovários (bi) · Agendado · Presencial · tag INT.MED · Consultórios Norte · Cassi
7. **15:45–16:00 · Reed Richards (1)** · C64 - Câncer de rins · Agendado · Presencial · sem tag · complemento "estado agendado sem confirmar" · Consultórios Norte · Sulamérica
8. **16:00–17:00 · Fatima Al-Mansoori (6) ①** · sem diagnóstico · Agendado · Presencial · sem tag · complemento "Primeira consulta" · Consultórios Sul · PARTICULAR

Linha de resumo acima da lista: **"2 realizadas"** e **"2 canceladas"** (ver CT-AGM-RES-01/02).

> **Reed Richards (1):** é o nome social; o nome legal (Amanda Peres) não aparece. **Beatriz (20)** também tem a tag Linha de cuidados no prontuário, que não aparece em agendas (`MostrarEm = 1`).

#### CT-AGM-LIS-03 — lista principal em ordem (Dr. 9, hoje, 12:00)

> Com a massa complementar, o Dr. 9 tem acesso a duas clínicas: todo item mostra a clínica, e a unidade junto dela num só segmento, com o ícone de prédio (`building-2`): "Clínica Gama › Consultórios Sul".

1. **Linha "AGORA" — 12:00** (primeiro elemento da lista principal)
2. **13:00–13:30 · Otávio Barbosa Lima (24)** · C61 - Câncer de Próstata · Em Atendimento · Presencial · tag ESPECIAL · Clínica Gama › Consultórios Sul · Bradesco Saúde · sem foto
3. **14:30–15:00 · Marcelo Tavares Pinto (22)** · C34.9 - Câncer de pulmão · Recepcionado (borda) · Presencial · tag IC · Clínica Gama › Consultórios Sul · HapVida
4. **15:30–16:00 · Sophia Muller (12) ①** · sem diagnóstico · Aguardando Recepção (borda) · Presencial · tag VIP · Clínica Gama › Consultórios Sul · PARTICULAR
5. **16:00–16:30 · Alejandro Ramirez (9)** · sem diagnóstico · Agendado · Teleatendimento · sem tag · Clínica Gama › Consultórios Sul · PARTICULAR

Linha de resumo: **"4 realizadas"** e **"3 canceladas"** (ver CT-AGM-RES-03). Nenhum sinalizador de atraso às 12:00.

---

## 3. Resumo, Linha "AGORA", Rolagem e Atraso

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-RES-01 | Estado de CT-AGM-LIS-01 | Observar a linha de resumo, no topo da lista; tocar em "2 realizadas" | Uma linha com "2 realizadas" (ícone de círculo com check, cor de Finalizado) e "2 canceladas" (ícone de círculo com x, cinza), lado a lado. Roberto N. Alves e Anya Ivanova não aparecem na lista principal. Ao tocar em "2 realizadas": só esse grupo expande, logo abaixo da linha de resumo, com, em ordem: 08:30–09:00 Roberto Nascimento Alves (19) · C22.0 - Câncer de fígado · Finalizado · Teleatendimento · INT.MED · Consultórios Norte · Sulamérica; 09:00–09:30 Anya Ivanova (10) ① · Finalizado · Presencial · Consultórios Norte · PARTICULAR. Itens sem redução de opacidade, horário de início em cinza | Agendas 101, 113 | RN-AGM-010; CA-005.1, CA-005.3 |
| CT-AGM-RES-02 | Estado de CT-AGM-RES-01 | Tocar em "2 canceladas"; depois tocar de novo em "2 realizadas" | Canceladas expandem com, em ordem: 14:00–14:30 David Cohen (7) · chip "Cancelado" com contorno · complemento "Cancelada - paciente internado" · Consultórios Norte · PARTICULAR; 15:00–15:30 Antonio Rossi (13) · "Cancelado" com contorno · "Transferido para outro profissional/unidade" · Consultórios Norte · PARTICULAR. Horários de início e término riscados; no desktop, avatar de contorno. Ao tocar de novo em realizadas, só esse grupo recolhe — canceladas continua expandido | Agendas 107 (`Situacao='I'`), 109 (`'T'`) | RN-AGM-010; CA-005.2, CA-005.3 |
| CT-AGM-RES-03 | Estado de CT-AGM-LIS-03 (Dr. 9) | Expandir os dois grupos | **4 realizadas:** 08:30 Rogério Mendes Santos (2) · C67.9 - Câncer de bexiga · sem tag; 09:00 John Smith (3) ① · VIP; 09:30 Carmen Garcia (14) · C16.8 - Câncer de estômago (+lesão) · IC · Teleatendimento; 10:00 Maria Silva (4) · INT.MED. **3 canceladas:** 10:00 Maria Silva (4) · "Paciente cancelou o agendamento pelo app"; 13:30 Helena Duarte Costa (21) · "Paciente nao compareceu (falta)"; 15:00 Fatima Al-Mansoori (6) · "Cancelada pelo medico - necessario reagendar". Todas com "Clínica Gama › Consultórios Sul" | Agendas 151, 102, 70, 65 / 104 (`'D'`), 106 (`'F'`), 118 (`'M'`) | RN-AGM-010; CA-005.1, CA-005.2 |
| CT-AGM-RES-04 | Dr. 11 logado, Agenda em qua, 16/09 (hoje−7) | Observar o topo da lista | "2 realizadas" e **nenhum** botão de canceladas (não há cancelada no dia). A lista principal fica vazia abaixo do resumo | Agendas 111, 85 | CA-005.4 |
| CT-AGM-RES-05 | Dr. 11 logado, Agenda em sáb, 26/09 (hoje+3) | Observar o topo da lista | **Sem linha de resumo** (nenhuma realizada nem cancelada no dia); a lista começa pela linha do fuso e o item de Reed Richards | Agenda 2 | CA-005.4 |
| CT-AGM-RES-06 | Dr. 11 logado, hoje às 12:00 | Observar a linha "AGORA" | Linha fina com "12:00" em vermelho na coluna de horário e traço atravessando a largura, entre Cecília (10:30) e Maria Silva (13:30). Leitor de tela: "Agora, 12:00" | — | RN-AGM-010; CA-005.5 |
| CT-AGM-RES-07 | Dr. 11 logado, Agenda aberta hoje às 12:00 (carga inicial, sem rolagem prévia) | Observar a posição da rolagem | A tela abre rolada até **Beatriz A. Lima (09:30, Em Atendimento)** — a primeira consulta que ainda exige ação, com horário já passado —, visível logo abaixo das barras fixas. Como ela não é o primeiro item da lista principal (o bloqueio das 08:00 vem antes), a tela **não** fica no topo: a linha de resumo e o bloqueio ficam acima, fora da vista | Agenda 103 | RN-AGM-010; CA-005.5 |
| CT-AGM-RES-08 | Dr. 9 logado, Agenda aberta hoje às 12:00 | Observar a posição da rolagem | Nenhuma consulta que exige ação já passou do horário (a primeira é Otávio, 13:00): o alvo é a linha "AGORA", que é o primeiro elemento da lista principal — a tela abre **no topo**, com a linha de resumo visível | — | CA-005.5 |
| CT-AGM-RES-09 | Dr. 11 logado, Agenda em qua, 16/09 | Observar | Sem linha "AGORA"; tela no topo | — | CA-005.5 |
| CT-AGM-RES-10 | Dr. 11 logado, hoje às 14:20 | Observar os sinalizadores de atraso | Cecília (10:30, Recepcionado): **"Esperando · 230min"** (fundo vermelho, ponto pulsante). Maria Silva (13:30, Aguardando Recepção): **"Esperando · 50min"**. Yuki Tanaka (14:00, Agendado, sem chegada): **"Não chegou · 20min"** (fundo cinza, sem animação). Beatriz (Em Atendimento): sem sinalizador. Reed e Fatima (horário ainda não chegou): sem sinalizador | Agendas 105, 62, 87, 103 | RN-AGM-009; CA-001.9 |
| CT-AGM-RES-11 | Dr. 11 logado, Agenda em qua, 16/09 e em sáb, 26/09 | Observar | Nenhum item com sinalizador de atraso, em dia passado ou futuro | — | CA-001.9 |
| CT-AGM-RES-12 | Aparelho com "reduzir movimento" ativado; estado de CT-AGM-RES-10 | Observar o sinalizador "Esperando" | O ponto antes do texto não pulsa; o texto nunca pisca | — | 02-Especificação, Sinalizador de atraso |
| CT-AGM-RES-13 | Dr. 11, Agenda aberta hoje, tela aberta por volta das 23:58 | Deixar a tela aberta até depois da meia-noite e esperar a próxima atualização automática | O dia continua o mesmo (agora passado): botão "Hoje" fora do estado ativo, sem linha "AGORA", sem sinalizadores de atraso. Tocar em "Hoje" leva ao novo dia | — | RN-AGM-013; CA-005.7 |

---

## 4. Informações Complementares (Clínica, Unidade, Convênio, Classificação)

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-CTX-01 | Dr. 11 (acesso a 1 clínica), hoje | Conferir a última linha dos itens | **Nenhum** item mostra a clínica. A unidade aparece sozinha, com o ícone de alfinete: "Consultórios Norte" ou "Consultórios Sul" | `ClientePerfilAcessoUsuario` do Dr. 11 só na Clinica Gama | RN-AGM-017 (a, b); CA-008.1, CA-008.3 |
| CT-AGM-CTX-02 | Dr. 9 (acesso a 2 clínicas), hoje | Conferir a última linha dos itens | Todos mostram "Clínica Gama › Consultórios Sul" num único segmento, com um só ícone de prédio | Massa complementar (acesso à Gama Norte) | RN-AGM-017 (a, b); CA-008.1, CA-008.3 |
| CT-AGM-CTX-03 | Dr. 9 logado, Agenda em qui, 24/09 (hoje+1) | Observar a lista | Em ordem: 08:00 Helena Duarte Costa · **"Gama Norte"** sozinho (a Gama Norte tem uma só unidade ativa para consultas — a unidade não aparece) · Unimed Nacional; 09:00 Marcelo T. Pinto · **"Clínica Gama › Consultórios Sul"** · HapVida · **"Quimioterapia › Ciclo 2"** · Customizado; 10:00 Alejandro Ramirez · **"Clínica Gama"** sozinho (consulta sem unidade) · PARTICULAR · **"Seguimento"**; 12:00 bloqueio (ver CT-AGM-BLQ-01). Consultas das duas clínicas juntas, em ordem cronológica, sem separação | A101, A102, A103, B101 | RN-AGM-002, RN-AGM-008, RN-AGM-017; CA-008.2, CA-008.3, CA-008.5 |
| CT-AGM-CTX-04 | Dr. 11 logado, Agenda em sáb, 26/09 | Conferir o item de Reed Richards (14:30) | Sem unidade (a consulta não tem); só o convênio "Sulamérica" | Agenda 2 (`IdUAtendimento` nulo) | RN-AGM-017 (b); CA-008.3 |
| CT-AGM-CTX-05 **(BD)** | Dr. 11, Agenda hoje carregada | Alterar `UnidadeAtendimento.StConsulta` de Consultórios Sul (2) para `'N'`; recarregar a Agenda; restaurar `'S'` | Com uma só unidade ativa para consultas na Clínica Gama, nenhum item mostra mais a unidade. Depois de restaurar, a unidade volta | `UnidadeAtendimento` 2 | RN-AGM-017 (b); CA-008.3 |
| CT-AGM-CTX-06 | Dr. 11, hoje | Conferir o convênio de Fatima Al-Mansoori e de Beatriz | Fatima: "PARTICULAR" (particular aparece pelo nome curto cadastrado). Beatriz: "Bradesco Saúde". Nenhum item mostra plano | Agendas 148, 103 | RN-AGM-017 (c); CA-008.4 |
| CT-AGM-CTX-07 | Dr. 11, hoje | Conferir a classificação | Nenhum item mostra classificação (nenhuma agenda do dia tem) — sem espaço vazio no lugar | — | RN-AGM-008; CA-001.4, CA-008.5 |
| CT-AGM-CTX-08 | Estado de CT-AGM-CTX-03, desktop | Passar o mouse sobre cada informação complementar do item de Marcelo (09:00) | Dicas: "Clínica e unidade", "Convênio", "Classificação". No item de Helena (08:00): "Clínica". No item de Yuki (Dr. 11, hoje): "Unidade de atendimento" | — | MSG-BAGM-18; CA-008.6 |
| CT-AGM-CTX-09 | Estado de CT-AGM-CTX-03, leitor de tela ativo | Navegar até o item de Marcelo (09:00) | O nome do link inclui as informações com os rótulos (ex.: "clínica e unidade Clínica Gama › Consultórios Sul, convênio HapVida, classificação Quimioterapia › Ciclo 2"). Os ícones não são anunciados | — | CA-008.6, CA-001.21 |
| CT-AGM-CTX-10 | Qualquer dia com consultas, desktop e celular | Comparar a linha de informações complementares com o resto do item | Texto de 12px, cor cinza (`color-neutral-pure`), sem chips nem cores, ícones de 14px na mesma cor, sem "·" entre as informações; é o texto de menor destaque do item | — | RN-AGM-017; CA-008.7 |

---

## 5. Tags e 1ª Consulta

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-TAG-01 | Estado de CT-AGM-LIS-03 (Dr. 9, hoje) | Conferir as tags | Otávio: "ESPECIAL" (fundo `#DEDAFF`); Marcelo: "IC" (`#FFC400`); Sophia: "VIP" (`#80FF38`). Rogério (grupo de realizadas) **sem** tag — a tag Linha de cuidados que ele tem no prontuário não é exibida em agendas | Ver Massa de dados (Tags) | RN-AGM-006; CA-001.2 |
| CT-AGM-TAG-02 | Estado de CT-AGM-TAG-01, desktop | Passar o mouse sobre "IC" e "VIP" | Dicas: "Paciente com CID de insuficiência cardíaca" e "Paciente com tratamento administrativo diferenciado". O chip mostra só a sigla | `ProgramaApoio.Descricao` | RN-AGM-006; CA-001.2 |
| CT-AGM-TAG-03 | Estado de CT-AGM-TAG-01, leitor de tela | Ler o item de Sophia Muller | Anuncia "VIP" e a descrição "Paciente com tratamento administrativo diferenciado" | — | CA-001.2, CA-001.21 |
| CT-AGM-TAG-04 | Dr. 9 logado, Agenda em sáb, 29/08 (hoje−25) | Expandir "1 realizada" e conferir o item de Sophia Muller (09:00) | **Sem** a tag VIP: a atribuição de VIP de Sophia só começa em 10/09/2026, depois do dia exibido. Em hoje (23/09), a mesma paciente mostra VIP (CT-AGM-TAG-01) | Agenda 120; `ProgramaApoioPaciente` 1 (`DataInicio = 10/09/2026`) | RN-AGM-006; CA-001.24 |
| CT-AGM-TAG-05 **(BD)** | Dr. 9 logado | 1. Alterar `ProgramaApoioPaciente.DataFim` do VIP de John Smith (id 2) para 01/09/2026. 2. Abrir a Agenda em seg, 31/08 (hoje−23) e expandir realizadas. 3. Abrir hoje e expandir realizadas. 4. Restaurar `DataFim` nulo | Passo 2: John Smith (10:45) **com** VIP — a atribuição estava vigente naquele dia. Passo 3: John Smith (09:00) **sem** VIP — já não está vigente hoje | Agendas 33, 102 | RN-AGM-006; CA-001.24 |
| CT-AGM-TAG-06 | Dr. 9 logado, Agenda em seg, 13/07 (hoje−72) | Expandir "1 realizada" | John Smith (09:30) sem VIP — a atribuição começa em 25/07/2026 | Agenda 32 | CA-001.24 |
| CT-AGM-TAG-07 | Dr. 11 e Dr. 9, hoje | Conferir o ícone de 1ª Consulta | Dr. 11: Anya Ivanova (realizadas) e Fatima Al-Mansoori. Dr. 9: John Smith (realizadas) e Sophia Muller. Nenhum outro item. O ícone nunca aparece como chip de tag | `Agenda.PrimeiraConsulta = 'S'` em 113, 148, 102, 134 | RN-CM-028; CA-001.8 |

---

## 6. Bloqueios de Horário

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-BLQ-01 | Dr. 9 logado, Agenda em qui, 24/09 (hoje+1), desktop | Observar o item das 12:00 | Item próprio entre as consultas, na posição das 12:00: coluna de horário 12:00 / 13:00, cadeado no lugar do avatar, rótulo **"Bloqueado"**, motivo **"Reunião da equipe multidisciplinar"** na linha de baixo, e "Gama Norte" (ícone de prédio). Sem foto, diagnóstico, status, modo, tags, convênio nem classificação. Fundo cinza bem claro com borda **tracejada** | B101 | RN-AGM-019; CA-009.1, CA-009.5 |
| CT-AGM-BLQ-02 | Dr. 11 logado, hoje às 12:00 | Observar o item das 08:00 | "Bloqueado", horário 08:00 / 08:45, **sem motivo**; só "Setor Rosa" com o ícone de alfinete (Dr. 11 tem uma clínica; a Clínica Gama tem duas unidades ativas para consultas e o bloqueio tem unidade). Nenhum convênio (o convênio reservado "BLOQUEIO" não aparece) | Agenda 164 | RN-AGM-019; CA-009.2 |
| CT-AGM-BLQ-03 | Estado de CT-AGM-BLQ-02 | Tocar ou clicar no bloqueio; depois navegar pela lista com Tab | Nada acontece ao tocar (o PEP não abre, sem hover). Com Tab, o foco passa direto do item anterior para o seguinte — o bloqueio nunca recebe foco | Agenda 164 | RN-AGM-001; CA-009.3 |
| CT-AGM-BLQ-04 | Estado de CT-AGM-BLQ-02 (12:00, o bloqueio já terminou) | Observar o bloqueio e a linha de resumo | O bloqueio continua igual, na posição das 08:00, acima da linha "AGORA". A linha de resumo continua "2 realizadas" / "2 canceladas" — o bloqueio não entra em nenhum dos dois | Agenda 164 | RN-AGM-019; CA-009.6 |
| CT-AGM-BLQ-05 | Dr. 11 logado, Agenda em sex, 25/09 (hoje+2) | Observar a lista | Linha do fuso; abaixo, "Nenhuma consulta neste dia." em texto discreto (não o estado vazio de tela cheia, e sem o botão de próximo dia); abaixo, o bloqueio 08:00–18:00 "Bloqueado" · "Congresso de Oncologia", sem informações complementares (uma clínica, sem unidade) | B111 | RN-AGM-019; CA-009.4; EX-AGM-03 |
| CT-AGM-BLQ-06 | Dr. 11 logado, Agenda em hoje | Acionar "Próximo dia com consulta" (menu ⋮) e abrir o calendário de setembro | O atalho vai para **sáb, 26/09**, pulando 24/09 (vazio) e 25/09 (só bloqueio). No calendário, 25/09 **não** tem o ponto de dia com consulta | B111 | RN-AGM-003; CA-009.4 |
| CT-AGM-BLQ-07 **(BD)** | Dr. 11, Agenda aberta hoje | Alterar `Agenda.Situacao` do 164 para `'C'` (cancelamento formal); esperar a próxima atualização automática (até 1 minuto); restaurar `'A'` | O bloqueio some da lista. A linha de resumo continua "2 canceladas" — o bloqueio cancelado não vai para o grupo de canceladas. Depois de restaurar, volta na atualização seguinte | Agenda 164 | RN-AGM-019; CA-009.7 |
| CT-AGM-BLQ-08 **(BD)** | Dr. 11, Agenda aberta hoje | Preencher `Agenda.RemovidoEm` e `UsuarioIdRemovido` do 164 (exclusão lógica); esperar a atualização automática; restaurar nulos | O bloqueio some da lista, sem ir para nenhum grupo. Volta depois de restaurar | Agenda 164 | RN-AGM-019; CA-009.7 |
| CT-AGM-BLQ-09 | Estado de CT-AGM-BLQ-01, leitor de tela | Navegar pela lista em modo de leitura | O bloqueio é lido como grupo "Horário bloqueado, 12:00 às 13:00", seguido de "Bloqueado", do motivo e de "Clínica: Gama Norte". Não é anunciado como link. O cadeado não é anunciado | B101 | 02-Especificação, Acessibilidade do item de bloqueio; MSG-BAGM-20 |
| CT-AGM-BLQ-10 | Dr. 11 logado na **Central do Médico**, hoje | Observar o painel Consultas (os dois estados do toggle) e o indicador "Consultas Hoje" | O bloqueio das 08:00 continua **fora** da Central — mesmos resultados de CT-CONS-10 e CT-KPI-07 do Cenários de Teste da Central. Só a Agenda exibe bloqueios | Agenda 164 | RN-CM-030, RN-AGM-019 |
| CT-AGM-BLQ-11 | Dr. 9, Agenda em 24/09, celular (<640px) | Observar o bloqueio | Sem avatar: o cadeado aparece antes do rótulo "Bloqueado", na mesma linha | B101 | 02-Especificação, Item de bloqueio |

---

## 7. Navegação por Dia

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-NAV-01 | Dr. 11, Agenda em hoje | Tocar na seta "próximo dia" (›) duas vezes | 1º toque: qui, 24/09 (estado vazio — a seta não pula dias vazios). 2º toque: sex, 25/09 (só bloqueio). O botão "Hoje" sai do estado ativo | — | RN-AGM-003; CA-002.1 |
| CT-AGM-NAV-02 | Estado final de CT-AGM-NAV-01 | Tocar em "Hoje" | Volta para hoje, com a rolagem inicial de CT-AGM-RES-07; "Hoje" volta ao estado ativo. Tocar de novo em "Hoje" não faz nada | — | CA-002.5 |
| CT-AGM-NAV-03 | Dr. 11, Agenda em hoje | Abrir o menu ⋮ | Itens: "Próximo dia com consulta" com **"sáb, 26/09"** abaixo; "Dia anterior com consulta" com **"qua, 16/09"** abaixo; "Legenda dos ícones" | Agendas 2 (26/09), 111/85 (16/09) | RN-AGM-003; CA-002.2 |
| CT-AGM-NAV-04 | Dr. 11, Agenda em qua, 09/09 (hoje−14) | Acionar "Dia anterior com consulta" | Vai para **qui, 27/08**, pulando sáb, 29/08 e sex, 28/08 (só consultas canceladas: Agendas 7 e 3) | Agendas 112 (09/09), 7, 3, 4/81 (27/08) | RN-AGM-003; CA-002.2 |
| CT-AGM-NAV-05 | Dr. 9, Agenda em hoje | Abrir o menu ⋮ | "Próximo dia com consulta" · **"qui, 24/09"** (massa complementar); "Dia anterior com consulta" · **"sex, 18/09"** | A101–A103; Agenda 117 | CA-002.2 |
| CT-AGM-NAV-06 | Dr. 11, Agenda em sex, 27/11 (hoje+65, última consulta) | Abrir o menu ⋮; no desktop, observar o atalho »; abrir o calendário | "Próximo dia com consulta" indisponível, com **"Nenhum"** no lugar da data, em todos os pontos de entrada (menu, », topo do calendário). Ao acionar, nada acontece | Agenda 99 | CA-002.3 |
| CT-AGM-NAV-07 | Dr. 11, Agenda em hoje, desktop | Observar a barra do dia | Setas ‹ ›, atalhos « » ao lado delas, data por extenso ("Quarta-feira, 23 de setembro") com seta para baixo, "Hoje" e ⋮, numa única linha | — | 02-Especificação, Barra de Navegação do Dia |
| CT-AGM-NAV-08 | Dr. 11, Agenda em hoje | Tocar na data | Calendário de setembro (bottom sheet no celular, painel no desktop) com os dois atalhos e suas datas no topo; ponto sob **9, 16, 23, 26 e 30/09**; sem ponto em 25/09 (só bloqueio) nem nos dias só com canceladas; hoje e o dia exibido destacados; foco no dia exibido. Selecionar 30/09 fecha o calendário e carrega o dia | Agendas 112, 111/85, hoje, 2, 123 | RN-AGM-003; CA-002.4 |
| CT-AGM-NAV-09 | Dr. 9, calendário aberto em setembro | Observar os pontos | Pontos em **2, 5, 8, 10, 18, 23, 24 e 30/09** | Agendas do Dr. 9 + A101–A103 | CA-002.4 |
| CT-AGM-NAV-10 | `GET /days-with-appointments` e `GET /next-appointment-date` simulando falha | Abrir a Agenda, o menu ⋮ e o calendário; usar as setas e "Hoje" | Atalhos indisponíveis, com "Indisponível no momento" (MSG-TAGM-06) no lugar da data no menu; calendário sem nenhum ponto. Setas e "Hoje" continuam funcionando. Nenhuma mensagem de erro na tela principal | — | EX-AGM-06; CA-002.6 |
| CT-AGM-NAV-11 | Agenda aberta no celular e no desktop | Abrir ⋮ → "Legenda dos ícones"; fechar com Esc; reabrir e fechar com o botão Fechar; reabrir e tocar fora | Lista, nesta ordem: Clínica (e unidade, depois de ›); Unidade de atendimento; Convênio; Classificação › subclassificação; 1ª Consulta; Horário bloqueado pela Recepção (sem consulta); Fuso horário dos horários exibidos; Consultas realizadas; Consultas canceladas (inclusive falta) — textos exatos de MSG-BAGM-19. Bottom sheet no celular, modal no desktop. Nos três modos de fechar, o foco volta ao botão ⋮ | — | CA-008.8; MSG-BAGM-19 |

---

## 8. Fuso Horário da Agenda

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-FUSO-01 | Aparelho no fuso de São Paulo; Clinica Gama com `FusoHorarioOficial = 'America/Sao_Paulo'` | Abrir a Agenda em qualquer dia | Primeira linha da lista: "Fuso horário: Horário Padrão de Brasília (GMT−03:00)", discreta (12px, cinza, ícone de globo), sem destaque. A linha rola com a lista | Massa complementar | RN-AGM-018; CA-001.23; MSG-TAGM-09 |
| CT-AGM-FUSO-02 | Aparelho configurado no fuso de Londres; mesma clínica | Abrir a Agenda hoje (Dr. 11) | Linha do fuso **destacada** (fundo amarelo claro): "Fuso horário: Horário Padrão de Brasília (GMT−03:00) — diferente do fuso deste aparelho". Os horários dos itens continuam os da clínica (Maria Silva às 13:30, não 17:30) | — | RN-AGM-018; CA-001.23; MSG-TAGM-10 |
| CT-AGM-FUSO-03 | Aparelho em Londres, hoje às 12:00 de São Paulo | Observar a linha "AGORA" e o estado de "Hoje" | "AGORA" marca 12:00 (hora da clínica), e "hoje" é o dia da clínica — mesmo que no aparelho já seja outro horário | — | RN-AGM-018 |
| CT-AGM-FUSO-04 **(API)** | Token do Dr. 11 | `GET /day?date=` hoje | `timeZone = "America/Sao_Paulo"`; `serverNow` com deslocamento `-03:00`; `startTime`/`endTime` no fuso da clínica | — | RN-AGM-018; 02-Especificação, `GET /day` |

---

## 9. Atualização Automática e Conexão

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-ATU-01 **(BD)** | Dr. 11, Agenda hoje às 12:00, grupo "2 realizadas" expandido, lista rolada até Yuki Tanaka, foco no item de Reed Richards | Registrar no banco a chegada de Yuki Tanaka (`DhChegadaUTC`, Agenda 87); esperar até 1 minuto | Yuki passa de "Agendado" para "Aguardando Recepção" (borda #FF8A80), sem recarregar a tela. O grupo de realizadas continua expandido, a rolagem não muda e o foco continua em Reed. Restaurar `DhChegadaUTC` nulo | Agenda 87 | RN-AGM-013; CA-001.11 |
| CT-AGM-ATU-02 **(BD)** | Dr. 11, Agenda hoje | Registrar o fim do atendimento de Beatriz (`Situacao='V'`, `DhAtendimentoFimUTC`, Agenda 103); esperar até 1 minuto | Beatriz sai da lista principal e entra no grupo de realizadas, que passa a "3 realizadas". Restaurar | Agenda 103 | RN-AGM-010, RN-AGM-013; CA-001.11 |
| CT-AGM-ATU-03 | Dr. 11, Agenda hoje carregada às 12:00 | Derrubar a conexão (ou o `GET /day`) e esperar a próxima atualização; rolar a lista | Os dados continuam na tela. Logo abaixo da barra do dia aparece a faixa com ícone de wi-fi cortado: **"Sem conexão — dados atualizados às 12:00"** (horário da última atualização bem-sucedida), presa junto com a barra ao rolar. Leitor de tela anuncia a faixa uma vez | — | EX-AGM-09; CA-001.12; MSG-TAGM-03 |
| CT-AGM-ATU-04 | Estado de CT-AGM-ATU-03 | Restabelecer a conexão e esperar a próxima atualização | A faixa some sozinha (não há botão de fechar) | — | EX-AGM-09; CA-001.12 |
| CT-AGM-ATU-05 | Estado de erro de CT-AGM-LIS-12 (falha no carregamento inicial) | Esperar 2 minutos sem tocar em nada | A tela continua no estado de erro: nenhuma atualização automática roda nem a substitui, e a faixa de sem conexão não aparece | — | EX-AGM-02; CA-001.11 |
| CT-AGM-ATU-06 | Dr. 11, Agenda hoje, devtools na aba Rede | Observar as requisições por 3 minutos | `GET /day` do dia exibido a cada 1 minuto; a cada atualização, também `GET /next-appointment-date` nas duas direções. Leitor de tela não anuncia a lista inteira a cada atualização | — | RN-AGM-013; 02-Especificação, Atualização Automática |

---

## 10. Layout, Tema e Acessibilidade

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-UI-01 | Celular, largura 360px, Dr. 11 hoje | Medir a área fixa do topo e observar os itens | Cabeçalho + barra do dia com **no máximo 120px** de altura (sem a faixa de sem conexão); barra do dia numa única linha (‹ data curta "Qua, 23 set" › Hoje ⋮), sem os atalhos « »; nome da clínica oculto no cabeçalho; nenhum item com avatar | — | CA-001.16 |
| CT-AGM-UI-02 | Desktop (≥640px), Dr. 11 hoje | Observar o item de Yuki Tanaka (14:00) | Exatamente **3 linhas**: "Yuki Tanaka · C50.3 - Câncer de ovários (bi)" + chip "Agendado"; "Presencial" + chip "INT.MED"; informações complementares (alfinete "Consultórios Norte", carteira "Cassi") | Agenda 87 | CA-001.17 |
| CT-AGM-UI-03 | Celular, Dr. 11 hoje | Observar o item de Maria Silva (13:30) | Linha 1: nome + status; linha 2: "C50.2 - Câncer de mama (QSI) · Teleatendimento" + INT.MED; à direita, o sinalizador de atraso, quando houver; última linha: informações complementares | Agenda 62 | 02-Especificação, Item de consulta (celular) |
| CT-AGM-UI-04 | **Protótipo v1.13**, amanhã, desktop e celular | Observar o item de Beatriz Mendes (08:00) | Três diagnósticos, ícone de 1ª Consulta, duas tags, complemento longo e as quatro informações complementares completos, sem reticências — o que não cabe quebra para a linha de baixo. No back-end: sem massa (ver Pendências) | Mock do Protótipo | CA-001.18 |
| CT-AGM-UI-05 | Aparelho em modo escuro, tema "Automático" | Abrir a Agenda; no menu do avatar, escolher "Claro"; fechar e reabrir a Agenda no mesmo aparelho | Abre no tema escuro; ao escolher "Claro", passa ao tema claro na hora; ao reabrir, continua clara, mesmo com o aparelho em modo escuro | — | CA-001.19 |
| CT-AGM-UI-06 | Tema escuro, Dr. 9 hoje com os dois grupos expandidos | Medir contraste (ferramenta de acessibilidade) de chips de status, tags, sinalizadores, informações complementares, linha do fuso e bloqueio | Texto ≥ 4,5:1 com o fundo; elementos não textuais ≥ 3:1 | — | CA-001.20 |
| CT-AGM-UI-07 | Leitor de tela, Dr. 11 hoje | Navegar até o item de Maria Silva (13:30) | Anuncia um **link** com: horário 13:30 às 14:00, nome, diagnóstico, "Aguardando Recepção", "Teleatendimento", sinalizador de atraso (se houver), tag INT.MED com a descrição e as informações complementares com rótulos ("unidade de atendimento Consultórios Sul, convênio Unimed Nacional"). Enter ou Espaço abre o PEP | Agenda 62 | CA-001.21 |
| CT-AGM-UI-08 | Qualquer largura | Medir o botão "Hoje" e o contraste no estado ativo | Altura ≥ 44px; no estado ativo, texto/fundo ≥ 4,5:1; `aria-current="date"` | — | CA-001.22 |
| CT-AGM-UI-09 | Celular | Medir os alvos de toque (setas, ⋮, "Hoje", dias do calendário, itens) | Todos com pelo menos 44×44px | — | 02-Especificação, Premissa de design |

---

## 11. Cabeçalho e Busca

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-CAB-01 | Dr. 11, Agenda aberta | Digitar "Rob" no campo de busca do cabeçalho e selecionar o resultado | Mesmo comportamento da Central (CT-BUSCA-01 a 05): após 1s, retorna Roberto Nascimento Alves (19); ao selecionar, abre o PEP dele | — | RN-AGM-014; CA-001.13 |
| CT-AGM-CAB-02 | Desktop e celular | Observar o cabeçalho | Mesma altura (64px) e componentes da Central: nome da clínica (oculto no celular), busca e avatar com menu (inclui "Tema") | — | RN-AGM-014 |

---

## 12. Contrato dos Endpoints

| ID | Pré-condição | Passos | Resultado Esperado | Dados de Teste | RN/CA Relacionada |
|---|---|---|---|---|---|
| CT-AGM-API-01 **(API)** | Token do Dr. 11 | `GET /day?date=` hoje | 200. `appointments` com as 10 consultas do dia (inclusive as 2 canceladas), `id` e `patient.id` inteiros; `blocks` com **um** item: `{ id: 164, startTime: "08:00", endTime: "08:45", reason: null, clinic: null, unit: "Setor Rosa" }`. Nenhum dado de paciente no bloqueio, e o bloqueio **não** aparece em `appointments` | Agendas de hoje do Dr. 11 | RN-AGM-019; 02-Especificação, `GET /day`; 04-Mapeamento 4.1 |
| CT-AGM-API-02 **(API)** | Token do Dr. 9 | `GET /day?date=` hoje+1 | `blocks` com `{ startTime: "12:00", endTime: "13:00", reason: "Reunião da equipe multidisciplinar", clinic: "Gama Norte", unit: null }`; em `appointments`, A102 com `classification = { name: "Quimioterapia", subName: "Ciclo 2" }`, A103 com `{ name: "Seguimento", subName: null }` e `unit: null`, A101 com `unit: null` | A101–A103, B101 | 04-Mapeamento 4.1 |
| CT-AGM-API-03 **(API)** | Token do Dr. 11 | `GET /day?date=` hoje e conferir `insurance` e `delayMinutes` | `insurance` sempre preenchido (inclusive "PARTICULAR"), sem plano. `delayMinutes = 0` nas canceladas (107, 109) e em todas as consultas de dias que não são hoje | — | 02-Especificação, `GET /day` |
| CT-AGM-API-04 **(API)** | Token do Dr. 11 | `GET /day` sem `date`; com `date=2026-13-40` | 400 nos dois casos | — | 02-Especificação, Códigos |
| CT-AGM-API-05 **(API)** | Token do Dr. 11 | `GET /days-with-appointments?from=2026-09-01&to=2026-09-30`; depois com `to=2026-11-30` (91 dias) | 1ª: `dates` = 2026-09-09, 09-16, 09-23, 09-26, 09-30, em ordem — sem 09-25 (só bloqueio). 2ª: 400 (intervalo acima de 62 dias) | — | RN-AGM-003, RN-AGM-019; 04-Mapeamento 4.2 |
| CT-AGM-API-06 **(API)** | Token do Dr. 11 | `GET /next-appointment-date?direction=next&from=` hoje; `direction=previous&from=2026-09-09`; `direction=next&from=2026-11-27` | `"2026-09-26"`; `"2026-08-27"`; `null` | — | 04-Mapeamento 4.3 |
| CT-AGM-API-07 **(API)** | Sem token | Chamar os três endpoints | 401 | — | — |
| CT-AGM-API-08 **(BD)** | Mecanismo de auditoria implantado (pendência) | Carregar um dia na Agenda; aguardar 2 atualizações automáticas; abrir o PEP de um paciente pela agenda | Um evento de auditoria pela leitura do dia (as atualizações automáticas do mesmo dia **não** geram novos eventos) e um pela abertura do PEP. **Não executável** até a trilha de auditoria existir | — | SBIS NGS1.07.03/04; 02-Especificação, Conformidade SBIS |

---

## 13. Idioma e Mensagens

| ID | Pré-condição | Passos | Resultado Esperado | RN/SBIS Relacionada |
|---|---|---|---|---|
| CT-AGM-MSG-01 | Interface em pt-BR | Provocar cada estado durante as Seções 2 a 12 e conferir o texto | Cada texto bate **exatamente** com o catálogo da 02-Especificação v1.16: MSG-EAGM-03, MSG-TAGM-01, 03, 05 ("Dia com consulta", legenda do calendário), 06, 09, 10; MSG-BAGM-03, 07, 08, 09, 12, 14, 16, 17, 18, 19, 20. Nenhum termo técnico (nome de tabela, código HTTP) visível ao usuário | SBIS ECF.17.19 |
| CT-AGM-MSG-02 | Interface em pt-BR | Percorrer rótulos de status, modo e botões | Status: Agendado, Aguardando Recepção, Recepcionado, Em Atendimento, Finalizado, Cancelado. Modo: Presencial, Teleatendimento, Customizado | SBIS ECF.17.18 |

---

## 14. Matriz de Rastreabilidade

| Área | Casos | RN cobertas | CA / EX cobertos | SBIS | Cobertura |
|---|---|---|---|---|---|
| Lista e item | CT-AGM-LIS-01 a 14 | RN-AGM-002, 007, 009 | CA-001.1, 001.3, 001.5, 001.6, 001.7, 001.8, 001.10, 001.14, 001.15; EX-AGM-02, EX-AGM-03 | — | Dr. 11 e Dr. 9 com a carga real; Customizado e estado vazio dependem da massa complementar |
| Resumo, AGORA, rolagem, atraso | CT-AGM-RES-01 a 13 | RN-AGM-009, 010, 013 | CA-001.9, CA-005.1, 005.2, 005.3, 005.4, 005.5, 005.7 | — | Completo com a carga real; RES-13 exige executar perto da meia-noite |
| Informações complementares | CT-AGM-CTX-01 a 10 | RN-AGM-002, 008, 017 | CA-001.4, CA-008.1 a 008.7 | ECF.05.04 | Clínica e classificação dependem da massa complementar |
| Tags e 1ª Consulta | CT-AGM-TAG-01 a 07 | RN-AGM-006, RN-CM-028 | CA-001.2, CA-001.8, CA-001.24 | — | Vigência no dia exibido com dado real (TAG-04, 06) e por alteração no banco (TAG-05). Ver lacuna 1 |
| Bloqueios | CT-AGM-BLQ-01 a 11 | RN-AGM-001, 003, 019; RN-CM-030 | CA-009.1 a 009.7; EX-AGM-03 | ECF.05.02 (exibição) | Bloqueio sem motivo com dado real (164); com motivo e dia só com bloqueio na massa complementar |
| Navegação | CT-AGM-NAV-01 a 11 | RN-AGM-003 | CA-002.1 a 002.6, CA-008.8; EX-AGM-06 | — | Completo; NAV-10 exige simular falha |
| Fuso | CT-AGM-FUSO-01 a 04 | RN-AGM-018 | CA-001.23 | — | Depende do campo novo `FusoHorarioOficial` na massa |
| Atualização e conexão | CT-AGM-ATU-01 a 06 | RN-AGM-013 | CA-001.11, CA-001.12; EX-AGM-02, EX-AGM-09 | — | ATU-03 a 05 exigem simular falha |
| Layout, tema, acessibilidade | CT-AGM-UI-01 a 09 | — | CA-001.16 a 001.22 | — | UI-04 só no Protótipo (sem massa) |
| Cabeçalho e busca | CT-AGM-CAB-01, 02 | RN-AGM-014 | CA-001.13 | ECF.03.11, ECF.03.14 | Busca coberta pelos casos da Central |
| Endpoints | CT-AGM-API-01 a 08 | RN-AGM-003, 018, 019 | — | NGS1.07.03/04 | API-08 não executável até existir a trilha de auditoria |
| Idioma e mensagens | CT-AGM-MSG-01, 02 | — | — | ECF.17.18, ECF.17.19 | Só pt-BR |

**Cobertura dos critérios de aceitação:** 51/51 (CA-001.1 a 001.24, CA-002.1 a 002.6, CA-005.1 a 005.5 e 005.7, CA-008.1 a 008.8, CA-009.1 a 009.7). **Fluxos de exceção:** 4/4 (EX-AGM-02, 03, 06, 09). **Total:** 97 casos.

**Não coberto, por decisão de escopo:** volume (a Especificação não define limite de consultas por dia nem meta de tempo de carga); concorrência (Recepção alterando a agenda no mesmo segundo da atualização automática — não especificado); textos en-US/es-419.

**Lacunas de especificação encontradas ao montar os casos** — para decisão do solicitante; nenhum documento 01-04 foi alterado:

1. **Origem das tags IC, INT.MED e ESPECIAL.** Na carga, essas três vêm de `PEPProgramaApoioPaciente` (vínculo ao prontuário), e a Central do Médico as exibe nos cards (Cenários de Teste da Central, Seção 3). O Mapeamento da Agenda (4.1, campo `tags`) só cita `ProgramaApoioPaciente`, e o da Central também. Os casos acima seguem a regra de negócio (RN-AGM-006: mesmo critério da Central), ou seja, **esperam** essas tags. Se a Seção 4 continuar só com `ProgramaApoioPaciente`, CT-AGM-TAG-01, CT-AGM-RES-01/03 e o detalhamento de CT-AGM-LIS-01/03 mudam (sem IC, INT.MED e ESPECIAL). Falta também dizer como fica a vigência dessas tags, já que o vínculo ao prontuário não tem data de início nem de fim.
2. **Unidade não destinada a consultas num bloqueio.** O bloqueio 164 está no "Setor Rosa" (`StConsulta = 'N'`). Pela regra atual (a unidade aparece quando a clínica tem mais de uma unidade ativa para consultas e o registro tem unidade), "Setor Rosa" aparece no bloqueio (CT-AGM-BLQ-02). Confirmar se é o esperado.
3. **Texto dos atalhos na Especificação.** A descrição da Barra do Dia diz que os atalhos ignoram "dias só com consultas canceladas", sem citar bloqueios; RN-AGM-003, CA-009.4 e o Mapeamento já dizem que dia só com bloqueio também é ignorado. Os casos seguem a regra (CT-AGM-BLQ-06, CT-AGM-API-05).

---

## 15. Histórico de Versões

- **v1.0** (08/10/2026) — Versão inicial, a pedido do solicitante ("vamos para os cenários de testes?"), seguindo o modelo dos Cenários de Teste da Central do Médico (v1.28) e do Check-in de Usuários, Épico 5 (v1.3). Construído a partir de 01-Definição v1.14, 02-Especificação v1.16, 03-Protótipo v1.13 (.md e .html) e 04-Mapeamento de BD v1.4. Cada caso cita a RN, CA, EX ou seção de onde veio; nenhuma regra nova foi criada. O que a QA precisa saber:
	- **Massa:** usa a `CargaCMZero.xlsx` (data-base 23/09/2026, a mesma da Central), conferida aba a aba para os Drs. 11 e 9: agendas de consulta de todos os dias, status calculado pelas regras de `AppointmentStatus()`, unidades, convênios (`Chave.Descricao`), diagnósticos (`PEPDiagnostico.Diagnostico`, Tipo `O`), fotos, tags (`MostrarEm`, vigências) e o bloqueio 164. Achados na carga: a única clínica do cliente Gama faz a clínica nunca aparecer; não há classificação, modo Customizado, bloqueio com motivo nem dia só com bloqueio; a Clinica Gama está com idioma `en-US`; o campo `FusoHorarioOficial` ainda não existe. Para cobrir isso, a Seção 1 propõe uma **massa complementar [PROPOSTA]**, com nomes inventados ("Gama Norte", "Consultório Único", classificações "Quimioterapia"/"Seguimento", subclassificação "Ciclo 2", motivos de bloqueio), toda fora do dia de hoje — os casos da Central não mudam.
	- **Divergências entre a carga e o Cenários de Teste da Central:** diagnóstico de Yuki Tanaka (carga "C50.3 - Câncer de ovários (bi)", com `IdDiagnostico = 'C56.3'`; Central "C56.3 - …") e de Reed Richards (carga "C64 - Câncer de rins"; Central "C64 - Câncer do rim"). Os casos daqui seguem a carga.
	- **97 casos** em 12 áreas: lista e item (14), resumo/AGORA/rolagem/atraso (13), informações complementares (10), tags e 1ª Consulta (7), bloqueios (11), navegação (11), fuso (4), atualização e conexão (6), layout/tema/acessibilidade (9), cabeçalho e busca (2), endpoints (8), idioma e mensagens (2). Cobertura: 51/51 CA, 4/4 EX.
	- **Três lacunas de especificação** listadas ao final da Seção 14 (origem das tags vinculadas ao prontuário, unidade não destinada a consultas num bloqueio, texto dos atalhos na Especificação). Os casos foram escritos com o resultado esperado pela regra de negócio.
	- Revisão por Dois Críticos: não aplicável — cobertura de teste para comportamento já especificado, sem decisão de modelagem nova.
