# Correções complementares — Optimus Sales Academy

## Resultado

Aplicados os itens do arquivo `pendencias-optimus-sales-academy.md`, sem mudar calendário, datas de liberação, IDs dos módulos ou apagar históricos. As tentativas existentes mantêm seus enunciados, alternativas e gabaritos congelados.

### Conteúdo

- Módulo 1: diálogo de oito falas conforme a especificação, com acolhimento da emoção, apresentação, nome, uma pergunta por vez e resumo antes do convite. Roteiro atualizado; exercício em trio e checklist explícito. Bloco Evite preservado.
- Diálogos alterados: módulos de IDs 1 (Fundamentos), 2 (WhatsApp), 3 (Presenciais; posição 4 na trilha) e 6 (Retenção; posição 7). Módulos 7 (Anúncios), 4 (Objeções) e 5 (Avançadas) revisados, sem necessidade de troca. Teste assegura no máximo uma interrogação por fala de atendente. As práticas integradas permanecem cenários de treinamento sem promessas, ofertas inventadas ou orientação clínica.
- O banco anterior do Módulo 1 era genérico e não cobria adequadamente todos os dez pontos. Foi substituído por dez questões específicas e plausíveis. Q3 distingue responder ao preço solicitado, com transparência, de recomendar um plano antes de conhecer necessidades. Não foi adotada uma regra de ocultar preços até a qualificação. Lesão: acolher e encaminhar a profissional habilitado, sem diagnóstico nem prescrição.
- Banco rev2 tem identificadores próprios de questão; IDs dos módulos e snapshots de tentativas anteriores não mudam. Sorteio de 5/10 e nota 80% preservados.

### Envio de provas

Todas as categorias (módulo, reciclagem, final e manutenção) agora percorrem `estudo → questionário → revisão → envio único`. Revisão mostra cada pergunta e a resposta escolhida, destaca ausências e permite voltar. O servidor exige token de revisão; voltar invalida o token anterior. Respostas enviadas são as revisadas e persistidas no servidor, não uma nova lista arbitrária enviada no último clique. Atualização condicional e índice de tentativa ativa continuam preservados.

### Ponto de partida

A tela antiga estava quebrada: dependia de `moduleQuestions`, retirado pelo calendário de 60 dias. Agora há perguntas de diagnóstico separadas e sem gabarito no cliente. A etapa se chama Ponto de partida e informa que não muda datas nem ordem. A primeira medição é preservada, incluindo a medição legada disponível na migração. O gestor vê nota inicial e nota final lado a lado, com aviso de que instrumentos diferentes não permitem afirmar efeito causal do treinamento.

### Lembretes

Tela inicial/programa: próxima etapa, data e atraso, incluindo manutenção futura após certificado. Gestor: bloco Atenção esta semana com reciclagens a vencer em até três dias, atrasadas, provas atrasadas e checklists pendentes. Pausas não geram novos lembretes enquanto ativas.

Convites pendentes têm Copiar convite, com nome, link e e-mail correto. Cada pessoa no bloco de atenção tem Copiar lembrete; datas apresentadas em português do Brasil. A plataforma copia texto, mas não envia WhatsApp ou e-mail. Se a permissão de área de transferência não estiver disponível, abre texto selecionado para cópia manual.

### Privacidade

Nova versão do aviso, com responsável/razão social, CNPJ, dados usados, finalidade, acesso, prazo e contato. Campos configuráveis apenas pelo proprietário da academia, com alerta enquanto incompletos. Alterar os dados gera revisão e pede nova ciência. Gestores convidados não podem modificar esse aviso.

Migração aditiva: proprietário e configurações de privacidade nas academias existentes. Para academia legada da conta principal, proprietário é a identidade original; demais academias existentes usam o primeiro gestor criador. A configuração não transfere propriedade ou dados entre academias.

A observação sobre validar base legal, prazo e texto com advogado aparece somente ao proprietário. Não há exclusão automática implementada: o responsável deve estabelecer/executar o processo de retenção anunciado. O sistema não inventa razão social, CNPJ, prazo ou contato.

### Acessibilidade e vídeo

Track de captions em português e transcrição preservados; WebVTT foi repartido em trechos menores, derivados da narração, para melhorar leitura em telas pequenas. Legendas com fundo preto/texto branco. Campo de foco visível em inputs, radios e demais controles; provas com fieldset/legend; revisão focada no título; alternativas por teclado; controles de ao menos 44px e regras para 360px. Preferência de movimento reduzido respeitada nas animações CSS.

Oito pares principais de texto/fundo foram testados matematicamente e atingem contraste ≥4,5:1. Isso não equivale a uma auditoria completa WCAG nem a teste com leitor de tela. A sincronização fina das legendas precisa de conferência humana com reprodução do vídeo.

## Arquivos

| Arquivo | Mudança |
|---|---|
| `enrichment.mjs` | Diálogos, roteiro, trio e checklist do Módulo 1; ajustes de WhatsApp, tour e retenção. |
| `lib/program/module1-bank.mjs` | Novo banco específico de dez questões do Módulo 1. |
| `lib/program/content.mjs` | Uso do banco rev2, mantendo IDs de módulos. |
| `lib/program/calendar.mjs` | Nova versão de aviso; calendário e regras de data inalterados. |
| `lib/program/experience.mjs` | Cálculo de lembretes, comparação do ponto inicial e versão/completude da privacidade. |
| `lib/program/service.mjs` | Revisão obrigatória no servidor, token/snapshot de respostas, configurações do proprietário e diagnóstico inicial preservado. |
| `db/schema.ts` | Campos aditivos para proprietário e dados do aviso. |
| `drizzle/0003_misty_bloodstrike.sql` e metadados | Migração sem remoção de tabelas ou históricos. |
| `app/api/[action]/route.ts` | Perguntas próprias do ponto de partida, preservação da primeira medição e resumo de lembretes. |
| `public/app.js` | Revisão de envio, configurações, comparações e lembretes/copiar. |
| `public/program-messages.mjs` | Mensagens de convite/lembrete e formatação de data compartilhadas com testes. |
| `public/style.css` | Foco, controles de toque, contenção mobile e aparência da revisão/legendas. |
| `public/media/atendimento.vtt` | Legendas menores, com início/fim da narração preservados. |
| `public/review.html` | Novo diálogo e explicação de revisão, ponto de partida, lembretes e acessibilidade. |
| `tests/program60.test.mjs` | Fluxo dos testes atualizado para revisão obrigatória e testes adicionais de privacidade, baseline e proteção de envio. |
| `tests/experience.test.mjs` | Testes de diálogo, banco, lembretes/mensagens, contraste e presença dos recursos de acesso. |
| `PENDENCIAS_IMPLANTACAO.md` / `public/pendencias-implantacao.md` | Relatório, limitações e roteiro abaixo. |

## Validação e o que ficou pendente

25 testes automatizados passaram. TypeScript e build são verificações de empacotamento. Testes cobrem regras do calendário anteriores, banco/sorteio, isolamento, nota mínima, certificados, envio único, revisão obrigatória, ausência de resposta, invalidação de token ao voltar, proprietário da privacidade, nova ciência e preservação do ponto inicial. Não houve alteração nos critérios do calendário para fazer testes passarem.

A validação visual autenticada não pôde ser concluída: o serviço de prévia encerrou informando outro servidor Vinext ativo em `/site`, sem tornar saudável a prévia deste checkout. Não foi encerrado processo alheio nem contornado o serviço. Logo, navegação real com teclado, sincronização final de áudio/legenda, cópia no dispositivo e layout de 360px ainda precisam do teste operacional abaixo.

Não foram adicionados serviços externos, notificações, geração de cursos por IA sem credenciais ou exclusões automáticas. O formulário de privacidade deve ser preenchido pelo proprietário com dados reais e prazo validado. Nenhum dado cadastral foi inventado.

## Roteiro de aceite manual — gestor e colaborador

Use contas de teste vinculadas à mesma academia, sem dados reais de clientes. Respeite o calendário: a prova do Módulo 1 abre no dia 5; os testes automatizados já simulam essas datas, mas a produção não ganhou atalhos para antecipá-las.

1. Gestor: cadastre nome e e-mail do colaborador; clique Copiar convite, cole em um editor e confirme nome, link e instrução de usar o mesmo e-mail.
2. Proprietário: preencha razão social, CNPJ, prazo e contato do aviso. Confirme o alerta até preencher, salve e confira nova versão de ciência.
3. Colaborador: entre com o e-mail registrado, leia o aviso completo e registre a ciência. Abra Ponto de partida e confirme que o calendário não muda depois de responder.
4. Leia o Módulo 1, confira as oito falas, faça o exercício em trio e, quando a prova estiver liberada (dia 5), inicie a tentativa.
5. Use Tab e Espaço para marcar alternativas. Deixe uma em branco, avance para revisão e confira o destaque e o bloqueio de Enviar respostas.
6. Volte e complete a questão. Confira todas as alternativas na revisão. Envie errando de propósito; confirme que a tentativa não aceita novo envio, mesmo após atualizar a página.
7. Conclua o reforço e abra nova tentativa. Confira novo conjunto de questões; tentativas antigas continuam no histórico.
8. Gestor: confira dia do programa, notas, módulos com erros, ponto de partida/final e Atenção esta semana. Copie lembrete e confira nome, etapa, data e link.
9. Gestor: preencha o checklist de observação real, pause e retome o programa; confirme calendário congelado e datas ajustadas.
10. Repita o aviso e as provas no celular ou viewport de 360px: sem corte lateral, controles confortáveis, foco visível com teclado externo.
11. Vídeo: ative som e legendas, confira a transcrição e a correspondência da narração com cada trecho; teste tela cheia.
12. Conta de gestor convidado: confirme acesso aos resultados da própria academia, mas ausência de permissão para mudar o aviso de privacidade. Conta de outra academia: confirme ausência dos resultados da equipe original.
