Skip to content

feat(validation): limites de inputs y mensajes de error claros#9

Merged
ArturoGomezGz merged 1 commit into
masterfrom
hotfix-mike
Jun 2, 2026
Merged

feat(validation): limites de inputs y mensajes de error claros#9
ArturoGomezGz merged 1 commit into
masterfrom
hotfix-mike

Conversation

@ArturoGomezGz

Copy link
Copy Markdown
Collaborator

Resumen

Establece límites de validación en los inputs que no tenían ninguna restricción y mejora los mensajes de error que recibe el usuario. Surge de una revisión de sanitización/validación de todos los DTOs de request, query params, paginación y handlers del bot.

Cambios

Límites de inputs

  • TaskRequest.storyPoints: acotado a 1–21 (escala Fibonacci).
  • StatusChangeRequest.actualHours: @Positive, máx 999.99, hasta 2 decimales.
  • UserController.searchByEmail: @Validated + param @NotBlank @Email @Size(max=100).
  • DashboardController.velocity: @Validated + sprints acotado a 1–50.
  • LoginRequest.password: máx 100 caracteres (alineado con el registro).
  • Paginación global: max-page-size=500, default-page-size=20 (el tope de 500 cubre el size:500 que usa el frontend en Backlog y Tasks).

Mensajes de error

  • GlobalExceptionHandler ahora antepone el nombre del campo en los errores de body (campo: mensaje).
  • Nuevo handler de ConstraintViolationException → devuelve 400 VALIDATION_ERROR (antes los params inválidos caían en 500).
  • Los mensajes fluyen sin cambios de frontend: ErrorResponse.messageapi.js → toast rojo / mensaje inline.

Alcance / notas

  • Mensajes en inglés, consistente con el resto de la app.
  • Sin cambios en el bot de Telegram (ya valida manualmente) ni en el router NLU.
  • No se modificó el frontend (el tope de 500 evita romper las vistas existentes).

Pruebas

Pendiente de validación en el pipeline en la nube (no se compila localmente).

🤖 Generated with Claude Code

- storyPoints acotado a 1-21 (TaskRequest)
- actualHours: positivo, máx 999.99, hasta 2 decimales (StatusChangeRequest)
- búsqueda por email y velocity sprints (1-50) validados con @validated
- password de login limitado a máx 100 caracteres
- tope de paginación: max-page-size=500, default-page-size=20
- GlobalExceptionHandler antepone el campo y maneja ConstraintViolationException (400 en vez de 500)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ArturoGomezGz ArturoGomezGz merged commit 8578811 into master Jun 2, 2026
3 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.

1 participant