Перейти к содержанию

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, /admin API и административный 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.