Histórico do Processo Seletivo do Candidato
Visão Geral
O sistema oferece funcionalidade completa de rastreamento e visualização do histórico de participação de candidatos em processos seletivos. Esta feature permite que candidatos, empresas e órgãos públicos acompanhem toda a jornada do candidato desde a submissão até a conclusão do processo.
Objetivos
- Transparência total no processo seletivo
- Acompanhamento de status em tempo real
- Histórico completo de todas as etapas
- Auditoria de mudanças de status
- Facilitar comunicação entre candidato e empresa
- Análise de performance do candidato
Arquitetura do Sistema
Estrutura de Dados
Processo Seletivo
interface SelectiveProcess {
id: number;
title: string;
company: Company;
description: string;
status: 'open' | 'in_progress' | 'closed';
created_at: string;
stages: Stage[];
}
Etapas do Processo
interface Stage {
id: number;
name: string;
type: 'screening' | 'interview' | 'technical_test' | 'final';
order: number;
description?: string;
status: 'pending' | 'in_progress' | 'completed';
}
Participação do Candidato
interface CandidateStageStatus {
id: number;
candidate: Candidate;
stage: Stage;
status: 'pending' | 'approved' | 'rejected' | 'in_analysis';
score?: number;
feedback?: string;
evaluated_at?: string;
evaluator?: User;
}
Visualização do Histórico
Modal de Histórico
O histórico é exibido em um modal organizado por etapas usando accordions:
┌─────────────────────────────────────────────┐
│ Histórico do Processo Seletivo │
│ │
│ 📋 Desenvolvedor Full Stack - Tech Corp │
│ Status: Em Andamento │
│ │
│ ▼ 1. Submissão de Currículo │
│ ├─ Status: Aprovado ✓ │
│ ├─ Data: 15/01/2024 10:30 │
│ ├─ Avaliador: João Silva │
│ └─ Feedback: Perfil adequado... │
│ │
│ ▼ 2. Triagem Inicial │
│ ├─ Status: Aprovado ✓ │
│ ├─ Data: 18/01/2024 14:20 │
│ ├─ Score: 85/100 │
│ └─ Avaliador: Maria Santos │
│ │
│ ▶ 3. Entrevista Técnica │
│ └─ Status: Em Análise ⏳ │
│ │
│ ▶ 4. Entrevista Final │
│ └─ Status: Pendente │
└─────────────────────────────────────────────┘
Componentes do Accordion
Cada accordion de etapa contém:
-
Cabeçalho
- Número e nome da etapa
- Ícone de status
- Badge de status colorida
-
Conteúdo Expandido
- Status detalhado
- Data de avaliação
- Nome do avaliador
- Pontuação (se aplicável)
- Feedback do avaliador
- Teste técnico (se aplicável)
- Observações adicionais
Estados Visuais
Status com Cores:
| Status | Cor | Ícone | Descrição |
|---|---|---|---|
| Pendente | Cinza (#9E9E9E) | ⏸️ | Aguardando avaliação |
| Em Análise | Amarelo (#FFC107) | ⏳ | Sendo avaliado |
| Aprovado | Verde (#4CAF50) | ✓ | Passou para próxima etapa |
| Reprovado | Vermelho (#F44336) | ✗ | Não passou nesta etapa |
API de Histórico
Buscar Histórico Completo
GET /api/candidates/{candidate_id}/process-history/{process_id}/
Retorna histórico completo de participação do candidato em um processo específico.
Response:
{
"process": {
"id": 123,
"title": "Desenvolvedor Full Stack",
"company": {
"id": 45,
"name": "Tech Corp"
},
"status": "in_progress",
"created_at": "2024-01-10T09:00:00Z"
},
"submission": {
"id": 789,
"submitted_at": "2024-01-15T10:30:00Z",
"status": "in_progress",
"ai_score": 87.5
},
"stages": [
{
"id": 1,
"name": "Submissão de Currículo",
"type": "screening",
"order": 1,
"candidate_status": {
"status": "approved",
"score": 90,
"feedback": "Perfil muito adequado à vaga",
"evaluated_at": "2024-01-15T14:00:00Z",
"evaluator": {
"name": "João Silva"
}
}
},
{
"id": 2,
"name": "Triagem Inicial",
"type": "interview",
"order": 2,
"candidate_status": {
"status": "approved",
"score": 85,
"feedback": "Demonstrou bom conhecimento técnico",
"evaluated_at": "2024-01-18T14:20:00Z",
"evaluator": {
"name": "Maria Santos"
}
}
},
{
"id": 3,
"name": "Entrevista Técnica",
"type": "technical_test",
"order": 3,
"candidate_status": {
"status": "in_analysis",
"evaluated_at": null
}
}
]
}
Buscar Todos os Processos do Candidato
GET /api/candidates/me/processes/
Lista todos os processos seletivos em que o candidato participou.
Response:
{
"count": 15,
"results": [
{
"id": 123,
"title": "Desenvolvedor Full Stack",
"company": "Tech Corp",
"status": "in_progress",
"submitted_at": "2024-01-15T10:30:00Z",
"current_stage": "Entrevista Técnica",
"overall_status": "in_analysis"
},
{
"id": 98,
"title": "Analista de Sistemas",
"company": "Soft Inc",
"status": "closed",
"submitted_at": "2023-12-10T08:00:00Z",
"current_stage": "Entrevista Final",
"overall_status": "rejected"
}
]
}
Etapas do Processo
Tipos de Etapas
O sistema suporta diferentes tipos de etapas:
-
Submissão de Currículo (screening)
- Primeira etapa automática
- Análise de aderência do perfil
- Score de IA aplicado
- Triagem inicial pela empresa
-
Triagem (screening)
- Análise detalhada do currículo
- Verificação de requisitos obrigatórios
- Pontuação manual ou automática
-
Entrevista (interview)
- Entrevista presencial ou remota
- Avaliação de soft skills
- Feedback qualitativo
- Agendamento de horário
-
Teste Técnico (technical_test)
- Avaliação de habilidades técnicas
- Código ou exercícios práticos
- Pontuação objetiva
- Tempo limite
-
Entrevista Final (final)
- Última etapa antes da contratação
- Negociação de condições
- Aprovação final
Fluxo de Etapas
Detalhes por Etapa
Submissão de Currículo
Informações Exibidas:
- Data/hora da submissão
- Score de compatibilidade (IA)
- Status inicial (automaticamente "aprovado" para próxima etapa)
- Link para currículo completo
Exemplo:
📄 Submissão de Currículo
├─ Submetido em: 15/01/2024 às 10:30
├─ Score de Compatibilidade: 87.5/100
├─ Status: Aprovado para Triagem ✓
└─ Currículo enviado com sucesso
Triagem Inicial
Informações Exibidas:
- Status da análise
- Nome do avaliador
- Data/hora da avaliação
- Pontuação atribuída
- Feedback do avaliador
- Checklist de requisitos
Exemplo:
🔍 Triagem Inicial
├─ Status: Aprovado ✓
├─ Avaliador: João Silva (Recrutador)
├─ Avaliado em: 18/01/2024 às 14:20
├─ Pontuação: 85/100
├─ Feedback: "Candidato possui experiência relevante
│ em React e TypeScript. Formação adequada."
└─ Requisitos Atendidos: 9/10
Entrevista Técnica
Informações Exibidas:
- Data/hora da entrevista
- Entrevistador(es)
- Tipo de entrevista (presencial/remota)
- Link da sala (se remota)
- Pontuação por competência
- Feedback detalhado
- Teste técnico (se aplicável)
Exemplo:
💻 Entrevista Técnica
├─ Data: 22/01/2024 às 15:00
├─ Entrevistador: Maria Santos (Tech Lead)
├─ Tipo: Remota (Google Meet)
├─ Duração: 1h 30min
├─ Competências Avaliadas:
│ ├─ JavaScript/TypeScript: 9/10
│ ├─ React: 8/10
│ ├─ Resolução de Problemas: 9/10
│ └─ Comunicação: 8/10
├─ Teste Técnico:
│ ├─ Nome: "Implementar CRUD com React"
│ ├─ Pontuação: 90/100
│ └─ Tempo: 2h (limite 3h)
└─ Feedback: "Excelente desempenho no teste..."
Entrevista Final
Informações Exibidas:
- Data/hora da entrevista
- Entrevistadores (gerente, RH)
- Status de aprovação
- Proposta salarial (se aplicável)
- Próximos passos
- Feedback final
Exemplo:
🎯 Entrevista Final
├─ Data: 25/01/2024 às 10:00
├─ Participantes:
│ ├─ Carlos Oliveira (Gerente)
│ └─ Ana Paula (RH)
├─ Status: Aprovado ✓
├─ Proposta: R$ 8.000,00 (CLT)
├─ Benefícios: VR, VT, Plano Saúde
└─ Início: 01/02/2024
Notificações e Atualizações
Eventos que Geram Notificação
- Candidato avança para próxima etapa
- Candidato é reprovado em alguma etapa
- Nova avaliação/feedback disponível
- Entrevista agendada
- Mudança de status do processo
- Processo finalizado
Formato de Notificação
interface ProcessNotification {
type: 'process_update';
title: string;
message: string;
process_id: number;
stage_id?: number;
action_url: string;
created_at: string;
}
Exemplo:
{
"type": "process_update",
"title": "Você passou para próxima etapa!",
"message": "Parabéns! Você foi aprovado na Triagem Inicial do processo Desenvolvedor Full Stack - Tech Corp",
"process_id": 123,
"stage_id": 2,
"action_url": "/candidate/processes/123/history",
"created_at": "2024-01-18T14:30:00Z"
}
Interface do Usuário
Botão de Acesso ao Histórico
O histórico é acessado através de um botão no perfil do candidato:
<Button
variant="outlined"
startIcon={<HistoryIcon />}
onClick={openHistoryModal}
>
Ver Histórico
</Button>
Localização:
- Página de perfil do candidato (empresa visualizando)
- Dashboard do candidato
- Lista de candidaturas do candidato
Accordion de Etapas
Cada etapa é representada por um accordion expansível:
<Accordion>
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
<Box display="flex" alignItems="center" gap={2}>
<Typography variant="h6">
{stage.order}. {stage.name}
</Typography>
<Chip
label={status}
color={getStatusColor(status)}
size="small"
/>
</Box>
</AccordionSummary>
<AccordionDetails>
{/* Detalhes da etapa */}
</AccordionDetails>
</Accordion>
Estados de Loading
Durante carregamento de dados:
<Box display="flex" justifyContent="center" p={4}>
<CircularProgress />
<Typography ml={2}>Carregando histórico...</Typography>
</Box>
Estado Vazio
Quando não há histórico:
<Box textAlign="center" p={4}>
<HistoryIcon fontSize="large" color="disabled" />
<Typography variant="h6" color="textSecondary">
Nenhum histórico disponível
</Typography>
</Box>
Permissões de Acesso
Candidato
- ✅ Visualizar histórico de seus próprios processos
- ✅ Ver status e feedback de cada etapa
- ✅ Receber notificações de atualizações
- ❌ Não pode editar informações
Empresa
- ✅ Visualizar histórico de candidatos em seus processos
- ✅ Adicionar feedback e avaliações
- ✅ Atualizar status de etapas
- ✅ Ver histórico completo de interações
Órgão Público
- ✅ Visualizar histórico de todos os candidatos (relatórios)
- ✅ Análise agregada de processos
- ✅ Métricas de tempo por etapa
- ❌ Não pode alterar dados
Métricas e Análises
Métricas por Candidato
interface CandidateMetrics {
total_processes: number;
active_processes: number;
completed_processes: number;
success_rate: number;
avg_time_per_stage: number;
most_common_rejection_stage: string;
}
Métricas por Processo
interface ProcessMetrics {
total_candidates: number;
candidates_per_stage: Record<string, number>;
avg_time_per_stage: Record<string, number>;
approval_rate_per_stage: Record<string, number>;
completion_rate: number;
}
Auditoria e Logs
Logs de Mudança de Status
Toda mudança de status é registrada:
ProcessHistoryLog.objects.create(
candidate=candidate,
process=process,
stage=stage,
previous_status='pending',
new_status='approved',
changed_by=evaluator,
changed_at=timezone.now(),
notes='Candidato aprovado na triagem'
)
Rastreamento de Ações
interface AuditLog {
id: number;
action: 'status_change' | 'feedback_added' | 'score_updated';
user: User;
timestamp: string;
details: Record<string, any>;
}
Boas Práticas
Para Empresas
- Feedback Construtivo: Sempre fornecer feedback útil aos candidatos
- Atualização Regular: Manter status atualizado em tempo hábil
- Transparência: Comunicar claramente critérios de avaliação
- Respeito ao Tempo: Avisar candidatos sobre prazos
Para Candidatos
- Acompanhamento Ativo: Verificar regularmente o histórico
- Preparação: Usar feedback de processos anteriores
- Profissionalismo: Manter comunicação cordial
- Aprendizado: Analisar pontos de melhoria
Roadmap
Funcionalidades Futuras
- ✅ Visualização de histórico completo por etapa
- ✅ Accordions organizados por etapa
- ✅ Exibição de feedback e pontuação
- 🔜 Timeline visual do processo
- 🔜 Comparação com outros candidatos
- 🔜 Exportação de histórico em PDF
- 🔜 Estatísticas pessoais de desempenho
- 🔜 Integração com calendário para entrevistas
- 🔜 Chat integrado empresa-candidato