Scope backend MVP¶
Акторы¶
- Гость вводит данные, видит прогресс расчёта, затем обязан зарегистрироваться для просмотра результата.
- Клиент управляет профилем, получает бесплатные факты, покупает подписку, читает разборы/прогнозы, ведёт цели и заказывает консультацию.
- Практик добавляется закрытым операционным процессом/seed-скриптом, управляет разрешённой частью профиля и заявками.
- Системные worker-процессы считают карты, вызывают AI, продлевают подписки, отправляют уведомления и сверяют платежи.
In scope¶
Идентификация и профиль¶
- passwordless OTP по e-mail через Resend до paywall; один flow создаёт нового пользователя либо открывает сессию;
- шестизначный код, TTL 10 минут, resend interval 60 секунд, максимум 5 попыток и rate limit по e-mail/IP;
- короткий access token и rotating HttpOnly refresh session; роли
clientиpractitioner; - имя, дата/время/место рождения, точность времени, координаты, IANA-таймзона;
- версия согласия на ПДн и пользовательских условий, дата/источник согласия;
- изменение исходных данных создаёт новую версию расчёта, а не переписывает историю.
Расчёты и бесплатный результат¶
- детерминированные JSON астрологии и заменяемых
numerology-pythagorean-v0,human-design-standard-v0,destiny-matrix-22-v0; - единый lifecycle
queued → running → succeeded|failed, повторные попытки и кэш по входному хэшу; - бесплатные факты: планеты/дома/аспекты, числа, тип/центры, арканы и короткие утверждённые подписи;
- базовые данные для визуализации; растровую/интерактивную карту рисует frontend;
- если точного времени нет, по принятому default считаются только нумерология и Матрица.
Подписка, трактовки и прогнозы¶
- paywall после регистрации; модель поддерживает несколько тарифов/цен, но в MVP активен один месячный RUB-тариф;
- сохранение способа оплаты с явным согласием и повторные списания;
- entitlement на разбор, единый маршрут, прогнозы и трекер;
- AI-генерация по сохранённым фактам через provider-agnostic port, стабильные оси, кэш и версионирование;
- прогноз день/неделя/месяц по отношениям, карьере, финансам и безопасной оси «самочувствие/забота о себе»;
- отмена автопродления, статусы past-due/expired и read-only история.
Цели и консультации¶
- цель или запрос, сфера, текст, срок, статус, check-in и результат;
- агрегированная статистика без утверждения причинно-следственной связи с прогнозами;
- публичный каталог одобренных практиков, карточка, фильтры, заявка и статусы;
- разовая оплата консультации; комиссия и расчёты с практиком после утверждения юридической схемы;
- история консультаций и ручное согласование времени через поля заявки/переходы статуса, без calendar integration, встроенного чата или раскрытия контактов в публичной карточке.
Операции¶
- транзакционные e-mail через Resend, пользовательские preferences и журнал доставки;
- server-side события воронки и UTM first/last touch;
- технические логи, метрики, outbox/retry и финансовая сверка без административного API;
- удаление/анонимизация по запросу с сохранением данных, которые законно нужны для финансового учёта.
Out of scope¶
- мобильное приложение, PWA и любой пользовательский frontend;
- административная панель целиком: UI, admin role,
/adminAPI и административный CRUD; - Telegram bot/linking/notifications, push, встроенный календарь, чат и видеосвязь;
- сегменты аудитории 1 и 3 из PRD, международный/мультиязычный запуск;
- товары, камни, талисманы, курсы, вебинары, реклама и B2B;
- синастрия, групповые консультации, геймификация, рефералы, loyalty, promo, чаевые и донаты;
- открытая регистрация и полностью автоматическая верификация практиков;
- собственное обучение ML-модели;
- медицинская, психологическая, юридическая или инвестиционная диагностика/рекомендация.
Нефункциональные требования¶
- одинаковый нормализованный ввод и версия алгоритма дают byte-stable JSON после канонической сериализации;
- натальные долготы сверяются минимум на трёх эталонах с расхождением менее 0,5°;
- денежные суммы хранятся в minor units либо
Decimal, но никогда неfloat; - webhooks, платежи, расчёты и генерации идемпотентны;
- секреты не попадают в БД, ответы API и логи; тело запросов с ПДн не логируется;
- все даты событий — UTC, пользовательские таймзоны — IANA ID, финансовые отчёты учитывают зону провайдера;
- доступ к данным клиента проверяется на уровне каждого service use case;
- AI-ответ всегда связан с версиями входа, промпта, provider/model snapshot и политики безопасности;
- финансовые переходы, provider events и автоматические повторные операции имеют audit trail.
Метрики пилота¶
Backend должен позволять считать: шаги воронки по UTM, conversion paywall→payment, M2/M3 renewal, CAC по каналу, выручку и LTV по когорте, долю пользователей с целями, заявки/оплаты/повторы консультаций и bypass-инциденты. Цели старого PRD (30–50 платящих, ≥40% повторов за 60 дней, ≥25% прогноз/дневник, bypass <40%, CAC ≤5 000 ₽ в одном канале) храним как пилотные ориентиры, а не технические SLA.