Repository navigation
Кадрирование шапки и логотипа с отдельной мобильной обложкой - #434
Merged
Merged
Conversation
13 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что изменено
В предпросмотре организатор двигает изображение внутри шапки/логотипа мышью, пальцем или стрелками и выбирает масштаб100–300%. Для телефона добавлен отдельный необязательный cover upload и независимый кадр. Исходные файлы сохраняются; выбранный кадр сохраняется обычной кнопкой формы и восстанавливается после reload.
Зачем
Широкая шапка обрезает надписи на телефоне; организатору нужно самому выбрать кадр доSave. Spec, AC, review и screenshots.
Реализация
Shared ImageFramingDirective задаёт одинаковые object-position/transform-origin/scale. Avatar поддерживает framing только по opt-in: progress/online остаются вне crop. Program detail, cards иsidebar используют сохранённый logo; cover использует mobile source при ширине<1000. Форма хранит полный draft document, reset/replace/remove учитывают mobile fallback. Pointer capture, native range, keyboard и busy/error guards сохраняют существующий flow.
API
Depends on API#782: mobile_cover_image_address иimage_framing в существующих management endpoints. Additive контракт, deep camel/snake conversion остаётся прежней; frontend tolerates missing fields. Backend/migration0020 необходимо выкатить раньше frontend.
UI
Существующие preview, Mont, DS button directive/foundation и tokens; добавлены target selection, range, точный сдвиг иreset. Локальная итерация по прямому запросу пользователя, без нового экрана. Desktop, mobile.
Permissions
Не менялись: существующие organizer route иserver-side object permissions. Новый child output меняет только draft; autosave нет.
Проверки
Acceptance criteria
Не проверено
Физический телефон и OS screen reader. В localQA заменён только внешний storage adapter; multipart/auth/UserFile/program settings настоящие. Live organizer session отсутствует. После deployment выполнены16 anonymous release checks; organizer interaction проверено в7 local Chrome scenarios с настоящими Django/PostgreSQL.
Риски / migration
Frontend migration не нужна. Обязателен backend-first rollout API#782/migration0020. Только dev; production не запрошен.
Dev release
Available on dev. Organizer mouse/touch/save/cancel/409 scenarios passed against isolated real local Django/PostgreSQL; anonymous live checks do not claim authenticated organizer testing. Production untouched.