[Unificação] Eliminar tela Simulados admin + vista interna no ShowProva + cleanup criarSimulado
#68
Closed
FernandoAlmeidaPinto
started this conversation in
Features
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Resumo da entrega. 6 cards no total. Consolida a admin em uma única tela (Provas), move a visualização dos simulados pra dentro do modal de detalhes da prova, e limpa a permissão legada
criarSimulado— corrigindo o label enganoso que apresentava ela como "Visualizar Simulados".Documento de fundação:
docs/unificacao-simulados-provas.mdPosição na série: 2 de 10
Por que essa etapa
Hoje o admin tem duas entradas independentes no menu ("Simulados" e "Provas") que tratam do mesmo domínio. A tela
DashSimuladoé puramente contemplativa — cards não são clicáveis, não há navegação, não há ação. Ela existe só pra "olhar a lista". Isso é redundante: a lista de simulados de uma prova faz muito mais sentido dentro do contexto daquela prova.Além disso, existe uma permissão legada chamada
criarSimuladoque na UI é apresentada com o label "Visualizar Simulados" (RolesLabelemroles.ts). É lixo do sistema que confunde qualquer dev novo lendo o código, e mais um item pra manter alinhado quando o modelo de permissões evolui.Essa etapa elimina a tela Simulados, move a lista de simulados de uma prova pra dentro do
ShowProvamodal (via state switch entredetailsesimulados), e faz o cleanup completo docriarSimuladopreservando acesso de quem tinha essa permissão (migração automática pravisualizarProvas).Decisões cravadas
pages/dashSimulado/index.tsxe a entrada correspondente do menu admin.view: 'details' | 'simulados'noShowProva— sem sub-modal, sem drawer, sem componente novo.simulados[]populado viagetProvaByIdnouseEffectdo modal.Permissions.criarSimuladoe todos os seus 14 usos mapeados.UPDATE roles SET visualizar_provas = TRUE WHERE criar_simulado = TRUE AND visualizar_provas = FALSE— ninguém perde acesso.visualizarSimulado— essa permissão não existe no código (confirmado por grep). Registrado no doc §8.2 como "não deve ser criada no futuro".Pré-requisitos
Prova.examefoi removido; a vista de detalhes agora lêprova.categoria.exame.nome.Simulado.tipovirouSimulado.categoria; a tabela de simulados lêcategoria.nome.Cards desta etapa
Card 01 ·
client-vcnafacul· Remover DashSimulado (tela + rota + entrada do menu)criarSimuladoda rota vai junto (o restante do cleanup é nos cards 05-06).Card 02 ·
client-vcnafacul· ServicegetProvaById+ DTOProvacomsimuladosGET /mssimulado/prova/:id(endpoint já popula simulados+categoria+questoes no backend). Estende tipoProvacomsimulados?: SimuladoResumo[].Card 03 ·
client-vcnafacul· Vista interna noShowProva(detalhes + simulados)details/simulados). useEffect com fetch. Tabela com nome/categoria/questões/status. Loading / empty / error tratados. Race condition mitigada com cancelled flag.Card 04 ·
api-vcnafacul(scripts) · SQL: preservar acesso antes de removercriar_simuladoUPDATE roles SET visualizar_provas = TRUE WHERE criar_simulado = TRUE AND visualizar_provas = FALSE. Blinda contra perda de acesso (recorrente da armadilha do label enganoso).Card 05 ·
api-vcnafacul· RemovercriarSimulado(backend cleanup)Permissions,@Columnda entity, DTO, service (3 refs), seeds. Migration TypeORMDROP COLUMN. Migra guard doDELETE /mssimulado/simulado/:idpracadastrarProvas. Investiga e limpa oPOST /mssimulado/simuladolegado (pendência §2.2).Card 06 ·
client-vcnafacul· RemovercriarSimulado(frontend cleanup) + release notesRoles, doRolesLabel(a entrada com label enganoso "Visualizar Simulados"), do DTOcreateRole, e dos 2ModalNewRole. Rascunha release notes pra time interno.Coordenação de deploy
Ordem obrigatória:
roles_ainda_impactadas = 0).DROP COLUMNna inicialização.Se preferir dividir Cards 01-03 (unificação) e 04-06 (cleanup permissão) em dois deploys separados: também funciona. A unificação frontend é totalmente compatível com o backend legado que ainda tem
criar_simulado.Riscos consolidados
criarSimuladosem rodar Card 04 antes → admins que dependiam do label "Visualizar Simulados" perdem acesso ao ver simulados. Mitigado por ordem obrigatória + AC do Card 05 exige evidência do Card 04.cancelledflag no useEffect blinda./dashboard/dash-simuladoviram 404. Decisão consciente, sem mitigação — comunicar internamente se surgirem reclamações.categorianão populada (edge case pré-migração da etapa 1) → defensivesimulado.categoria?.nome ?? '—'na tabela. Como [Categoria] já foi pra prod, esse cenário é improvável.Próximas etapas
Depois de [Unificação]:
DashProvaque este doc deixou o slot preparado.docs/resumo-time.mdpra ordem consolidada.Referências
docs/unificacao-simulados-provas.mddocs/resumo-time.mddocs/pendencias.md(§2.2 relevante pra esta etapa)All reactions