DZ Hub — MVP¶
Статус: договорились 2026-10-02. Здесь только то, что уже обсудили и приняли. Открытые вопросы собраны в конце.
Зачем¶
Сейчас аэродром работает через Telegram-группу и Excel. Анонс дня пишут в группу, люди ставят 👍, а чтобы узнать, есть ли место во взлёте, нужно спрашивать организатора.
DZ Hub делает это видимым для всех: парашютист сам видит прыжковый день и взлёты и записывается, а организатор управляет всем из одной панели.
Принципы¶
- Система подсказывает, организатор решает. Допуск к прыжку даёт только организатор, он же несёт ответственность. Система лишь предупреждает по данным, которые у неё есть, и никогда не блокирует сама.
- Данным системы нельзя доверять на 100%. Человек мог не пользоваться системой, данные могли устареть. Интерфейс показывает, насколько данные свежие.
- Работает, даже если человек не зарегистрирован. Организатор сам добавляет любого (например, тандем-пассажира с улицы).
- Всё по факту, никакой автоматики с людьми. Нет листа ожидания: если мест нет, человек ждёт следующий взлёт и записывается на него. Человек может проспать, поэтому решения принимаются на месте.
- Сайт и Telegram на равных. Это два входа в одну систему, вся логика живёт в бэкенде.
Части системы¶
Сайт ─┬─ кабинет парашютиста ──┐
└─ панель организатора ──┼──► Бэкенд (API) ──► База данных
Telegram-бот ──────────────────┘ └──► Уведомления (Telegram, email)
Словарь¶
| Термин | В коде | Что это |
|---|---|---|
| Прыжковый день | jump_day |
День полётов: дата, время начала, разрешённые типы прыжков |
| Взлёт | load |
Один подъём самолёта в рамках прыжкового дня |
| Самолёт | aircraft |
Название, бортовой номер, количество мест |
| Группа на борту | load_group |
Кто прыгает вместе: соло, тандем, AFF |
| Тип прыжка | jump_type |
solo, tandem, aff |
| Права | role |
Что человек может делать в системе |
| Допуск | qualification |
Что человек может делать в небе |
Права и допуски¶
Это разные вещи: у одного человека одна роль в системе, но может быть несколько допусков.
| Права в системе | Допуски |
|---|---|
| Организатор: управляет днями, взлётами, допуском | Тандем-мастер |
| Парашютист: записывается, видит свой кабинет | Инструктор AFF |
| Коуч | |
| Видеооператор | |
| AFF-студент | |
| AFF соло (прошёл уровни AFF, прыгает сам, ещё без лицензии) | |
| Соло (с лицензией) |
Допуск человек может указать сам, но в силу он вступает только после подтверждения организатором.
Истории MVP¶
- Регистрация и вход. Через Telegram или по email. У человека один аккаунт с несколькими способами входа.
- Права и допуски, как в таблице выше.
- Прыжковый день. Организатор создаёт день: дата, время начала, разрешённые типы прыжков (например, сегодня только тандемы и соло). Участники получают уведомление.
- Запись на день («я приеду») с выбором типа прыжка: кнопками под анонсом в Telegram или на сайте. Доступны только типы, разрешённые в этот день.
- Самолёты. Организатор заводит самолёт в админке. Количество мест — настраиваемое.
- Взлёт. Организатор создаёт взлёт в рамках дня с выбранным самолётом, парашютисты записываются на него.
Запись на взлёт¶
- Режим задаётся на прыжковый день, но для отдельного взлёта его можно поменять:
- автоматический: место сразу подтверждено, если оно есть;
- с подтверждением: запись ждёт решения организатора.
- Если мест нет, записаться нельзя.
- Организатор в любом режиме может снять человека или перенести на другой взлёт.
- Места занимает группа: соло — 1, тандем — 2 (+1 с видеооператором), AFF — студент и 1–2 инструктора.
Авто: запись ──(есть места)──► подтверждена
С подтверждением: запись ──► ждёт решения ──► подтверждена / отклонена
Схема сущностей¶
erDiagram
aircraft ||--o{ load : "летит"
jump_day ||--o{ load : "состоит из"
jump_day ||--o{ day_attendance : "«я приеду»"
user ||--o{ day_attendance : ""
load ||--o{ load_group : "на борту"
load_group ||--o{ load_participant : ""
user |o--o{ load_participant : "может быть без аккаунта"
user ||--o{ qualification : "допуски"
Не входит в MVP¶
Оплата, учёт снаряжения и переукладок, погода, видео, статистика прыжков.
Открытые вопросы¶
- Сколько мест в самолёте и сколько взлётов в день на нашем аэродроме (в системе это всё равно настраивается).
- Что лежит в Excel организатора: стоит посмотреть вместе с ним.
- Кто записывает тандем-пассажиров и AFF-студентов: организатор, инструктор или они сами?
- Как показывать организатору предупреждения о допусках, если данных мало.
На будущее¶
Идеи и решения, которые обсудили, но отложили.
Очная верификация на дропзоне¶
В профиле человек пишет о себе что хочет: уровень, опыт, допуски. Но на каждой дропзоне он обязательно проходит очную проверку: пришёл, показал логбук и документы, организатор подтвердил анкету. Только после этого он числится на дропзоне со своим уровнем, количеством прыжков и ролями.
- Флоу на сайте: парашютист «стучится» в дропзону → его уровень и роли на этой дропзоне ждут подтверждения → организатор проходит визард ревью парашютиста.
- Дропзона хранит копию данных на момент проверки, а не ссылку на профиль. Если человек потом поменяет профиль, на дропзоне останутся проверенные значения; можно подсветить «профиль изменился после проверки».
- Модель профиля это уже учитывает: в
skydiver_profilesиskydiver_ratingsхранятся только заявленные данные, никаких полей «подтверждено».
Проверка, приезд и запись во взлёт¶
Обсудили 2026-10-04. Главный принцип: организатор видит только исключения. Всё, что система может проверить сама, проходит молча. В панель попадает только то, где нужно решение человека, и всегда с причиной.
Первый приезд Прыжковый день Взлёт
───────────── ────────────── ─────
«стучусь» в DZ → «я приеду» → запись
│ │ │
визард проверки: отметка «на месте»: все условия ок? ──да──► подтверждено
профиль, допуски, 1 тап организатора │нет
логбук, предупреждения или QR на стойке ▼
│ манифеста ждёт организатора
approve / approve с (с причиной: «нет допуска AFF»,
правками / reject «перерыв 120 дней»)
│
снимок данных
сохраняется на DZ
- Проверка при первом приезде. Человек «стучится» в дропзону. Проверка проходит очно,
визард только помогает: показывает профиль, допуски, логбук и предупреждения. В конце
организатор выбирает approve, approve с правками или reject. При правках исправленные
значения попадают в снимок дропзоны, профиль человека не меняется. В схеме это таблица
dropzone_members: статус, снимок данных, кто проверил и когда. - Отметка «на месте». Запись на прыжковый день ещё не значит, что человек приехал.
Отметка должна быть ненавязчивой: один тап организатора в списке дня или QR-код на стойке
манифеста. Геолокацию не используем: она навязчивая и ненадёжная. В схеме это время
отметки в записи на день (
day_attendance). - Автоподтверждение во взлёт. Срабатывает, только если всё сошлось: человек проверен на этой дропзоне, отмечен сегодня, у него есть допуск под этот тип прыжка, нет долгого перерыва. Иначе запись ждёт организатора и показывает причину. Режим «только через организатора» остаётся настройкой дня или взлёта (см. «Запись на взлёт»).
Связь типа прыжка и роли в логбуке¶
Сейчас тип прыжка и роль в записи логбука не связаны: можно записать тандем с ролью «коуч». Идея — разрешать только подходящие роли. Черновик таблицы (нужно проверить):
| Тип прыжка | Допустимые роли |
|---|---|
aff, iad |
студент, инструктор, видеооператор |
static_line |
студент |
tandem |
пассажир, тандем-инструктор, видеооператор |
belly, freefly, tracking, wingsuit |
участник, студент, коуч, видеооператор |
hop_and_pop, accuracy |
участник, студент |
crw, canopy_piloting |
участник, студент, коуч |
other |
любая |
- Тип не указан → роль любая. PATCH проверяется по итоговому состоянию.
- Фронтенд берёт таблицу со справочного эндпоинта
GET /api/v1/logbook/jump-types(один источник правды — бэкенд). - Открытые вопросы: правильность таблицы; разрешать ли роль без типа; нужен ли токен для справочника.
Наземные и лётные роли¶
Укладчик, риггер, пилот — не обязательно парашютисты, поэтому им не нужен уровень licensed.
Когда понадобятся, правило «допуск требует licensed» станет зависеть от роли.
Расхождения с USPA¶
Сравнили профиль, допуски и логбук с документами USPA. Нашли 10 расхождений:
главное — licensed вместо классов лицензий A–D. Список и предложение по порядку —
в USPA_GAPS.md, справка по правилам USPA — в USPA.md.
Слежение за новыми редакциями USPA¶
Запланированный агент раз в месяц проверяет uspa.org. Если вышла новая редакция SIM или IRM, он создаёт в Trello карточку «Обновить справочник»: сверить справочник терминов и USPA_GAPS.md с новой редакцией.
Подсказки по куполу¶
Отдельный инструмент: по весу парашютиста, числу прыжков и размеру купола подсказывать,
подходит ли купол по нагрузке (таблица минимальных размеров USPA SIM 4-3 — в
USPA.md). Для этого понадобится размер основного купола числом. Пока в логбуке
снаряжение — только текстовое поле canopy (решено 2026-10-03, карточка «Add USPA-required
fields to the logbook»).