DaydreamMods
Подписки и права
Как тариф открывает сборки и что хранится у каждой подписки.
Подписка — строка в subscriptions: пользователь, тариф, статус, начало, конец, момент отмены.
Права — строки в plan_entitlements: пара тариф + сборка. Dreamer связан с тремя проектами. Тариф Warpgate — только с проектом Warpgate. Believer не связан ни с одним проектом, поэтому кабинет не показывает сборки и скачивание запрещено.
Список миров в коде не зашит. Опубликованный проект без entitlement никому не скачивается, но на витрине /projects виден.
Статусы
pending— счёт создан, ResultURL ещё не пришёл.active— оплата подтверждена,endsAtв будущем. Скачивание разрешено только для сборок этого тарифа.canceled— пользователь нажал отмену в кабинете. Доступ к файлам прекращается сразу, не «до конца оплаченного периода» отдельным флагом: статус уже неactive.expired— срок вышел. Отдельная джоба может выставлять этот статус; проверка скачивания всё равно требуетactive.payment_error— платёж не прошёл. Файлы не выдаются.
Автопродления нет. В кабинете строка «Следующая оплата» прямо говорит, что автопродление не подключено. Новый срок — новое оформление.
Открытие продаж
Ключ site_settings.sales_open_at, строка ISO. Пока серверное время меньше этой даты, /subscription рисует таймер и не показывает тарифы. Checkout на сервере тоже отказывается: «Продажи ещё не открыты».
У тарифа может быть своё поле plans.sales_open_at. Если оно в будущем, этот тариф отдельно закрыт, даже когда общая витрина уже открыта.
Что видит человек
На витрине порядок фиксирован логикой, не сеткой «шесть равных карточек»: Dreamer, вопрос про одну сборку, три одиночных тарифа, вопрос про поддержку, Believer и Sponsor. Кнопка Dreamer — «Погрузиться в мечту».
В кабинете «Мои сборки» — это не каталог студии, а миры текущей активной подписки.