- Substitui LocalDateTime.now() por Instant.now() no issuedAt — a string
produzida por LocalDateTime não contém timezone e era interpretada como
hora local pelo browser, fazendo o frontend calcular expiresAt errado e
nunca deslogar o usuário quando o token vencia.
- Cria TokenConstants com ACCESS_TOKEN_EXPIRY_SECONDS e
REFRESH_TOKEN_EXPIRY_SECONDS, eliminando os valores hardcoded em
LoginUseCase e RefreshTokenUseCase.
- Remove imports não utilizados em AuthController.
closes#24
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend: adiciona ListMyTasksInput, ListMyTasksRequest (@BeanParam) com
parâmetros text, projectId e status; novo método findTasksByUserFiltered
no repositório com query dinâmica via Panache; mapper atualizado;
CLAUDE.md documenta regra de DTO Request para 3+ parâmetros.
Frontend: componente reutilizável TaskFilterBar (texto, projeto, status)
integrado em TaskListPage e TaskBoardPage; getMyTasks() aceita filtros
repassados como query params ao backend.
closes#26
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Propagava o campo history do CreateTaskRequest até o use case e persistência.
O mapeamento em TaskControllerMapper ignorava o history; CreateTaskInput não
tinha o campo; e CreateTaskUseCase não aplicava os itens à entidade antes
de salvar.
Closes#22
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove leading slash from smallrye-health.root-path so the health
endpoint resolves to /backend/q/status (relative to non-app root)
instead of the unreachable absolute path /status
- Clean up docker-compose traefik labels (remove stale comments)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tasks with no associated project were being excluded from org dashboard
calculations because the query filtered by project.organization.id.
Now fetches tasks by active member emails, so all tasks are counted.
Tasks and history items with no project are grouped under "Geral" in
project-specific charts and calculations.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cria XxxResponse records e OrgDashboardControllerMapper na camada do controller,
removendo o vazamento do OrgDashboardOutput para a camada HTTP.
Documenta a regra no CLAUDE.md.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adiciona tela de analytics organizacional acessível apenas por OWNER e ADMIN,
com gráfico de pizza por projeto, top 5 tarefas e ranking de membros por tempo trabalhado.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>