Продукт: Академия нейроортопедии, сообщество для врачей. ТЗ: Сейчас есть черновой продукт:бот на Node.js/Telegraf, сервер на Express, Postgres, WebApp как PWA (ванильный JS + большой style.css) и статичная админка. Часть логики уже есть «в коде», но: * безопасность не доведена (секреты в коде, нет проверки initData); * WebApp и API местами живут в разных реальностях; * ЮKassa/платежи и Bitrix24 не подключены; * подписки, «Мой путь», акции, анонсы, автоматизации и аналитика реализованы только частично / не реализованы. Ниже — список того, что нужно доделать. 1. Привести в порядок текущий прототип: 1. Настроить безопасность: * вынести все токены/пароли в .env, перевыпустить скомпрометированные; * добавить проверку Telegram WebApp initData на бэке; * на основе initData выдавать JWT и использовать его во всех API. 2. Очистить архитектуру: * выбрать одну актуальную связку /webapp/index.html + app.js + style.css; * удалить/архивировать дубликаты (app — копия.js, старые index и т.п.); * привести пути статики и service worker к рабочему виду (PWA реально должна подниматься). 3. БД и миграции: * зафиксировать схему Postgres (users, subscriptions, content, progress, favorites, events, offers, payments и т.д.); * оформить миграции + seed с тестовыми данными. 4. API под текущий фронт: * GET /api/user — профиль + статус подписки; * GET /api/content — список контента с фильтрами по типу/тегам; * GET/POST /api/favorites — избранное и «посмотреть позже»; * GET/POST /api/progress — прогресс просмотра; * GET /api/events, GET /api/offers — мероприятия и спецпредложения; * /api/admin/* — базовые CRUD для контента/мероприятий/офферов (с проверкой роли admin). 5. WebApp: * подвязать существующие экраны к реальным API (вместо демо-массивов); * настроить работу с Telegram WebApp (back-button, закрытие, тема) и fallback при открытии в браузере. 6. Админка: * сделать авторизацию (логин+пароль+JWT или вход по токену из бота); * подключить HTML-админку к API (контент, пользователи, события, offers); * привести использование CSS-переменных (убрать --space-*, --bg-color и т.п. или объявить их). 2. Доделать: 1. Бот: сценарии и команды из ТЗ: * полноценный онбординг /start с опросом (специализация, город, e-mail) и сохранением/обновлением в БД; * реализовать /status, /renew, /promo, /support с реальными данными (подписка, продление, активные акции, контакты поддержки); * сценарий «Вопрос по обучению»: пошаговый диалог, запись в БД, уведомление админам. 2. Бот-админка: * команды/меню для рассылок, ручной выдачи/продления подписки, просмотра статуса конкретного пользователя. 3. WebApp: разделы и логика из ТЗ 1. Навигация и разделы: * привести WebApp к структуре ТЗ: Домой / Каталог / Избранное / Сообщество; * внутри: Курсы, Эфиры/Разборы, АНБ FM, Практические материалы, Актуальные материалы, Карта мероприятий, Ограниченное предложение, Личный кабинет, Поддержка, О сообществе, Чаты, Мои материалы, Мой путь. 2. Поиск и фильтры: * поиск по контенту (название/описание/теги); * фильтры и сортировка по типу, дате, направлениям (неврология, реабилитация и т.п.). 3. Контент-гейты по подписке: * разграничение доступа (гость / подписчик / платный курс); * проверка подписки через API при открытии контента; * общий экран «нет доступа» с кнопками «Оформить / продлить». 4 Разделы по сообществу: * «О сообществе» (правила, ценности, FAQ по подписке и обучению); * «Чаты» (список чатов со ссылками); * «Мои материалы» (избранное, «посмотреть позже», практические материалы); * «Мой путь» с уровнями (Понимаю - Связываю - Применяю - Систематизирую - Делюсь) и прогрессом по данным из БД. 5. Карта мероприятий и ограниченное предложение: * «Карта мероприятий» (онлайн/офлайн события + PDF/список, редактируемый из админки); * «Ограниченное предложение» — список спецпродуктов с описанием и кнопкой «Оставить заявку» (форма или переход к координатору). 6. Принять решение по стеку фронта: * либо оставить текущий PWA на ванильном JS и доводить его; * либо переписать WebApp на React/Next.js, как в исходном ТЗ (с теми же экранами и API). 4. Подписки и платежи (в том числе ЮKassa) 1. Подписки: * модель тарифов и подписок (1/3/12 мес, статус, даты, автопродление); * API для получения статуса и создания/продления подписки; * экран «Подписка» в WebApp + логика /status//renew в боте. 2. ЮKassa и платежи: * подключить ЮKassa (ключи в .env, создание платежа, webhook); * реализовать сквозной сценарий: выбор тарифа/курса - создание платежа - успешный callback - обновление подписки/доступа; * по возможности — интеграция с Telegram Payments / CloudPayments согласно ТЗ (минимум один провайдер должен реально работать). 5. Интеграция с Bitrix24 (у нас есть интеграторы которые помогут). 1. Сделки и контакты: * при успешной оплате создавать/обновлять сделку в воронке «Telegram»; * заполнять поля: Telegram ID, e-mail, тариф/продукт, сумма, статус, источник. 2. Вебхуки и роботы: * обработка вебхуков Bitrix24 для смены статуса (оплачено/отменено и т.п.); * базовые роботы: приветствие, напоминание о продлении. 6. Автоматизация и аналитика из ТЗ 1. Автоматизация: * архивировать неактивных пользователей (>60 дней) с пометкой в БД и синхронизацией с Bitrix; * обработка дублей по e-mail/Telegram ID (merge или выбор основного); * фильтр спам-анкет и автоархив. 2. Уведомления: * напоминания по событиям/эфирам (–24 часа, –1 час, старт) через бота; * простая рассылка из админки/бот-админки по сегментам. 3. Аналитика: * сбор событий: открытие страниц, поиск, добавление в избранное, просмотры, покупки (WebApp + бот); * хранение базовых метрик (хотя бы на уровне сырых событий); * экспорт в CSV/Google Sheets для дальнейшего BI-анализа.