Витрины галереи (администратору)

Обновлено: 2026-09-29 галерея витрина админка файлы stl step лицензия публикация

Витрины галереи — управление

Раздел админки Управление сервером → Витрины галереи
(/admin/gallery) — то, откуда наполняется публичная
Галерея моделей. Доступ только администраторам.

Одна витрина — это издание одной модели для скачивания: файлы (печать,
CAD, инструкция, чертежи), версия, лицензия и описание. Характеристики
(размах, вес, материал, фото) витрина не хранит — они берутся из записи
Справочника моделей, к которой она
привязана.

Загрузить модель целиком — пошагово

Сценарий «выложить свою облётанную модель со всем, что к ней есть»
(на примере Kestrel: название, слоган, описание, ТТХ, обложка, наборы STL,
инструкция, чертежи, лицензия, версия). Каждый шаг — отдельный экран, и
порядок важен: без файла нельзя опубликовать, без публикации витрина не
попадёт на главную, без обложки герой главной будет без картинки.

  1. Завести витрину — /admin/gallery → «+ Новая витрина» → оставить
    «создать новую запись», ввести название (Kestrel) → «Создать».
    Сервер заведёт запись справочника (общий каталог, без владельца) и откроет
    карточку витрины /admin/gallery/<id>. Публичный адрес (/gallery/kestrel)
    строится из названия и больше не меняется.
  2. Заполнить ТТХ — на карточке витрины блок «Запись справочника» →
    «Править ТТХ» (/catalog/models?edit=<id записи>): размах (мм),
    длина, взлётный вес (г), мотор, число моторов, батарея, пропеллер,
    сервоприводы, материал, тип сборки, ссылка; произвольные пары «ключ →
    значение» — в specs (до 40). Полоса характеристик карточки галереи и
    паспорт на странице издания читают ровно эти поля, витрина их не
    дублирует.
  3. Загрузить обложку и фото — тот же блок → «Открыть запись: фото и
    обложка»
    (/catalog/models/<id записи>) → «+ Добавить фото» (JPEG,
    PNG, WebP до 5 МБ, до 10 фото, ужимаются до 800 px). Первое загруженное
    становится главным
    ; сменить главное можно в форме правки записи
    (шаг 2) кликом по миниатюре. Главное фото — это обложка: её показывают
    карточка в /gallery и герой главной.
    Кнопка «Убрать фон» делает вырезку — она и будет отдаваться по
    умолчанию (оригинал остаётся). Подробнее —
    Обложка и фото.
  4. Приложить файлы — на карточке витрины «Приложить файлы»: можно
    выбрать (или бросить мышью) сразу несколько — они уйдут по одному, вид
    файла из селекта применится ко всем. Что и как упаковать —
    Файлы: по одному STL на деталь либо zip-группы (не больше 200
    записей в архиве), инструкция — PDF (вид «инструкция», открывается
    без входа), чертежи — PDF/DXF (вид «чертёж»).
  5. Описание, сборка, история, лицензия — форма «Данные издания» на той
    же карточке: аннотация (одна строка на карточке списка), описание и
    заметки по сборке (markdown, до 20 000 знаков каждое), слоган героя (до
    96 знаков), «история модели» (до 4 000) и теги-особенности (до 6), пресет
    оформления, лицензия — подсказки типовых формулировок.
    «Сохранить».
  6. Выпустить редакцию — карточка «Редакции»: подпись (1.0) и «что
    изменилось» → «Выпустить редакцию». Состав файлов на этот момент
    замораживается как редакция 1.0; следующие правки состава готовят
    1.1.
  7. Опубликовать — «Опубликовать в галерее» (доступно, когда есть хотя
    бы один файл). Дата публикации ставится один раз и задаёт порядок «свежие
    сверху»: последняя опубликованная витрина становится флагманом главной.
  8. Открыть раздел — публичная галерея и герой главной показываются, только
    пока включён фича-флаг design_gallery: /admin/flags → design_gallery
    → включить глобально (не процентный раскат — анониму бакет не
    считается, и раздел остался бы закрыт гостям). Это отдельное действие,
    витрина сама флаг не включает.
  9. Проверить — открыть / в приватном окне (как гость): герой — витрина
    с обложкой, слоганом и «Читать дальше» на /gallery/kestrel; на странице
    издания — файлы, ТТХ, фото, лицензия рядом с кнопкой скачивания. Своё фото
    сборки можно добавить прямо там — у администратора оно публикуется сразу.

Как завести витрину

  1. «+ Новая витрина» на странице списка.
  2. Выбрать запись справочника — или оставить «создать новую запись» и ввести
    название.
  3. Сохранить: откроется карточка витрины.

В галерею попадают записи общего каталога и ВАША СОБСТВЕННАЯ опубликованная
модель.
Витрина показывает название, характеристики и фото модели на
странице, открытой без входа, — поэтому решение выложить их принимает тот, чьи
это данные: свою опубликованную модель вы выкладываете сами.

Чужую модель — даже опубликованную — привязать нельзя: её владелец не
выбирал анонимную публикацию своих характеристик и фото. Нужна её витрина —
договаривайтесь с владельцем, заводит он.

Приватную (неопубликованную) модель привязать нельзя — сервер откажет и
подскажет следующий шаг: сначала опубликовать модель (владелец подаёт заявку из
списка моделей, админ её одобряет). После одобрения витрину можно завести
обычным порядком — характеристики переносить руками не нужно, они берутся из
той же записи, и дубль в каталоге не нужен.

Витрины без записи справочника не бывает. Если запись не выбрана, она
заводится автоматически (тип «каталог», как у общих моделей платформы) — иначе
скачавший файлы не смог бы добавить себе борт этой модели в Ангар. На одну
запись справочника приходится ровно одна витрина, поэтому в выборе видны
только записи, у которых витрины ещё нет.

Публичный адрес (/gallery/имя-модели) сервер строит из названия модели
сам: кириллица транслитерируется, совпадение с уже занятым адресом
разрешается номером в конце (raven-1-6-2). Адрес неизменяем — он попадает
во внешние ссылки и в поисковую выдачу.

Файлы

На карточке витрины: «Приложить файлы» → выбрать один или несколько
файлов (или бросить их мышью на форму) → «Загрузить». Несколько файлов
уходят по одному, в порядке выбора, вид файла из селекта применяется ко
всем; если какой-то не прошёл проверку, форма скажет, сколько успело
приложиться и какой файл отклонён — остальные после него не отправляются.

  • Принимаются stl, step/stp, 3mf, pdf, zip, dxf — до 100 МБ
    файл, до 50 файлов и до 500 МБ на одну редакцию; всё хранилище витрины
    вместе с историей редакций — до 4 ГБ.
  • Наборы деталей — zip-группами. Модель из десятков STL (у Kestrel в
    экспорте больше 250 файлов по папкам) целиком по одному не влезет в 50
    файлов; собирайте группы («крылья по деталям», «фюзеляж и хвост»,
    «эмблемы») в zip, не больше 200 записей в архиве, распакованный объём
    до 1 ГБ, запись до 100 МБ. Варианты одной детали (пластина полётника
    frog/gecko/cat) — отдельные файлы с говорящими именами: имя файла
    видно на карточке рядом с его видом и размером, отдельной подписи у файла
    нет.
  • Тип проверяется по содержимому, а не по расширению: переименованный в
    .stl архив или видео будут отклонены. Архивы дополнительно проверяются на
    «zip-бомбу» (слишком много записей, слишком большой распакованный объём,
    вложенные архивы), зашифрованные архивы не принимаются — их содержимое
    проверить нельзя.
  • Каждый файл проходит антивирус. Если сканер недоступен, загрузка
    отклоняется — это осознанный выбор в пользу безопасности.
  • Вид файла («меш для печати», «CAD-модель», «инструкция», «чертёж»…)
    определяется автоматически по формату, но его можно задать вручную: PDF
    бывает и инструкцией, и чертежом. Инструкция (вид «инструкция») открывается
    на странице издания без входа, остальные файлы — только вошедшим,
    принявшим Условия.

Удаление файла убирает и его байты, и запись о нём (если файл не заморожен в
выпущенной редакции — тогда байты остаются, пока редакцию не «отпустят»).

Обложка и фото

Картинка карточки в /gallery и героя главной — это главное фото записи
справочника
, к которой привязана витрина; витрина своих картинок не хранит.
Фото сборок от пользователей (вкладка «Фото», премодерация) — отдельная
лента ниже на странице издания, обложкой они не становятся.

Запись, заведённая витриной «по имени», — каталожная, без владельца, и её
галереей управляет администратор (тот же круг прав, что правит ТТХ
записи): на карточке записи (/catalog/models/<id>, ссылка «Открыть
запись: фото и обложка»
с карточки витрины) доступны «+ Добавить фото»,
удаление слота и «Убрать фон»; выбор главного — в форме правки записи
(/catalog/models?edit=<id>, клик по миниатюре).
Чужая опубликованная пользовательская модель администратору по-прежнему
закрыта — её фото ведёт владелец.

Байты фото каталожной записи никому не списываются с квоты хранилища — у
записи нет владельца, это контент платформы.

Фото сборок, которое загружает сам модератор (администратор) — с карточки
записи или с публичной страницы издания, — публикуется сразу, без очереди
модерации, и тут же видно всем, включая гостей.

Лицензия

Поле лицензии — свободная строка (до 128 знаков), она показывается на
странице издания рядом с кнопкой скачивания. При вводе поле подсказывает
типовые формулировки: идентификаторы Creative Commons (CC-BY-4.0,
CC-BY-SA-4.0, CC-BY-NC-4.0, CC-BY-NC-SA-4.0, CC-BY-NC-ND-4.0) и
формулировку «личный экземпляр» — только собственная постройка, без
распространения и продажи. Подсказка не ограничивает: своя формулировка
сохраняется как есть.

«Что понадобится» и видео

Оба блока заполняются в карточке витрины админки (форма «Данные издания»)
и в «Моих публикациях» (модал «Редактировать») — редактор один и тот же.

Что понадобится — список покупок, который на публичной странице
показывается группами, как у Eclipson/Flightory. Кнопка «+ Добавить
позицию»
заводит строку: группа (принтер, пластик, электроника,
радиосистема, крепёж, прочее), название, количество, примечание и ссылка.

  • Количество — строка с единицей: «2 шт.», «600 г», «4S 2200 мА·ч».
    Число без единицы читается по-разному у пластика и у сервоприводов.
  • Ссылка — только http:///https:// на страницу товара или детали;
    другие схемы форма отвергнет. На карточке ссылка открывается в новой
    вкладке.
  • Строка без единого заполненного поля в сохранение не попадает; позиция
    без названия — отказ с указанием поля. До 40 позиций на витрину.
  • Список — свойство витрины, а не редакции: он не замораживается при
    выпуске версии (замораживаются только файлы) и правится на месте —
    сменили рекомендуемый мотор, и карточка сразу показывает новый.

Видео — поле «Видео (YouTube)»: по одной ссылке на строку, до шести.
Принимаются только адреса роликов YouTube — youtube.com/watch?v=…,
youtu.be/… и youtube.com/shorts/…; ссылка на другой сайт, плейлист,
канал или адрес встраивания (/embed/) — отказ. Хранится идентификатор
ролика, поэтому после сохранения поле показывает адрес в единой форме
https://www.youtube.com/watch?v=…. На публичной странице ролик — это
постер и кнопка; плеер YouTube загружается только после клика читателя.
Постер сервер скачивает сам при сохранении формы и хранит вместе с
файлами витрины — читатель получает его с нашего сайта, а не с YouTube.
Если YouTube не отдал картинку (ролик приватный, удалён, сеть не ответила),
ролик всё равно сохраняется, а на карточке вместо постера стоит нейтральная
заглушка; пересохраните форму позже — сервер попробует снова.

Ключевые характеристики первого экрана карточки — размах, длина и
взлётная масса из полей записи справочника плюс нагрузка на крыло,
скорость сваливания и масса печати из «дополнительных характеристик» той
же записи. Чтобы они поднялись на первый экран, ключ характеристики нужно
взять из подсказки в форме записи (/catalog/models?edit=<id>, поле «ключ»
подсказывает типовые: «Площадь крыла, дм²», «Нагрузка на крыло, г/дм²»,
«Скорость сваливания, км/ч», «Масса печати, г», «Минимальный стол
принтера, мм», «Сопло, мм», «Каналы радио», «Профиль»). Значение вводится
как есть — платформа ничего не вычисляет за автора; ключ, введённый своими
словами, остаётся в таблице характеристик ниже на карточке.

Публикация

Кнопка «Опубликовать в галерее» делает витрину видимой в публичном
списке. Два правила, которые нельзя обойти:

  • Пока к витрине не приложен ни один файл, публикация невозможна — это
    проверяет сервер, а не только интерфейс. Опубликованная витрина без файлов
    предлагала бы скачать то, чего нет.
  • Удаление последнего файла снимает публикацию — по той же причине.

Снятие публикации файлы не удаляет: витрина возвращается в черновик и её можно
дополнить.

Дата публикации ставится один раз, при первой публикации, и повторное
включение после снятия её не переписывает: по ней считается порядок «свежие
сверху» в галерее, и последняя опубликованная витрина становится флагманом
главной страницы
(герой с обложкой и слоганом). Публичный раздел и герой
показываются, только пока включён фича-флаг design_gallery (/admin/flags,
глобально) — публикация витрины флаг не включает.

Галочка «Доступна в галерее» в карточке модели

Ту же публикацию можно включить прямо из карточки модели справочника
(/catalog/models/<id>) — блок «Витрина в галерее». Он виден только
администратору
: публикация витрины — админская операция, как и весь её CRUD,
поэтому владелец модели, не будучи админом, этого блока не видит.

Что показывает блок:

  • переключатель «Доступна в галерее» — это и есть публикация связанной
    витрины. Отдельного поля «в галерее» у записи справочника нет: файлы,
    лицензия, версия и счётчики живут в витрине, а справочная запись остаётся
    описанием модели;
  • счётчики скачиваний и просмотров и число приложенных файлов;
  • ссылку на карточку витрины в админке — там её дополняют файлами и
    описанием;
  • публичный адрес витрины. Пока витрина не опубликована, адрес показан
    текстом: страницы по нему ещё нет (неопубликованной витрине /gallery/…
    отвечает «не найдено»). Ссылкой он становится после публикации.

Переключатель заблокирован, пока к витрине не приложен ни один файл, — с
тем же пояснением, что и на карточке витрины. Это подсказка: запрет держит
сервер, и запрос в обход интерфейса тоже получит отказ. Блокируется только
включение: снять с публикации можно всегда.

Витрины у модели ещё нет — вместо переключателя стоит кнопка «Создать
витрину»
. Она ведёт в раздел «Витрины галереи» с уже открытой формой
создания, где эта запись справочника выбрана заранее.

Блок есть и у вашей собственной опубликованной модели — это штатный путь
«выложить файлы своей модели», и заводить ради него пустой каталожный дубль не
нужно. У чужой модели блока нет: её витрину заводит владелец.

Модель ещё не опубликована — блока витрины у неё нет, но владелец видит на
карточке пояснение и ссылку «Опубликовать модель»: она ведёт в список моделей,
на вкладку «Мои», откуда подаётся заявка. Если заявка уже подана и ждёт
модератора, вместо ссылки стоит статус: кнопки публикации в этот момент в
списке нет, и ссылка вела бы в пустоту. Пояснение видит только владелец и
только если раздел «Галерея» ему открыт.

Удаление витрины

Удаляются и сама витрина, и все её файлы. Что произойдёт с записью справочника,
зависит от того, кто её завёл — и об этом сказано прямо в подписи к кнопке
удаления:

  • Запись выбрана из справочника (или заведена раньше вручную) — она
    остаётся: может быть уже связана с бортами Ангара, отзывами и фото
    пользователей, а витрина — лишь издание этой модели.
  • Запись создана автоматически вместе с этой витриной — она удаляется
    вместе с ней
    . Иначе после «создал витрину и передумал» в общем каталоге
    оставалась бы пустая запись-дубль. Исключение: если к записи уже успели
    привязать борт Ангара, она остаётся (и дальше живёт как обычная каталожная —
    следующая витрина её при удалении уже не унесёт).

Если убрать запись не удалось (например, база временно недоступна), витрина всё
равно удаляется, а платформа сообщает об оставшейся записи — её можно удалить
вручную в справочнике — см. Источники моделей.

Обратный порядок запрещён: модель со связанной витриной не удаляется —
платформа отвечает отказом и называет адрес витрины. Иначе витрина осталась бы
без названия и характеристик, а её публичная страница — «не найдено». Правило
одинаково для каталожной записи и для вашей собственной опубликованной модели:
сначала витрина, потом модель.

Что попадает в аудит

Создание, правка, удаление, публикация и снятие с публикации, а также
добавление и удаление файлов пишутся в
журнал действий (тип сущности «Витрина модели»).
Отдельно записываются отклонённые загрузки — имя файла, размер и причина
отказа (тип «Файл витрины»): по ним видно, что именно не пропустила проверка.