13 Commits

Author SHA1 Message Date
Umbrix Dev
5677b48227 🔓 Разрешить n8n переходы без Telegram ID
 Что сделано:
- app/page.tsx: Проверка source/utm_source параметров (n8n, chat, from_n8n)
- app/plans/page.tsx: Аналогичная проверка для 3-step flow
- app/api/create-user/route.ts: Разрешение создания без telegramId если source=n8n

🔓 ИСКЛЮЧЕНИЯ для n8n:
- ?source=n8n
- ?utm_source=n8n
- ?utm_source=chat
- ?from_n8n=true

🎯 ЛОГИКА:
1. Переход через Telegram Mini App → требуется tgUser.id 
2. Переход из n8n (прямая ссылка) → НЕ требуется, генерируется временный ID 
3. Переход из браузера напрямую → блокируется 

💡 Для временных ID используется Date.now() но только если fromN8n=true
2026-02-09 07:17:01 +03:00
Umbrix Dev
806b668a6d 🔒 Блокировка trial без Telegram ID
 Что сделано:
- app/page.tsx: Добавлена проверка tgUser?.id перед созданием trial
- app/plans/page.tsx: Добавлена валидация user?.id в createUser()
- app/api/create-user/route.ts: Серверная валидация telegramId (400 если отсутствует)
- types/telegram.ts: Расширен TelegramWebApp интерфейс (MainButton, BackButton, HapticFeedback)
- types/telegram.d.ts: Глобальная декларация Window.Telegram
- hooks/useTelegramWebApp.ts: Упрощено - использует (window as any)

 ПРОБЛЕМА (user_... имена):
Имена вида user_1770605873419 появляются когда Telegram WebApp не передает данные пользователя.
Теперь система блокирует создание trial/подписки если нет tgUser.id

 РЕШЕНИЕ:
Приложение должно быть открыто ВНУТРИ Telegram Mini App, а не в браузере!
Если пользователь видит user_..., значит открыто не через бота.
2026-02-09 06:38:35 +03:00
Umbrix Dev
0d2d862d44 fix: auto-refresh subscription after creation + back button already exists 2026-02-09 04:56:14 +03:00
Umbrix Dev
b284d01e14 fix: bot username Chat_n8n_bot → Chat_8n8_bot (правильное имя) 2026-02-09 04:01:49 +03:00
Umbrix Dev
f61a029c3a fix: bot username Dorod_vps_bot → Chat_n8n_bot (referral links) 2026-02-09 03:08:27 +03:00
Umbrix Dev
afeb62cdb9 fix: скрыть реферальную ссылку без подписки (убран DEMO fallback) 2026-02-09 02:20:19 +03:00
Umbrix Dev
cd6167b381 fix: Старт 99₽, исправлена реферальная ссылка (полный username вместо split) 2026-02-08 23:54:30 +03:00
Umbrix Dev
33b20b979f 🔒 Аудит: безопасность, TypeScript, UI, BottomNav
Безопасность:
- proxy: белый список путей (только /sub/*), POST заблокирован
- console.log заменён на logger (утечки URL/данных)
- OnboardingFlow: убраны --tg-theme-* (не существуют в проекте)

TypeScript (0 ошибок):
- tsconfig target es5→es2017 (regex /u flag fix)
- layout.tsx: viewport перенесён в metadata (Next.js 13.5)
- telegram-webhook: fix text possibly undefined
- hooks/useTelegramWebApp: fix Object possibly undefined
- types/telegram: убрана дублирующая Window декларация

UI:
- BottomNav: новый компонент (Назад/Главная/Помощь)
- safe-area-bottom CSS класс добавлен в globals.css
- dashboard: spacer h-20, toast поднят над BottomNav
- OnboardingFlow: цены 149/249/350₽ (были 200/350/500₽)

Очистка:
- page_NEW.tsx удалён локально (не был в git)
2026-02-08 18:59:02 +03:00
Umbrix Dev
b43eb3c724 Реферальная система: БД, API, UI
**База данных:**
- Создана таблица referrals в MariaDB (193.168.175.128)
- Поля: username, referrer_username, referral_count, bonus_days_earned
- Foreign keys к users таблице с CASCADE/SET NULL

**API Endpoints:**
- POST /api/referral/track - отслеживание новых рефералов
  - Автоматический расчёт бонусов: +7 дней за каждого
  - Milestone bonus: +30 дней за каждые 5 рефералов
  - Обновление expire даты реферера в users таблице

- GET /api/referral/stats?username=xxx - статистика
  - Возвращает количество рефералов, бонусные дни
  - Список приглашённых пользователей со статусами

**Интеграция:**
- POST /api/create-user принимает referrerId параметр
- Автоматический вызов /api/referral/track после создания юзера
- Параметр ref из URL при активации trial

**UI:**
- /app/referral/page.tsx - страница статистики
  - 3 KPI карточки: рефералов, бонусных дней, milestone
  - Реферальная ссылка с кнопкой копирования
  - Список приглашённых юзеров с иконками статуса
  - Инфоблок о механике начисления бонусов

**ReferralModal обновлён:**
- Добавлена кнопка «Моя статистика» → /referral
- Перенос Share/Copy кнопок на второй/третий план

**Зависимости:**
- mysql2@3.16.3 - для подключения к MariaDB

**Логика бонусов:**
- +7 дней за каждого успешного реферала
- +30 дней бонус за каждые 5 рефералов (milestone)
- Автоматическое обновление expire поля в users таблице
- Сохранение всех бонусов в bonus_days_earned
2026-02-06 20:51:40 +03:00
Umbrix Dev
00bfda8748 🔧 Используем ENV для имени Telegram бота вместо хардкода
- Заменены все хардкоды umbrix_bot на process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME
- Fallback на Dorod_vps_bot если ENV не задана
- Теперь реферальные ссылки динамически генерируются: t.me/${botUsername}?start=ref_${userId}
- Обновлено 3 места: shareReferralLink(), ReferralModal props, onCopy callback
2026-02-06 04:52:05 +03:00
Umbrix Dev
6cb9335955 Setup Wizard: пошаговая настройка после активации подписки
- Выбор устройства (💻 Компьютер / 📱 Телефон)
- Проверка наличия приложения
- Выбор локаций для Extended тарифа (3 из списка)
- Показ ссылки/QR кода
- Автоматическое открытие после активации Trial
- Прогресс бар для отслеживания шагов
2026-02-05 12:11:55 +03:00
Umbrix Dev
0c49f27e76 📚 Добавлены обучающие комментарии в код + PROJECT-STRUCTURE.md 2026-02-04 05:25:10 +03:00
Umbrix Dev
e06bdc308f 🏠 Page: Главная страница - статус подписки и действия 2026-02-04 05:18:18 +03:00