Skip to content

chore: release v3.1.0 - #547

Merged
PabloTzeliks merged 11 commits into
mainfrom
release/v3.1.0
Jul 26, 2026
Merged

chore: release v3.1.0#547
PabloTzeliks merged 11 commits into
mainfrom
release/v3.1.0

Conversation

@PabloTzeliks

Copy link
Copy Markdown
Contributor

Contexto

Corte da release v3.1.0. Desde a v3.0.0, a develop acumulou 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

  • Gestão de janelas de envio (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ão checklist:janelas (RBAC, sem TEACHER), client upsertSubmissionWindowClient, tela PageChecklistSubmissionWindows(Content) com seletor de turma, tabela de janelas configuradas (status ao vivo) e formulário com preview "aberta agora?". Nova aba "Janelas de envio" no SectionTabs, visível só pra quem tem a permissão.
  • Bloqueio de preenchimento fora da janela (fix): useClassChecklistType só 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".
  • Redirecionamento de SENAI/WEG/ADMIN (fix): esses perfis nunca preenchem checklist e caíam no aviso "Você não tem turma vinculada" por engano. Quem tem checklist:dashboard e cai em modo "none" agora vai direto pro Dashboard.
  • Responsividade da tela de janelas (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.
  • Bump de versão 3.0.03.1.0 nos 8 package.json (raiz, apps/root e os 6 pacotes), espelhando o fluxo das releases anteriores.

Issue relacionada

Sem issue de tracking dedicada para este corte de release.

Como testar

  1. Bump de versão: git diff main...release/v3.1.0 -- '**/package.json' mostra apenas 3.1.0 nos 8 arquivos.
  2. Permissão nova: npx vitest run packages/core/tests/rbac/rolePermissions.test.ts — cobre checklist:janelas restrito a SENAI/WEG/ADMIN.
  3. Regressão do domínio: npx vitest run packages/checklist e npx vitest run packages/core.
  4. Tipos: npx tsc --build sem erros.
  5. Manual: como SENAI/WEG/ADMIN, acessar /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

  • Nova feature
  • Correção de bug
  • Refatoração (sem mudança de comportamento)
  • Documentação
  • Infraestrutura / config / build
  • Outro: ___

Checklist do autor

  • Código segue convenções definidas em CONTRIBUTING.md
  • Validei localmente que a aplicação compila/gera build sem erros (quando aplicável)
  • Verifiquei que não há erros de análise estática ou alertas relevantes no código (quando aplicável)
  • Confirmei que não há erros de tipagem/TypeScript no escopo da mudança (quando aplicável)
  • Testei manualmente os cenários principais
  • Componentes novos/alterados documentados no Storybook (se aplicável)
  • Documentação atualizada (se aplicável)
  • Não introduzi dependências novas sem alinhamento prévio

Notas pro revisor

  • Sem branch release/ separada nem PR intermediário pra develop: o bump de versão foi commitado direto em release/v3.1.0 (criada a partir da ponta atual da develop) e vai direto pra main — decisão explícita pra este corte, pra não abrir dois PRs pra uma única feature já madura na develop.
  • Merge sem squash (merge commit), pra preservar o histórico dos 4 commits na main, como nas releases anteriores.
  • Após o merge: tag v3.1.0 + release notes, e fast-forward/merge de volta na develop pra manter o bump de versão sincronizado (a develop hoje ainda está em 3.0.0).

danielsismer and others added 5 commits July 24, 2026 16:47
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.
@PabloTzeliks
PabloTzeliks requested a review from a team as a code owner July 25, 2026 00:15
Copilot AI review requested due to automatic review settings July 25, 2026 00:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

danielsismer and others added 4 commits July 25, 2026 00:29
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.
@PabloTzeliks
PabloTzeliks requested a review from jonathan7gb July 25, 2026 17:08
@PabloTzeliks PabloTzeliks self-assigned this Jul 25, 2026
… 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.
@PabloTzeliks
PabloTzeliks merged commit 06e85da into main Jul 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants