chore: release v3.1.0 - #547
Merged
Merged
Conversation
Admins (SENAI/WEG/ADMIN) agora configuram, por turma e tipo de checklist (entrada/pos-intervalo), o horario de abertura e a duracao da janela de submissao — em vez de uma janela fixa unica pra todo o sistema, que travava reenvios fora do horario cadastrado. - checklist:janelas: nova permissao (SENAI/WEG/ADMIN, sem TEACHER), seguindo o mesmo gate de canManageChecklistTemplates do backend. - upsertSubmissionWindowClient: client PUT pra criar/editar janela. - PageChecklistSubmissionWindows(Content): tela com seletor de turma, tabela das janelas ja configuradas (com status ao vivo) e formulario de criacao/edicao com preview de "aberta agora?". - Nova aba "Janelas de envio" no SectionTabs do checklist, visivel so pra quem tem a permissao.
useClassChecklistType so verificava se a turma tinha alguma janela configurada, nunca se ela estava aberta agora — turma com janela configurada mas fora do horario deixava preencher a checklist inteira pra so recusar no envio (erro do backend). Agora tambem bloqueia nesse caso, mostrando "Fora da janela de envio" antes de deixar preencher.
…e turma Esses perfis nunca preenchem checklist (resolveClassSelection sempre cai em mode "none" pra eles), entao a /checklist mostrava "Você não tem turma vinculada" — atrito real pra quem so gerencia. Quem tem checklist:dashboard e cai em "none" agora vai direto pro Dashboard. Quem realmente nao tem turma vinculada (representante/professor/aluno sem vinculo) continua vendo o aviso — pra esses o estado e real.
…s de envio - Divisão em duas colunas e grid da tabela de janelas configuradas passam a ativar em lg (1024px) em vez de md (768px) — em tablet as colunas ja ficavam lado a lado mas as linhas da tabela ainda empilhavam (bem mais altas), estourando o layout. - Linha Abertura/Duração/Salvar ganha flex-wrap — sem isso estourava a largura em telas estreitas. - "Tipo de checklist" ganha max-w-xs pra não esticar full-width abaixo de lg, ficando desproporcional aos campos compactos ao lado. - Card "Janelas Configuradas" estica (stretch, default do flex) pra acompanhar a altura da coluna "Definir Janela" ao lado, sem altura fixa nem scroll interno. - Padding do card vira px-4 pt-4 (sem pb-4).
Bump de versao 3.0.0 -> 3.1.0 nos 8 package.json (raiz, apps/root e os 6 pacotes), espelhando o fluxo das releases anteriores.
Se a janela de submissão fechar entre o clique em enviar e a resposta do servidor, a tela agora recalcula isSubmissionUnavailable e mostra o estado "Fora da janela de envio" direto, em vez de empilhar um modal de erro em cima dele.
…tes/quebrados Tira "Taxa de conclusao" (donut redundante com o card de KPI), "Pendencias por dia" (dado do backend quebrado: agrupa por due_at, um prazo futuro, nunca cai numa janela passada), "Pendencias por prioridade" e o card "Prioridade alta" (prioridade de issue e sempre MEDIUM hardcoded no backend, sem feature pra variar) e "Pendencias por status" (redundante com o card de KPI "Pendencias"). Dashboard fica com 3 KPIs + 4 graficos em vez de 4 KPIs + 8 graficos.
… KPI de conformidade O autosave (debounce de 1s) podia disparar o PATCH de rascunho quase junto com o POST de envio quando o usuario respondia e enviava rapido, causando OptimisticLockingFailureException (409, "registro alterado por outro usuario" — sendo o autosave o "outro usuario"). O submit agora espera o autosave em voo terminar antes de mandar sua propria requisicao, serializando as duas escritas. Aproveita tambem tendenciaConformidade (ja no payload do dashboard, sem mudanca de backend) pra adicionar o card "Conformidade (ultima semana)", com a variacao vs a semana anterior quando houver historico.
formatDateTime() em PageChecklistEnvioDetalhe (Server Component) formatava a data sem timeZone explicito, entao usava o fuso do processo Node (UTC em container) em vez do fuso operacional. A tela de lista (client component, roda no navegador) ja mostrava certo, so o detalhe do envio saia 3h adiantado. Corrigido fixando timeZone: "America/Sao_Paulo" nas duas chamadas.
jonathan7gb
approved these changes
Jul 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexto
Corte da release v3.1.0. Desde a v3.0.0, a
developacumulou uma única frente de trabalho no domínio Checklist: a gestão de janelas de envio por turma, que antes era uma janela fixa e única pra todo o sistema.O que muda
feat): SENAI/WEG/ADMIN passam a configurar, por turma e tipo de checklist (entrada/pós-intervalo), horário de abertura e duração da janela de submissão. Nova permissãochecklist:janelas(RBAC, sem TEACHER), clientupsertSubmissionWindowClient, telaPageChecklistSubmissionWindows(Content)com seletor de turma, tabela de janelas configuradas (status ao vivo) e formulário com preview "aberta agora?". Nova aba "Janelas de envio" noSectionTabs, visível só pra quem tem a permissão.fix):useClassChecklistTypesó verificava se a turma tinha alguma janela configurada, nunca se estava aberta agora — deixava preencher a checklist inteira pra só recusar no envio (erro do backend). Agora bloqueia antes, com "Fora da janela de envio".fix): esses perfis nunca preenchem checklist e caíam no aviso "Você não tem turma vinculada" por engano. Quem temchecklist:dashboarde cai em modo "none" agora vai direto pro Dashboard.fix): breakpoint da divisão em colunas e do grid da tabela ajustado de md (768px) pra lg (1024px), flex-wrap na linha Abertura/Duração/Salvar, largura máxima no seletor de tipo e card que estica pra acompanhar a altura da coluna ao lado.3.0.0→3.1.0nos 8package.json(raiz,apps/roote os 6 pacotes), espelhando o fluxo das releases anteriores.Issue relacionada
Sem issue de tracking dedicada para este corte de release.
Como testar
git diff main...release/v3.1.0 -- '**/package.json'mostra apenas3.1.0nos 8 arquivos.npx vitest run packages/core/tests/rbac/rolePermissions.test.ts— cobrechecklist:janelasrestrito a SENAI/WEG/ADMIN.npx vitest run packages/checklistenpx vitest run packages/core.npx tsc --buildsem erros./checklist/janelas, configurar uma janela e conferir bloqueio de preenchimento fora do horário configurado; como perfil sem turma vinculada, conferir que o aviso antigo continua aparecendo.Tipo de mudança
Checklist do autor
Notas pro revisor
release/separada nem PR intermediário pradevelop: o bump de versão foi commitado direto emrelease/v3.1.0(criada a partir da ponta atual dadevelop) e vai direto pramain— decisão explícita pra este corte, pra não abrir dois PRs pra uma única feature já madura nadevelop.main, como nas releases anteriores.v3.1.0+ release notes, e fast-forward/merge de volta nadeveloppra manter o bump de versão sincronizado (adevelophoje ainda está em3.0.0).