14 KiB
Execução e lacunas do submódulo Education
Revisão posterior, 26/09/2026: as escolhas técnicas B02 e de preparação interna B03/B06 foram decididas e implementadas conforme decisions.md. RF-EDU-005/010/022/023/024 passam de bloqueados a parciais para preparação de fichas; RF-EDU-015 inclui pesquisa e indicadores de registos. As pendências institucionais e a publicação permanecem bloqueadas. O diagnóstico original abaixo é mantido como histórico da revisão anterior.
Actualizado em 26/09/2026. Estado: implementação interna parcial, em revisão. Não equivale a aprovação institucional, homologação ou produção. Este relatório actualiza o diagnóstico inicial da especificação, sem promover as propostas a requisitos cumpridos.
1. Resultado verificado
O repositório já continha EducationController, LabourDemand, TrainingCapacity, duas páginas React, configuração de activação e a migration 2026_09_26_100000_education_intake.php. A documentação inicial descrevia uma entrega anterior, exclusivamente de concepção. Não se deve interpretar a presença deste código como conclusão do MVP.
Nesta revisão:
- Corrigido o registo do middleware: a função anónima impedia o carregamento das rotas do portal. Reutilizado
EducationEnabled. - Navegação condicionada à configuração
education.enabled; incluídaEDUCATION_ENABLED=falseno exemplo de ambiente. O.envreal não foi alterado. - Preservados os parâmetros de paginação das duas listagens.
- Excluídos cursos retirados/eliminados e instituições inactivas/eliminadas da oferta candidata; impedida a submissão de capacidade para esses cursos.
- Corrigida a regra de existência de instituições na criação de cursos, usando a condição de exclusão suportada pelo validador.
- Testados acesso, estados não oficiais, segregação de funções, conflito de versões, expiração, auditoria e distinção entre vagas e trabalhadores.
As rotas continuam internas, sob /management/education, com sessão, verificação de email e manage-portal. Não implementam os contratos REST/OAuth/OIDC propostos em /api/v1/education nem mandatos institucionais. O cálculo apresentado permanece indeterminado quando falta oferta de trabalhadores comparável; não subtrai vagas de formação da procura laboral.
2. Rastreabilidade da execução
“Parcial” significa código existente com limitações concretas; nenhum RF abaixo foi declarado integralmente cumprido. Os critérios completos mantêm-se em requirements.csv.
| RF-EDU | Estado funcional | Evidência e trabalho por concluir |
|---|---|---|
| 001 | Parcial | Cadastro de código/nome; faltam taxonomia, sinónimos, níveis, fontes e revisão de versões. B01/B06. |
| 002 | Parcial | Procura por projecto, ocupação, competência principal, território e período; faltam múltiplas competências, contexto produtivo completo e mandatos. B01/B03. |
| 003 | Parcial | Instituições, cursos e capacidade declarada; faltam cobertura, documentação e vínculo institucional verificado. B01/B03. |
| 004 | Parcial | Calculador e correspondência determinística; faltam disponibilidade comprovada de trabalhadores e alocação sem dupla contagem. B06. |
| 005 | Bloqueado | Confirmar extensão do catálogo canónico; education_opportunities representa oferta calendarizada, não investimento educativo. B02. |
| 006 | Parcial | Navegação interna e análise por procura; falta navegação projecto/cluster/corredor com relações confirmadas. B01/B02. |
| 007 | Bloqueado | Não atribuir acreditação por estado de cadastro; faltam autoridade, evidência e mandato. B01/B03. |
| 008 | Bloqueado | Fluxo geral de interesse existe no portal; associação educativa depende de oportunidade canónica aprovada. B02/B05. |
| 009 | Parcial | Empregador declarado como texto; falta identidade institucional e distinção entre estimativa e compromisso. B01/B03. |
| 010 | Bloqueado | Plano formativo permanece proposta; exige lacuna validada e responsáveis. B01/B02/B06. |
| 011 | Parcial | Critérios apresentados: ocupação, competência, qualificação textual, território, validade e conclusão; faltam equivalências e revisão da correspondência. B06. |
| 012 | Fase 2 | Resultados educativos fora da execução actual; requerem tratamento autorizado. B05. |
| 013 | Fase 2 | Bolsas e campanhas permanecem no roteiro. B05. |
| 014 | Bloqueado | Sem serviço de IA Education activado; fornecedor/modelo, fontes e métricas pendentes. B07. |
| 015 | Parcial | Listagens paginadas; faltam pesquisa, filtros e painel reconciliado. B01/B06/B08. |
| 016 | Bloqueado | Rotas web não equivalem à API proposta; faltam identidade, contratos e eventos aprovados. B03. |
| 017 | Parcial | Cadastro mínimo de ocupações; faltam perfis, relações com competências e níveis validados. B06. |
| 018 | Parcial | Datas e território declarados; sem previsão, mobilidade ou ligação contextual completa. B01/B06. |
| 019 | Parcial | Vagas por curso/período; faltam recursos partilhados, capacidade instalada e utilização. B06. |
| 020 | Bloqueado | Revisão de declarações é interna; não existe ciclo institucional de validação, encerramento e reabertura da lacuna. B01/B03/B06. |
| 021 | Bloqueado | CRM geral reutilizável; vínculo educativo e sincronização dependem de B02/B04/B05. |
| 022 | Bloqueado | Necessidades de equipamento/instalações dependem da resposta formativa aprovada. B02/B06. |
| 023 | Bloqueado | Necessidades de formadores dependem da metodologia; dados individuais apenas na fase autorizada. B05/B06. |
| 024 | Bloqueado | Estimativas e sustentabilidade dependem de fontes e modelo de oportunidade aprovado. B02/B06. |
| 025 | Fase 2 | Parcerias no roteiro; responsabilidades e contratos por validar. |
| 026 | Fase 2 | Estágios e aprendizagem no roteiro; sem contratação automática. |
| 027 | Fase 2 | Turmas e beneficiários não recolhidos. B05. |
| 028 | Fases 2/3 | Conclusão e certificação externa dependem de fontes competentes; portal não certifica. |
| 029 | Fase 2 | Inserção e absorção exigem evidência autorizada e confirmação do empregador. B05. |
| 030 | Fase 2 | Retenção exige períodos, seguimento e base de tratamento definidos. B05. |
| 031 | Bloqueado | Referência territorial existente; mapa/relatórios Education requerem fontes geográficas e divulgação autorizadas. B01/B05/B06. |
| 032 | Parcial | Gate de gestão, revisão independente e auditoria partilhada; faltam mandatos e matriz de permissões institucionais. B03. |
| 033 | Parcial | Validação de datas, fontes, referências e concorrência; migração de fontes reais, reconciliação e retenção pendentes. B05/B06/B08. |
3. Validação local
Ambiente de teste novo e isolado: PostgreSQL/PostGIS local, porta 55440, base investmoz_education_test; PHP 8.5.11 com driver PostgreSQL. Não foi usada a base da aplicação para migrations ou testes. Não foram inseridos dados institucionais reais.
| Verificação | Evidência |
|---|---|
| Migrations | Aplicadas com sucesso na base temporária inicialmente vazia. |
| PHPUnit | 107 testes, 884 verificações, todos aprovados. Inclui 9 testes Education. |
| Exemplos e consistência documental | 11 testes Node aprovados; não equivalem a conformidade funcional integral. |
| TypeScript | tsc --noEmit aprovado. |
| Build | npm run build aprovado. |
| Análise estática | PHPStan nível 7, zero erros nos seis ficheiros Education/middleware analisados. |
| Formatação PHP | Pint aprovado nos cinco ficheiros PHP alterados. |
| Confirmação final Education | 9 testes, 136 verificações aprovadas após a última correcção do controller. |
Os testes Education usam transacções revertidas e verificam que o destino termina em _test. A suite preexistente usa também recriação do esquema, exclusivamente na base descartável. Não foram efectuados ensaios de carga, auditoria independente de segurança, validação visual em navegador, testes end-to-end ou homologação institucional. Não transferir a aprovação destes testes para esses controlos.
4. Decisões necessárias para concluir o MVP
| Decisão concreta | Proposta para revisão | Responsável | Condição de avanço |
|---|---|---|---|
| Identidade da oportunidade educativa | Estender o domínio canónico de oportunidades, mantendo a oferta calendarizada separada; preservar IDs e contratos existentes. | Produto e Arquitectura | Aprovar mapeamento de identidade, campos, vínculo CRM e compatibilidade. B02. |
| Autoridade e permissões | Gestão interna não concede mandato institucional. Vincular validação a organização, âmbito e validade do mandato; manter autor diferente do revisor. | Segurança e entidades competentes | Aprovar matriz e comprovar OAuth/OIDC antes de API institucional. B03. |
| Dados e metodologia | Comparar pessoas disponíveis com procura; capacidade formativa é uma resposta potencial, sujeita a calendário, conclusão e recursos partilhados. | Secretariado e entidades competentes | Validar fontes, taxonomia, unidade, cobertura, actualidade e regra de alocação. B01/B06. |
| Piloto | Até três clusters e até três corredores, seleccionados pela matriz da especificação. Nenhum seleccionado artificialmente. | Patrocinador e Produto | Identificar projectos, instituições, responsáveis e fontes autorizadas. B01. |
| CRM e IA | Reutilizar integração existente após contratos; IA apenas recomendação revista, sem estados oficiais. | Responsável CRM e Comité de IA e Dados | Homologar sincronização, fornecedor/modelo e métricas. B04/B07. |
| Operação e dados pessoais | Manter beneficiários fora desta implementação; definir retenção, divulgação, suporte, backup e restauro. | Dados, Segurança e Operações | Resolver B05/B08 e executar gates da especificação. |
O texto de origem exige: «Quando faltar informação do repositório ou da arquitectura existente, produz uma especificação, interface ou pseudocódigo marcado como Pendente de validação, e não código executável apresentado como definitivo». Exige ainda que conflitos sejam assinalados como Bloqueio. Por isso, este diagnóstico não cria tabelas, estados oficiais, integrações ou identidades para contornar as decisões acima.
Go/No-Go: No-Go para produção e para declarar o MVP concluído. Próxima entrega de implementação depende dessas decisões documentadas; as fases 2–4 permanecem no roteiro da especificação.