# Plano de Testes - Sistema de Banco de Horas

## Objetivo
Validar todas as funcionalidades do sistema de banco de horas, incluindo:
- Registros de ponto
- Atestados médicos
- Licenças (maternidade, paternidade)
- Ausências aprovadas
- Ajustes manuais (abonar, descontar, compensar)
- Detecção de inconsistências
- Alertas configuráveis
- Relatórios (PDF e Excel)

## Usuário de Teste
- Email: dfw@poli.br
- Senha: Admin@2025
- Perfil: Funcionário e Gestor (pode aprovar suas próprias solicitações)

## Cenários de Teste

### 1. Teste de Registros de Ponto Básicos
**Objetivo:** Verificar se o sistema calcula corretamente o banco de horas com registros normais

**Passos:**
1. Fazer login com dfw@poli.br
2. Navegar para "Meu Perfil" > "Meu Ponto"
3. Registrar ponto para 5 dias consecutivos com horários normais:
   - Dia 1: Entrada 08:00, Saída Almoço 12:00, Retorno 13:00, Saída 17:00 (8h trabalhadas)
   - Dia 2: Entrada 08:00, Saída Almoço 12:00, Retorno 13:00, Saída 17:00 (8h trabalhadas)
   - Dia 3: Entrada 08:00, Saída Almoço 12:00, Retorno 13:00, Saída 17:00 (8h trabalhadas)
   - Dia 4: Entrada 08:00, Saída Almoço 12:00, Retorno 13:00, Saída 17:00 (8h trabalhadas)
   - Dia 5: Entrada 08:00, Saída Almoço 12:00, Retorno 13:00, Saída 17:00 (8h trabalhadas)
4. Verificar em "Meu Banco de Horas" se o saldo está correto (deve ser 0 ou próximo de 0)

**Resultado Esperado:** Saldo diário e mensal calculado corretamente

---

### 2. Teste de Horas Extras
**Objetivo:** Verificar cálculo de horas extras

**Passos:**
1. Registrar ponto com horas extras:
   - Entrada 08:00, Saída Almoço 12:00, Retorno 13:00, Saída 19:00 (9h trabalhadas = +1h extra)
2. Verificar em "Meu Banco de Horas" se o saldo positivo foi registrado

**Resultado Esperado:** Saldo positivo de 1 hora registrado

---

### 3. Teste de Horas Negativas (Atraso/Saída Antecipada)
**Objetivo:** Verificar cálculo de horas negativas

**Passos:**
1. Registrar ponto com atraso:
   - Entrada 09:00, Saída Almoço 12:00, Retorno 13:00, Saída 17:00 (7h trabalhadas = -1h)
2. Verificar em "Meu Banco de Horas" se o saldo negativo foi registrado

**Resultado Esperado:** Saldo negativo de 1 hora registrado

---

### 4. Teste de Atestado Médico
**Objetivo:** Verificar se atestado médico é considerado no banco de horas

**Passos:**
1. Navegar para "Meu Perfil" > "Minha Ausência" ou área de atestados
2. Criar um atestado médico para 2 dias consecutivos
3. Verificar se o banco de horas foi recalculado automaticamente
4. Verificar em "Meu Banco de Horas" se os dias de atestado aparecem com tipo "atestado"
5. Verificar se o saldo não foi descontado para esses dias

**Resultado Esperado:** 
- Dias de atestado marcados como tipo "atestado"
- Saldo não descontado
- Motivo do abono registrado

---

### 5. Teste de Declaração de Comparecimento
**Objetivo:** Verificar se declaração de comparecimento é considerada

**Passos:**
1. Criar uma declaração de comparecimento para 1 dia
2. Verificar se o banco de horas foi recalculado
3. Verificar se o dia aparece com tipo apropriado

**Resultado Esperado:** Dia marcado corretamente e saldo não descontado

---

### 6. Teste de Licença de Maternidade
**Objetivo:** Verificar se licença de maternidade é considerada

**Passos:**
1. Criar uma licença de maternidade para 5 dias
2. Verificar se o banco de horas foi recalculado
3. Verificar se os dias aparecem com tipo "licenca"

**Resultado Esperado:** Dias marcados como tipo "licenca" e saldo não descontado

---

### 7. Teste de Licença de Paternidade
**Objetivo:** Verificar se licença de paternidade é considerada

**Passos:**
1. Criar uma licença de paternidade para 3 dias
2. Verificar se o banco de horas foi recalculado
3. Verificar se os dias aparecem com tipo "licenca"

**Resultado Esperado:** Dias marcados como tipo "licenca" e saldo não descontado

---

### 8. Teste de Ausência Aprovada
**Objetivo:** Verificar se ausência aprovada é considerada

**Passos:**
1. Navegar para "Meu Perfil" > "Minha Ausência"
2. Solicitar uma ausência para 2 dias
3. Navegar para "Aprovar Ausência" (como gestor)
4. Aprovar a ausência
5. Verificar se o banco de horas foi recalculado
6. Verificar se os dias aparecem com tipo "ausencia"

**Resultado Esperado:** Dias marcados como tipo "ausencia" e saldo não descontado

---

### 9. Teste de Ajuste Manual - Abonar
**Objetivo:** Verificar se ajuste manual de abono funciona

**Passos:**
1. Navegar para área de ajustes de banco de horas (RH ou gestor)
2. Criar um ajuste para abonar 4 horas de um dia específico
3. Verificar se o banco de horas foi recalculado
4. Verificar se o dia aparece com tipo "abonado"
5. Verificar se o saldo foi ajustado corretamente

**Resultado Esperado:** Dia marcado como "abonado" e saldo ajustado com +4 horas

---

### 10. Teste de Ajuste Manual - Descontar
**Objetivo:** Verificar se ajuste manual de desconto funciona

**Passos:**
1. Criar um ajuste para descontar 2 horas de um dia específico
2. Verificar se o banco de horas foi recalculado
3. Verificar se o dia aparece com tipo "descontado"
4. Verificar se o saldo foi ajustado corretamente

**Resultado Esperado:** Dia marcado como "descontado" e saldo ajustado com -2 horas

---

### 11. Teste de Ajuste Manual - Compensar
**Objetivo:** Verificar se ajuste manual de compensação funciona

**Passos:**
1. Criar um ajuste para compensar horas (transferir horas extras para compensar déficit)
2. Verificar se o banco de horas foi recalculado
3. Verificar se o saldo foi ajustado corretamente

**Resultado Esperado:** Saldo ajustado conforme a compensação

---

### 12. Teste de Detecção de Inconsistências - Ponto com Atestado
**Objetivo:** Verificar se o sistema detecta inconsistências

**Passos:**
1. Criar um atestado médico para um dia
2. Registrar ponto para esse mesmo dia (inconsistência)
3. Verificar se uma inconsistência foi detectada e registrada
4. Verificar se aparece na lista de inconsistências

**Resultado Esperado:** Inconsistência detectada e registrada

---

### 13. Teste de Detecção de Inconsistências - Ponto com Licença
**Objetivo:** Verificar detecção de ponto durante licença

**Passos:**
1. Criar uma licença para um dia
2. Registrar ponto para esse mesmo dia
3. Verificar se inconsistência foi detectada

**Resultado Esperado:** Inconsistência detectada

---

### 14. Teste de Detecção de Inconsistências - Ponto com Ausência
**Objetivo:** Verificar detecção de ponto durante ausência aprovada

**Passos:**
1. Aprovar uma ausência para um dia
2. Registrar ponto para esse mesmo dia
3. Verificar se inconsistência foi detectada

**Resultado Esperado:** Inconsistência detectada

---

### 15. Teste de Saldo Negativo Excedido
**Objetivo:** Verificar se alerta é disparado quando saldo negativo excede limite

**Passos:**
1. Configurar limite de saldo negativo em "Painel de TI" > "Configurações do Banco de Horas"
2. Criar vários registros que resultem em saldo negativo acima do limite
3. Verificar se alerta foi disparado

**Resultado Esperado:** Alerta disparado quando limite é excedido

---

### 16. Teste de Configuração de Alertas
**Objetivo:** Verificar se configurações de alertas funcionam

**Passos:**
1. Navegar para "Painel de TI" > "Configurações do Banco de Horas"
2. Configurar alertas:
   - Ativar alertas
   - Configurar periodicidade (diário, semanal, mensal)
   - Configurar canais (email, chat)
   - Configurar thresholds
3. Salvar configurações
4. Verificar se configurações foram salvas

**Resultado Esperado:** Configurações salvas e aplicadas

---

### 17. Teste de Relatório PDF
**Objetivo:** Verificar geração de relatório PDF

**Passos:**
1. Navegar para "Meu Banco de Horas"
2. Clicar em "Exportar PDF"
3. Verificar se PDF foi gerado com:
   - Resumo mensal
   - Detalhamento diário
   - Ajustes
   - Inconsistências
   - Gráficos

**Resultado Esperado:** PDF gerado com todas as informações

---

### 18. Teste de Relatório Excel
**Objetivo:** Verificar geração de relatório Excel

**Passos:**
1. Navegar para "Meu Banco de Horas"
2. Clicar em "Exportar Excel"
3. Verificar se Excel foi gerado com:
   - Planilhas detalhadas
   - Resumos
   - Formatação condicional

**Resultado Esperado:** Excel gerado com todas as informações

---

### 19. Teste de Visualização Gerencial (RH)
**Objetivo:** Verificar wizard de banco de horas no RH

**Passos:**
1. Navegar para "Recursos Humanos" > "Controle de Ponto" > "Banco de Horas"
2. Verificar se é possível:
   - Filtrar por funcionário
   - Filtrar por período
   - Ver todos os funcionários
   - Ver ajustes e inconsistências
   - Fazer ajustes manuais

**Resultado Esperado:** Wizard funcional com todos os filtros e ações

---

### 20. Teste de Histórico e Acumulação Mensal
**Objetivo:** Verificar se histórico mensal é mantido corretamente

**Passos:**
1. Verificar em "Meu Banco de Horas" se:
   - Saldo inicial do mês está correto
   - Saldo final do mês está correto
   - Saldo acumulado está correto
   - Histórico de meses anteriores está disponível

**Resultado Esperado:** Histórico completo e correto

---

## Checklist de Validação

Após cada teste, verificar:
- [ ] Cálculo de saldo está correto
- [ ] Tipo de dia está correto (normal, atestado, licenca, ausencia, abonado, descontado)
- [ ] Motivo do abono está registrado
- [ ] Ajustes estão vinculados corretamente
- [ ] Inconsistências estão sendo detectadas
- [ ] Alertas estão sendo disparados quando configurados
- [ ] Relatórios estão sendo gerados corretamente
- [ ] Interface está mostrando todas as informações
- [ ] Não há erros no console do navegador
- [ ] Não há erros no backend (logs do Convex)

---

## Notas
- Todos os testes devem ser executados sequencialmente
- Se algum teste falhar, corrigir o erro e repetir o teste
- Documentar qualquer comportamento inesperado
- Verificar logs do Convex para erros no backend

