SGEProduto · Domínio · Desenvolvimento
Repositório

enum-reference · implemented

Enum — InternshipRequestStatus

Ciclo de preenchimento, envio e análise da solicitação nativa de estágio.

Contrato

CaseValor persistidoRótuloEfeito
DraftdraftRascunhoO discente pode preencher e salvar, sem enviar ao Setor.
SubmittedsubmittedEnviadaEnvio novo ou correção respondida; aguarda o início da análise formal.
UnderReviewunder_reviewEm análiseO Setor de Estágio está analisando.
PendingCorrectionpending_correctionCom pendênciaHá uma correção aberta com seções liberadas ao discente.
AcceptedacceptedAceitaO Setor aprovou os dados atuais. Cria o estágio na primeira vez ou atualiza o estágio já vinculado.
RejectedrejectedRecusadaO processo foi encerrado pelo Setor antes da formalização.
WithdrawnwithdrawnDesistidaO discente desistiu antes de existir um estágio.

Transições

Diagram Design · Mermaid · arraste para mover · Ctrl/⌘ + scroll para zoom

100%Abrir inteiro ↗

Renderizando diagrama declarativo…

Legenda
  • Estado
  • Transição
  • Terminal
Leitura semântica

A solicitação vai de Draft para Submitted e UnderReview; a análise pode devolvê-la para correção, aceitá-la, recusá-la ou permitir sua retirada antes do encerramento.

Fonte declarativa: diagrams/sources/enum-request-status.mmd

Accepted não é final: uma correção posterior à criação do estágio pode levar a solicitação novamente a PendingCorrection, depois a Submitted e UnderReview. A nova aprovação mantém a mesma solicitação e o mesmo internship_id.

Integração com o estágio já criado

Quando internship_id já existir, a solicitação continua sendo a fonte editável somente durante uma correção aberta. O estágio mantém seus dados e snapshots aprovados enquanto o discente corrige o formulário. Ao aprovar o reenvio, o Setor aplica ao estágio apenas as seções autorizadas, recalcula os valores derivados — como data prevista de término —, preserva o histórico e reemite os documentos necessários. Não são criadas outra solicitação nem uma versão completa de resposta; o activity_log registra as alterações.

Depois de released_at, mudanças contratuais devem seguir o fluxo próprio de alteração/aditivo, e não reabrir o formulário de abertura.

Preenchimento incremental e retenção

Draft é salvo incrementalmente pelo Livewire e pode manter campos nulos, exceto os identificadores técnicos do proprietário e o próprio status. Ao enviar ou seguir para análise, todos os campos obrigatórios e condicionais do caso escolhido devem estar válidos; campos de opções não selecionadas permanecem nulos. Em PendingCorrection, somente as seções autorizadas ficam editáveis, mas continuam obedecendo às mesmas validações.

O discente consulta uma lista das próprias solicitações, com status e última atualização, sem acesso ao activity_log. Não há exclusão física: Withdrawn preserva a solicitação desistida e sua auditoria. Para permitir a retenção de um rascunho abandonado, o cancelamento pode preservar campos incompletos que existiam no momento da desistência.

Checklist de implementação

  • Criar enum string, rótulos, options() e values().
  • Adicionar cast em InternshipRequest.
  • Usar o valor inicial do enum na migration de internship_requests.
  • Implementar guardas de transição e Policies do discente e do Setor.
  • Testar cases, valores, rótulos e opções.
  • Testar primeiro envio, pendência, reenvio, aceite inicial, reaprovação e desistência no fluxo de domínio.

Referências