commit c327618e89c6ceb7f6af29384137f57eb22f9e2d Author: Kavalar Date: Wed Sep 23 15:28:27 2026 +0300 Initial commit: ТЗ площадки «Создано молодыми» diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bf3f450 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +.venv/ +venv/ +env/ + +# Environment / secrets +.env +.env.* +*.local + +# Logs / temp +*.log +*.tmp +.cache/ + +# IDE / OS +.idea/ +.vscode/ +.DS_Store +Thumbs.db + +# Local private data (никогда не коммитим) +private/ +secrets/ diff --git a/docs/tz_sozdano_molodymi.md b/docs/tz_sozdano_molodymi.md new file mode 100644 index 0000000..8b056c7 --- /dev/null +++ b/docs/tz_sozdano_molodymi.md @@ -0,0 +1,192 @@ +# ТЕХНИЧЕСКОЕ ЗАДАНИЕ +## на разработку электронной площадки «Создано молодыми» (региональный уровень) + +Версия 1.0 · Сентябрь 2026 г. + +--- + +## 1. Общие сведения + +**1.1. Наименование системы:** электронная площадка (витрина-маркетплейс) «Создано молодыми» — региональный сегмент федерального проекта поддержки молодых предпринимателей. + +**1.2. Заказчик:** оператор проекта (НКО / региональное отделение Росмолодёжи / ЦМИТ — уточняется). + +**1.3. Назначение:** единая площадка, на которой молодые предприниматели региона размещают товары и услуги, а покупатели их находят, сравнивают и приобретают. + +**1.4. Цели:** +- снизить порог входа молодых брендов на рынок (витрина + канал продаж); +- дать жителям региона удобный способ «покупать у своих»; +- накопить актуальную базу региональных молодых брендов для программ поддержки и офлайн-мероприятий. + +**1.5. Целевая аудитория:** +- продавцы: самозанятые, ИП, микробизнес в возрасте 14–35 лет, зарегистрированные/производящие в регионе; +- покупатели: жители региона (B2C), туристы (сувениры), корпоративные заказчики (B2B, этап 3). + +**1.6. Термины:** +- «Бренд» — профиль продавца на площадке; +- «Позиция» — карточка товара или услуги; +- «GMV» — товарооборот, прошедший через площадку. + +**1.7. Ограничение:** площадка — витрина агентского типа. Продавец остаётся продавцом по закону; площадка на этапе 2 выступает агентом по приёму оплаты. + +--- + +## 2. Роли пользователей + +1. **Гость** — просмотр каталога, брендов, подборок без регистрации. +2. **Покупатель** — избранное, заказы/заявки, отзывы (после покупки). +3. **Продавец** — заявка на участие, кабинет бренда, управление товарами/услугами, заказами, аналитика. +4. **Модератор** — проверка заявок брендов и карточек, работа с жалобами, контент-подборки. +5. **Администратор** — пользователи, роли, справочники, настройки, финансовые операции (этап 2). +6. **Партнёр (Росмолодёжь)** — read-only доступ к сводной аналитике и реестру брендов. + +--- + +## 3. Функциональные требования + +### 3.1. Регистрация и верификация продавца (FR-01) +- Регистрация покупателя: email/телефон, вход через VK ID и «Госуслуги» (если доступно) — этап 2. +- Регистрация продавца — многошаговая анкета: ФИО, дата рождения, статус (самозанятый/ИП/юрлицо), ИНН, регион/город, ссылки на соцсети, описание деятельности, чек-лист подтверждений (выписка/справка, фото производства). +- Заявка попадает в очередь модерации. Статусы: «на проверке», «одобрен», «на доработке», «отклонён» с причиной. +- Критерии одобрения: возраст 14–35 (или команда основателей), регистрация/производство в регионе, соответствие продукции правилам площадки (запрещённая продукция — по реестру). + +### 3.2. Каталог и витрина (FR-02) +- Каталог с разделами «Товары» и «Услуги»; категории — двухуровневый деревовидный справочник (настраивается админом). +- Фильтры: категория, цена, город/район, рейтинг, наличие, «новинки», «участники грантов». +- Поиск: по названию, бренду, категории; нечёткий поиск, подсказки (suggest). +- Сортировки: популярность, новизна, цена, рейтинг. +- Карточка позиции: галерея фото (до 10), название, цена, бренд, описание, характеристики, наличие, способы получения (самовывоз/доставка), кнопка «В корзину» / «Записаться» (для услуг). +- Страница бренда: логотип, обложка, история (до 3000 знаков), регион, соцсети, все позиции, рейтинг, отзывы, знак «Участник проекта Росмолодёжи». + +### 3.3. Корзина, заказы, оплата (FR-03) +- Этап 1 (MVP): корзина формирует «заявку» — заказ с контактами покупателя, продавец получает уведомление и подтверждает; оплата напрямую продавцу (наличные/перевод/СБП по договорённости). Площадка фиксирует сделку для статистики. +- Этап 2: онлайн-оплата через платёжный агрегатор (ЮKassa и аналог) по агентской схеме: сплит-платежи, зачисление продавцу за вычетом комиссии, возвраты, чеки (54-ФЗ), реестр выплат в админке. +- Статусы заказа: «новый», «подтверждён», «оплачен», «собран», «передан в доставку», «выполнен», «отменён», «возврат». +- Личный кабинет покупателя: история заказов/заявок, избранное, повтор заказа. + +### 3.4. Блок услуг (FR-04) +- Карточка услуги: формат (онлайн/офлайн), длительность, цена/«от», график доступности. +- Запись: выбор слота из календаря продавца; продавец подтверждает слот; напоминания за 24 ч. +- Этап 2: предоплата/депозит через агрегатор. + +### 3.5. Отзывы и рейтинг (FR-05) +- Отзыв доступен только после подтверждённого заказа (защита от накруток); оценка 1–5 + текст + фото. +- Рейтинг бренда = среднее оценок позиций; ответ бренда на отзыв. +- Модерация отзывов: жалоба → проверка модератором. + +### 3.6. Личный кабинет продавца (FR-06) +- Управление профилем бренда (публикация после модерации изменений). +- CRUD позиций: черновик → отправка на модерацию → «опубликовано» / «отклонено». +- Склад: остатки, «под заказ» (срок изготовления). +- Заказы: лента входящих, смена статусов, чат/контакты с покупателем (этап 1 — контакты в заявке; этап 2 — встроенный чат или переход в Telegram-бот). +- Аналитика: просмотры, переходы, добавления в избранное, конверсия в заявку/заказ, выручка (этап 2). +- Уведомления: email + Telegram-бот (подписка по желанию). + +### 3.7. Контент-разделы (FR-07) +- Подборки и подборки-лендинги к сезонам/событиям («Подарки к 8 марта», «Сделано в районе X») — собираются модератором вручную. +- Раздел «Истории брендов» (статьи/интервью). +- Баннерная зона на главной (управляется из админки). +- Новости проекта и анонсы офлайн-ярмарок с формой заявки на участие. + +### 3.8. Модерация и админка (FR-08) +- Очереди: заявки брендов, карточки, отзывы (по жалобам), жалобы на товары. +- Массовые действия, фильтры, назначение ответственного модератора. +- Справочники: категории, регионы/города, пункты выдачи, запрещённая продукция, комиссии. +- Пользователи и роли; журнал действий (audit log). +- Экспорт реестра брендов в XLSX/CSV; read-only дашборд для партнёра Росмолодёжи (FR: отчёт по брендам, регионам, категориям). + +### 3.9. Уведомления (FR-09) +- Каналы: email (обязательно), Telegram-бот (опционально), push (этап 2). +- Триггеры: смена статуса заявки/заказа, новый отзыв, напоминание о записи, публикация, итоги модерации. + +### 3.10. Аналитика заказчика (FR-10) +- Дашборд: число брендов (всего/активных), позиций, заказов, GMV, конверсия, география. +- Источники трафика (интеграция с Яндекс.Метрикой), воронка каталог → карточка → корзина → заказ. + +--- + +## 4. Модель данных (основные сущности) + +- **User** — id, роль, ФИО, телефон, email, дата рождения, регион, дата регистрации. +- **Brand (SellerProfile)** — user_id, название, логотип, обложка, история, статус верификации, статус ИП/самозанятости, ИНН, город, соцсети, рейтинг, знаки («грантополучатель» и т.п.). +- **Category** — id, parent_id, название, тип (товар/услуга), порядок сортировки. +- **Product** — brand_id, category_id, название, описание, цена, фото[], атрибуты (JSON), остаток, срок изготовления, статус модерации. +- **Service** — brand_id, категория, формат (онлайн/офлайн), длительность, цена, слоты расписания. +- **Order / OrderItem** — покупатель, бренд(-ы), позиции, сумма, статус, способ получения, адрес/ПВЗ, способ оплаты, комиссия площадки (этап 2). +- **Review** — order_id, оценка, текст, фото[], ответ бренда, статус публикации. +- **PickupPoint** — название, адрес, часы работы, партнёр (ТЦ/вуз/МИР), активность. +- **ModerationRequest** — сущность (заявка/карточка/отзыв), решение, комментарий, модератор, дата. +- **Payout** (этап 2) — бренд, период, сумма, комиссия, статус выплаты. +- **Collection** — подборка: название, баннер, позиции[], даты публикации. + +Хранение медиа — объектное хранилище (S3-совместимое) с CDN; изображения — автоматическая генерация превью (несколько размеров). + +--- + +## 5. Интеграции + +1. Платёжный агрегатор (ЮKassa или аналог) — этап 2: платежи, сплит, возвраты, чеки 54-ФЗ, вебхуки. +2. Логистика — СДЭК API (расчёт доставки, ПВЗ, трек-номера) и/или Почта России — этап 2. Этап 1: самовывоз + «доставка по договорённости». +3. Telegram-бот — уведомления и (опционально) чат продавец↔покупатель. +4. Email-сервис (SMTP / Unisender-совместимый API). +5. Яндекс.Метрика + вебвизор; цели на воронку. +6. Федеральная площадка «Создано молодыми» — обмен каталогом (API/фид); этап 3, по соглашенованному формату. +7. СМС — оператор-агрегатор (этап 2, по необходимости). + +--- + +## 6. Нефункциональные требования + +- **Нагрузка:** 5 000 уникальных пользователей/день, до 200 одновременных сессий на MVP; горизонтальная масштабируемость — без ограничений на рост каталога. +- **Доступность:** 99,5% в рабочее время; мобильный трафик ≥ 70% — дизайн mobile-first, адаптив 360–1440 px. +- **Производительность:** время отклика страниц < 2 с при 95-м перцентиле; LCP < 2,5 с на мобильных. +- **Безопасность и 152-ФЗ:** хранение и обработка ПДн на серверах в РФ; согласия на обработку ПДн; разграничение ролей; журнал действий; резервное копирование ежедневно, хранение бэкапов 30 дней; HTTPS везде. +- **SEO:** ЧПУ, мета-теги, микроразметка Schema.org (Product, Organization, Review), карта сайта, индексируемые страницы брендов и подборок. +- **Требования к платформе:** веб-приложение (адаптив), без нативных приложений на MVP; рекомендуемый стек на выбор подрядчика — например, backend Python (Django/FastAPI) или PHP (Bitrix/1C-Битрикс как готовое ядро), PostgreSQL, React/Vue фронтенд. Готовый движок маркетплейса допускается при соответствии FR. +- **Доступность (a11y):** контраст по WCAG AA, alt-тексты, управление с клавиатуры. + +--- + +## 7. Требования к дизайну + +- Фирменный стиль: логотип и айдентика проекта «Создано молодыми» (предоставляет заказчик; использование — по соглашению с Росмолодёжью). +- UI-kit: типографика, цвета, состояния компонентов (кнопки, поля, карточки, бейджи верификации). +- 2 концепции главной страницы → 1 раунд правок → финальный макет; макеты ключевых страниц: главная, каталог, карточка товара, карточка услуги, бренд, корзина/заявка, кабинет продавца (3–4 экрана), админка (2–3 экрана). +- Прототип ключевых пользовательских сценариев до отрисовки UI. + +--- + +## 8. Этапы разработки и приёмка + +**Этап 0. Подготовка (2–3 недели):** аналитика, прототипы, дизайн-концепция, финальное ТЗ. Приёмка — утверждённые макеты. + +**Этап 1. MVP (10–12 недель):** FR-01, FR-02, FR-03 (заявки без онлайн-оплаты), FR-05, FR-06 (без аналитики продвинутой), FR-07, FR-08, FR-09 (email), FR-10 (базовый дашборд), SEO-база. + +**Этап 2. Маркетплейс (8–10 недель):** онлайн-оплата и агентская модель, доставка (СДЭК), Telegram-бот, аналитика продавца, push, чат, СМС. + +**Этап 3. Экосистема (по готовности):** B2B-витрина, обмен с федеральной площадкой, мобильное PWA, продвинутая аналитика. + +**Критерии приёмки этапа 1:** +1. Все функции MVP работают по сценариям приёмочного тестирования (UTP — 20+ сценариев: регистрация продавца, модерация, публикация карточки, оформление заявки, отзыв и т.д.). +2. 0 критических и высоких дефектов; средние — с планом устранения. +3. Нагрузочное тестирование: 200 одновременных пользователей без деградации. +4. Пентест-чеклист пройден (OWASP Top 10), уязвимости высокого риска устранены. +5. SEO-чеклист, адаптив 360/768/1440 px, скорость по п. 6. +6. Передана документация: админ-инструкция, руководство продавца, схема развёртывания, доступы. + +**Гарантийная поддержка:** 3 месяца с момента приёмки этапа (исправление дефектов бесплатно), далее — SLA-поддержка по отдельному договору. + +--- + +## 9. Команда и сроки (ориентир) + +- Продакт/аналитик — 0,5 ставки; дизайнер — 1 на этап 0; backend-разработчик — 1–1,5; frontend — 1; QA — 0,5; координатор контента/модерации — 1 (на стороне заказчика). +- Общий срок MVP: 3–4 месяца до запуска; этап 2 — +3 месяца. + +## 10. Открытые вопросы к заказчику (блокеры для старта разработки) + +1. Юрлицо-оператор и схема договоров с продавцами (публичная оферта агентская / договор оказания услуг). +2. Размер комиссии площадки (для этапа 2) и модель выплат. +3. Соглашение о бренде «Создано молодыми» и доступ к федеральному API/фиду. +4. Хостинг: собственный / облако в РФ (требование 152-ФЗ) — бюджет на инфраструктуру. +5. Кто наполняет контент на старте (30–50 брендов) — ответственный со стороны заказчика.