Pular para o conteúdo principal

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

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:

  1. Cabeçalho

    • Número e nome da etapa
    • Ícone de status
    • Badge de status colorida
  2. 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:

StatusCorÍconeDescrição
PendenteCinza (#9E9E9E)⏸️Aguardando avaliação
Em AnáliseAmarelo (#FFC107)Sendo avaliado
AprovadoVerde (#4CAF50)Passou para próxima etapa
ReprovadoVermelho (#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:

  1. 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
  2. Triagem (screening)

    • Análise detalhada do currículo
    • Verificação de requisitos obrigatórios
    • Pontuação manual ou automática
  3. Entrevista (interview)

    • Entrevista presencial ou remota
    • Avaliação de soft skills
    • Feedback qualitativo
    • Agendamento de horário
  4. Teste Técnico (technical_test)

    • Avaliação de habilidades técnicas
    • Código ou exercícios práticos
    • Pontuação objetiva
    • Tempo limite
  5. 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

  1. Feedback Construtivo: Sempre fornecer feedback útil aos candidatos
  2. Atualização Regular: Manter status atualizado em tempo hábil
  3. Transparência: Comunicar claramente critérios de avaliação
  4. Respeito ao Tempo: Avisar candidatos sobre prazos

Para Candidatos

  1. Acompanhamento Ativo: Verificar regularmente o histórico
  2. Preparação: Usar feedback de processos anteriores
  3. Profissionalismo: Manter comunicação cordial
  4. 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

Referências