Skip to content

fix: contabilizar múltiplas entrevistas por candidatura sem duplicar registros #99

Closed

Description

@hugoalves-dev

Problema

O Applywell não contabiliza corretamente múltiplas entrevistas de uma mesma candidatura.

Caso real: a candidatura da Paytrack teve uma entrevista inicial em 17/06/2026 (registrada/agendada) e uma entrevista técnica realizada em 02/07/2026. O registro continua com interviewCount = 1, embora o histórico contenha as duas etapas.

Comportamento observado na integração MCP:

  • Get_Application retorna interviewCount: 1.
  • Apply_Gamification_Event com INTERVIEW_PROGRESS para a segunda etapa retorna "Evento já contabilizado para esta candidatura." e xpGained: 0.
  • Patch_Application não expõe interviewCount nem um endpoint/campo para registrar uma etapa de entrevista.
  • Registrar outra candidatura para contar a segunda entrevista produziria registros fantasma/duplicados, portanto não é uma solução válida.

Comportamento esperado

Uma candidatura deve comportar zero, uma ou várias entrevistas. O número precisa refletir as etapas realmente realizadas, não apenas a presença da flag interviewScheduled ou a primeira emissão do evento de gamificação.

Proposta de implementação

  1. MVP: disponibilizar na API e nas tools MCP uma operação para registrar/consultar entrevistas por candidatura (data/hora, etapa, status e identificador próprio). Permitir múltiplas etapas sem criar outra candidatura.
  2. Tornar a operação idempotente por entrevista (ID da etapa/evento), não apenas por ID da candidatura; impedir que reenvios da mesma entrevista aumentem a contagem ou concedam XP duas vezes.
  3. Calcular/exibir interviewCount com base nas entrevistas com status realizada; as agendadas, canceladas, não realizadas e testes técnicos assíncronos não devem entrar na contagem de entrevistas realizadas.
  4. Ajustar analytics, as respostas do MCP e, quando pertinente, a interface React para apresentar contagem por candidatura e total de entrevistas.
  5. Preservar histórico e compatibilidade dos registros já existentes. Definir migração/concilição sem somar automaticamente anotações livres nem duplicar etapas existentes.

Observação: manter a contabilização de XP separada dos dados de negócio. O comando de gamificação não deve ser a única maneira de registrar uma entrevista.

Critérios de aceite

  • Uma candidatura com 2 entrevistas realizadas retorna interviewCount = 2, com apenas 1 candidatura.
  • Reenviar a mesma entrevista não altera o contador nem duplica XP.
  • Registrar uma segunda etapa distinta funciona mesmo quando a primeira já gerou INTERVIEW_PROGRESS.
  • Etapas somente agendadas ou canceladas não aumentam o total de realizadas.
  • Testes de seleção assíncronos não são classificados como entrevistas.
  • API/MCP permitem registrar e consultar as etapas; analytics retorna valores consistentes.
  • Testes automatizados cobrem múltiplas etapas, idempotência, estados e dados legados.

Dados de validação (sem expor informações privadas)

  • CoteFácil: 2 entrevistas indicadas no cadastro.
  • Paytrack: 2 etapas no histórico, mas interviewCount = 1.
  • Accenture: 1 entrevista realizada.

A contagem correta para essas candidaturas, após confirmação de todas as etapas, deve refletir 5 entrevistas em 3 candidaturas, não 5 candidaturas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions