Skip to content

feat(validation): limites de inputs, mensajes de error y manejo de caracteres inusuales#10

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

feat(validation): limites de inputs, mensajes de error y manejo de caracteres inusuales#10
ArturoGomezGz merged 1 commit into
masterfrom
hotfix-mike

Conversation

@ArturoGomezGz

Copy link
Copy Markdown
Collaborator

Resumen

Dos commits de mejora a la validación de inputs:

  1. Límites de inputs y mensajes de error claros — establece restricciones en campos que no tenían ninguna, con mensajes descriptivos que llegan al usuario vía toast rojo.
  2. Caracteres inusuales devuelven 400 en lugar de 500 — caracteres raros/unicode que rompían el parseo del body ahora retornan INVALID_INPUT con mensaje claro en vez de error interno.

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.

Manejo de errores de parseo (caracteres inusuales)

  • HttpMessageNotReadableException → 400 INVALID_INPUT (body no parseable, unicode roto, JSON inválido).
  • HttpMessageConversionException → 400 INVALID_INPUT (error de conversión de tipos).
  • MethodArgumentTypeMismatchException → 400 INVALID_INPUT con el campo afectado.
  • Antes de este fix: todos estos casos devolvían 500.

Mejora general de mensajes

  • GlobalExceptionHandler antepone el nombre del campo en errores de body (campo: mensaje).
  • Nuevo handler de ConstraintViolationException → 400 en vez de 500 para query params inválidos.

Notas

  • Mensajes en inglés, consistente con el resto de la app.
  • Sin cambios en el frontend (la cadena ErrorResponse → api.js → toast.error() ya los muestra).
  • Sin cambios en el bot de Telegram (ya valida manualmente).

🤖 Generated with Claude Code

Caracteres raros/inusuales que rompian el parseo del body o la
conversion de parametros devolvian 500. Ahora se capturan
explicitamente y retornan 400 INVALID_INPUT con el mensaje
"The submitted input is invalid or contains unsupported characters".

Handlers anadidos:
- HttpMessageNotReadableException (body no parseable/JSON invalido)
- HttpMessageConversionException (error de conversion de tipos)
- MethodArgumentTypeMismatchException (parametro de tipo incorrecto)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ArturoGomezGz ArturoGomezGz merged commit 4b3e045 into master Jun 2, 2026
3 checks passed
@ArturoGomezGz ArturoGomezGz deleted the hotfix-mike branch June 2, 2026 19:00
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