beb61e77bb
MovePageDto.position — это fractional-indexing ключ (generateJitteredKeyBetween, тот же генератор, что в page.service). @MinLength(5)/@MaxLength(12) не совпадали с реальным диапазоном генератора: плотные between-вставки в глубоком дереве растят ключ далеко за 12 символов (замерено >40), и валидный ключ, который сервер сам сгенерил, отклонялся 400 (Gitea #139, п.6). Теперь валидируем по charset — base-62 алфавит [0-9A-Za-z] — плюс щедрый @MaxLength(256) как чистый DoS-guard, сильно выше любого реального ключа. test.failing (bug-lock) распинен в обычный it; добавлен кейс на отклонение символов вне алфавита (control/separator/инъекция/пустая строка). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>