Files
Investidor-V2/docs/investmoz/education/implementation-status.md
T
nala 1106509116
tests / ci (push) Canceled after 0s
vrsao 2
2026-10-08 14:02:01 +02:00

14 KiB
Raw Blame History

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ída EDUCATION_ENABLED=false no exemplo de ambiente. O .env real 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.