Preservar a oportunidade durante o registo e preparacao do perfil
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# Desenvolvimento do SGC
|
||||
|
||||
## Escolha preservada no registo e preparação do perfil, 30 de Outubro de 2026
|
||||
|
||||
A escolha pública segue agora tanto para a entrada como para o registo. Uma nova conta conserva uma referência à oportunidade na sessão, associada à identidade e empresa; não copia regras ou dados internos para essa referência. O perfil permite retomar o formulário depois de preparar os dados e confirmar o email, sem submissão automática. A criação da conta mantém o destino de preparação do perfil. Cada consulta reconfirma publicação, prazo e empresa; uma oportunidade retirada deixa de aparecer e produz informação genérica de indisponibilidade. Sessões com outra identidade/empresa ou referência incompleta não conservam o atalho. Sair ou concluir explicitamente a submissão remove a escolha. A confirmação de email e as restantes validações da candidatura são mantidas.
|
||||
|
||||
Validação final SQLite: 28 testes/457 asserções. PostgreSQL descartável: 68 testes/1484 asserções, incluindo o percurso registo → perfil → tentativa não confirmada recusada → submissão explícita após confirmação fictícia. Base descartável removida, sem contas, mensagens ou candidaturas reais no domínio. A verificação adicional de referência de sessão incompleta foi exercida em SQLite/análise estática. Compilação concluída com código zero; PHPStan sem erros, tipos, Pint/lint e frontend dirigidos registados na prova `proofs/candidate-registration-selection.json`. Sem novas migrações. Incremento apenas local, posterior a f5f5649; produção continua em bf84575. Conferência visual ainda pendente.
|
||||
|
||||
## Oportunidade escolhida preservada na entrada, 30 de Outubro de 2026
|
||||
|
||||
O botão de entrada de cada oportunidade guarda a escolha no formulário de login e apresenta o título escolhido. Após autenticação válida, o servidor volta a conferir publicação, empresa e prazo e encaminha para o formulário dessa oportunidade. Não aceita URLs de retorno fornecidos pelo cliente. Um identificador inexistente, de outra empresa, retirado ou expirado encaminha para o perfil com mensagem genérica de indisponibilidade. A entrada não envia a candidatura, não modifica o perfil e não dispensa confirmação de email ou requisitos documentais. Criar uma nova conta mantém o percurso de preparação do perfil anteriormente existente.
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"checked_at": "2026-10-30T19:21:10+00:00",
|
||||
"database": "disposable PostgreSQL",
|
||||
"application_role_reused_without_privilege_change": true,
|
||||
"result": "passed",
|
||||
"test_files": [
|
||||
"CandidateSubmissionsTest",
|
||||
"PeopleHiringTest",
|
||||
"CandidatePortalTest",
|
||||
"CandidateDocumentFormatsTest"
|
||||
],
|
||||
"original_evaluation_untouched": true,
|
||||
"database_removed": true,
|
||||
"tests": 68,
|
||||
"assertions": 1484
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"checked_at": "2026-10-30T19:22:25.916372+00:00",
|
||||
"base_commit": "f5f5649",
|
||||
"scope": [
|
||||
"selected public opportunity preserved through new candidate registration and profile preparation",
|
||||
"session choice scoped to company and account",
|
||||
"fresh publication and deadline check on profile reads",
|
||||
"selection removed on logout account mismatch withdrawal and successful submission",
|
||||
"no automatic application or email verification bypass"
|
||||
],
|
||||
"module_sqlite": {
|
||||
"tests": 28,
|
||||
"assertions": 457,
|
||||
"passed": true
|
||||
},
|
||||
"postgresql": {
|
||||
"tests": 68,
|
||||
"assertions": 1484,
|
||||
"passed": true,
|
||||
"disposable_database_removed": true
|
||||
},
|
||||
"frontend": {
|
||||
"tests": 11,
|
||||
"passed": true
|
||||
},
|
||||
"phpstan_errors": 0,
|
||||
"typescript": true,
|
||||
"pint": true,
|
||||
"targeted_lint": true,
|
||||
"build": {
|
||||
"exit_code": 0,
|
||||
"completed": true
|
||||
},
|
||||
"new_migrations": false,
|
||||
"production_installed": false,
|
||||
"visual_review": "pending; connector unavailable",
|
||||
"source_sha256": {
|
||||
"app/Http/Controllers/CandidatePortalController.php": "b54e01ef8f1013925a13c854945f60f8e360a090aa048d5627878c853c10e22d",
|
||||
"resources/js/pages/candidate/entry.tsx": "35429f08b1ce635545284b4804bde3382891f1007ff9bb74536df6a8ccc7f2cb",
|
||||
"resources/js/pages/candidate/profile.tsx": "f0ddeb382185c836fb03652b3ab498ef4a9651175ca4fcb7ff4a659d0f6bcc3a"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user