Skip to content

Этапы реализации

Этап 1: Основа

Цель: Базовая инфраструктура, аутентификация, управление пользователями

  • [ ] Настройка проекта (монорепозиторий, конфигурации)
  • [ ] Настройка базы данных со схемами
  • [ ] Аутентификация (JWT, refresh токены)
  • [ ] Регистрация/вход пользователей
  • [ ] Базовый RBAC

Этап 2: Ядро MLM

Цель: Система партнёров, отслеживание рефералов, управление деревом

  • [ ] Сущность партнёра с closure table
  • [ ] Генерация реферальных ссылок
  • [ ] Отслеживание атрибуции (cookies)
  • [ ] Процесс регистрации партнёра
  • [ ] Данные для визуализации дерева

Этап 3: Движок комиссий

Цель: Расчёт комиссий, балансы, базовые выплаты

  • [ ] Конфигурация комиссионного плана
  • [ ] Калькулятор Unilevel-комиссий
  • [ ] Распределение двойного вознаграждения
  • [ ] Управление балансами
  • [ ] Процесс запроса выплаты

Этап 4: Модуль инвестиций

Цель: Инвестиционные стратегии, визард участия

  • [ ] Каталог стратегий
  • [ ] Многошаговое участие
  • [ ] Инвестиционный портфель
  • [ ] Триггеры комиссий

Этап 5: Модуль электронной коммерции

Цель: Каталог товаров, корзина, оформление заказа, заказы

  • [ ] Каталог товаров
  • [ ] Управление корзиной
  • [ ] Процесс оформления заказа
  • [ ] Интеграция платежей
  • [ ] Управление заказами
  • [ ] Триггеры комиссий

Этап 6: Система рангов

Цель: Ранги, прогрессия, требования

  • [ ] Определения рангов
  • [ ] Правила квалификации
  • [ ] Отслеживание прогресса
  • [ ] Бонусы за ранг

Этап 7: Администрирование и финализация

Цель: Панель администратора, KYC, уведомления

  • [ ] Панель суперадминистратора
  • [ ] Процесс KYC
  • [ ] Email-уведомления
  • [ ] Дашборд аналитики

Этап 8: Тестирование и запуск

Цель: Тестирование, оптимизация, развёртывание

  • [ ] Интеграционное тестирование
  • [ ] Нагрузочное тестирование
  • [ ] Аудит безопасности
  • [ ] Развёртывание в продакшн

Мониторинг

Проверки работоспособности

typescript
// NestJS Terminus для проверок работоспособности
@Controller('health')
export class HealthController {
  constructor(
    private health: HealthCheckService,
    private db: PrismaHealthIndicator,
  ) {}

  @Get()
  check() {
    return this.health.check([
      () => this.db.pingCheck('database'),
    ]);
  }

  @Get('ready')
  ready() {
    return this.health.check([
      () => this.db.pingCheck('database'),
      // Добавить проверку pg-boss
    ]);
  }
}

Ключевые метрики для отслеживания

МетрикаИсточникПорог оповещения
Время ответа API (p95)Логи приложения> 2с
Количество неудачных заданийАрхив pg-boss> 10/час
Задержка обработки комиссийВозраст заданий в очереди> 5 мин
Подключения к БДPostgreSQL> 80% пула
Уровень ошибок (5xx)HTTP-логи> 1%

Простая стратегия логирования

typescript
// Структурированное JSON-логирование с Pino
{
  "level": "info",
  "time": "2024-01-15T10:30:00Z",
  "requestId": "abc-123",
  "userId": "user-456",
  "action": "commission.calculated",
  "data": { "amount": 150.00, "partnerId": "partner-789" }
}

Стек мониторинга для продакшна

  • Метрики: Prometheus + Grafana (self-hosted) или Datadog
  • Логи: Структурированный JSON в CloudWatch Logs или Loki
  • Оповещения: Grafana Alerting или PagerDuty для критических порогов
  • Трассировка: Correlation ID во всех запросах для отладки многослойных операций

Связанные документы