# Qadam — Product Roadmap & Delivery Checklist

## Паспорт документа

- Статус документа: living document
- Актуально на: 28 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при изменении инженерного backlog, локального workflow или платформенного статуса
- Область применения: внутренний инженерный knowledge/rules/backlog слой проекта
- Связанные документы:
  - [Индекс документации](../README.md)
  - [Текущее состояние](../project/current-state.md)
  - [Roadmap](../project/roadmap.md)

> Живой документ. Обновляется после каждой завершённой фичи.
> Операционный source of truth по статусу платформы: [`../project/current-state.md`](../project/current-state.md), [`../project/roadmap.md`](../project/roadmap.md), [`../architecture/api-routes.md`](../architecture/api-routes.md).
> Статусы: `[ ]` не начато · `[~]` требует доработки / в работе · `[x]` готово
> Приоритеты: **P0** критично, блокирует запуск · **P1** важно · **P2** желательно

---

## 0. Vision & North Star

**Vision:** Qadam — единая точка входа для поиска, записи и оплаты дополнительного образования в Узбекистане. Соединяем родителей и учеников с лучшими школами, центрами и репетиторами.

**North Star (два показателя):**
- Количество успешно переданных лидов в месяц
- Конверсия: активный байер → передача лида

| Стадия | Ключевые метрики |
|--------|-----------------|
| MVP Phase A (Supply) | 800 активных продавцов · 5 000+ опубликованных айтемов |
| MVP Phase B (Demand) | CPL · Lead→Contact rate · CAC Seller · CAC Buyer |
| v1.0 | MRR (CRM SaaS) · MAU байеров · кол-во активных байеров |
| v1.5 | MAU мобильных приложений · CRM retention rate · кол-во лидов/мес |
| v2.0 | GMV · % продавцов на транзакционной модели · кол-во лидов/мес |

---

## 1. Монетизационная эволюция

| Версия | Модель | За что | Цена |
|--------|--------|--------|------|
| MVP | CPL | За каждый переданный лид | **$30 / лид** (фиксировано на год 1) |
| v1.0 | CPL + SaaS | Лиды + подписка на CRM | **$30 / лид + $15 / мес** (фиксировано на 2 года) |
| v2.0 переход | CPL+SaaS **или** Transaction | Выбор модели продавцом | Transaction: **10% комиссии** → лиды + CRM бесплатно |
| v2.0 long-term | Transaction only | % с каждой транзакции | **10%** |

Партнёр по эквайрингу: `TBD`

---

## 2. Текущее состояние (стартовая точка)

### ✅ Надёжный фундамент — не трогаем
- Split-репозитории `qadam-core` и `qadam-web` уже созданы и работают в production
- Auth core: регистрация, логин, refresh rotation, JWT dual delivery (web cookie / mobile body)
- Новый registration API: `check-availability`, `register/buyer`, `register/seller`, password reset, `add-buyer-role`
- Swagger/OpenAPI и versioned contract artifact
- Web-каталог уже работает на searchParams-based filters, SSR-prefetch и infinite scroll
- Reference data: subjects, locations, tags
- Pino structured logger, `@repo/prisma` shared package, EventLog infrastructure
- Security hardening, roadmap portal и каноническая русскоязычная документация

### 🔄 Существует, требует переработки
- Buyer / Seller onboarding — поля не наследуются между шагами, повторный запрос данных
- `qadam-web` ещё не доведён до полного соответствия новому registration API
- Item CRUD — критичный баг: `pending` айтемы видны в каталоге
- Lead management — работает некачественно, требует переработки
- Reviews — работают частично, нет модерации отзывов
- Admin panel — роль есть, нигде не применяется и не протестирована
- Seller / Buyer profile pages — backend-слой расширен, но UI и сценарии ещё не доведены

### ❌ Не реализовано — строим с нуля
- Telegram-уведомления о лидах (верификация аккаунта начата, доставка и настройки не доведены)
- Верификация телефона (SMS)
- Карта для поиска офлайн-центров
- Похожие курсы на карточке айтема
- CPL billing infrastructure
- Quiz, Special offers, CRM, Smart recommendations
- Mobile apps, Online payments, Seller analytics

---

## 2A. Текущий фокус на 28 марта 2026 года

1. Синхронизировать `qadam-web` с новым buyer/seller registration API и buyer profile flow.
2. Довести buyer cabinet и seller onboarding до предсказуемого UX без contract drift.
3. Усилить admin moderation и статусы сущностей.
4. Добавить web smoke/e2e контур.
5. Подготовить image-based delivery и переход к docker contour.

---

# Stage 1: MVP — PMF Validation

**Цель:** Проверить product-market fit для продавцов и байеров, верифицировать экономику привлечения обеих аудиторий.

**Монетизация:** CPL $30/лид · еженедельная или ежемесячная сверка · выставление счёта

**География:** Ташкент + крупные города Узбекистана

### 📋 Индекс спеков MVP

| Спек | Модуль | Файл |
|------|--------|------|
| Spec 01 | Seller Onboarding & Profile | [→](./specs/2026-03-24-mvp-spec-01-seller-onboarding-profile.md) |
| Spec 02 | Item / Course Management | [→](./specs/2026-03-24-mvp-spec-02-item-course-management.md) |
| Spec 03 | Staff Management | [→](./specs/2026-03-24-mvp-spec-03-staff-management.md) |
| Spec 04 | Admin Roles & Moderation | [→](./specs/2026-03-24-mvp-spec-04-admin-moderation.md) |
| Spec 05 | Catalog & Search + Map | [→](./specs/2026-03-24-mvp-spec-05-catalog-search-map.md) |
| Spec 06 | Item Detail Card | [→](./specs/2026-03-24-mvp-spec-06-item-detail-card.md) |
| Spec 07 | Lead Submission (Buyer) | [→](./specs/2026-03-24-mvp-spec-07-lead-submission.md) |
| Spec 08 | Buyer Onboarding & Profile | [→](./specs/2026-03-24-mvp-spec-08-buyer-onboarding-profile.md) |
| Spec 09 | Lead Management (Seller) | [→](./specs/2026-03-24-mvp-spec-09-lead-management.md) |
| Spec 10 | Notifications System | [→](./specs/2026-03-24-mvp-spec-10-notifications.md) |
| Spec 11 | Seller Dashboard | [→](./specs/2026-03-24-mvp-spec-11-seller-dashboard.md) |
| Spec 12 | Public Seller Profile | [→](./specs/2026-03-24-mvp-spec-12-public-seller-profile.md) |
| Spec 13 | Buyer Personal Cabinet | [→](./specs/2026-03-24-mvp-spec-13-buyer-cabinet.md) |
| Spec 14 | Reviews System | [→](./specs/2026-03-24-mvp-spec-14-reviews.md) |
| Spec 15 | Reference Data Management | [→](./specs/2026-03-24-mvp-spec-15-reference-data.md) |
| Spec 16 | CPL Billing Infrastructure | [→](./specs/2026-03-24-mvp-spec-16-cpl-billing.md) |
| Spec 17 | SEO + i18n | [→](./specs/2026-03-24-mvp-spec-17-seo-i18n.md) |

### GTM Plan
- **Phase A (Supply first):** привлечь 800 продавцов, которые разместят 5 000+ айтемов
- **Phase B (Demand):** включить buyer-трафик, проверить CPL, Lead→Contact rate, CAC Buyer

---

## [MVP] Seller Side

### Регистрация и онбординг
> 📄 [Spec 01 — Seller Onboarding & Profile](./specs/2026-03-24-mvp-spec-01-seller-onboarding-profile.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-01 | P0 | Выбор типа продавца: `school_offline` / `online_school` / `individual_contributor` | [~] |
| S-02 | P0 | Заполнение профиля: короткое описание, полное описание, контакты | [~] |
| S-03 | P0 | Несколько адресов (для школ с несколькими представительствами) | [~] |
| S-04 | P0 | Наследование полей между шагами онбординга — не переспрашивать введённое | [~] |
| S-05 | P0 | Редактирование профиля после регистрации | [~] |
| S-06 | P0 | Привязка Telegram-аккаунта для уведомлений + верификация через бота | [~] |
| S-07 | P0 | Статусная модель аккаунта: `active` по умолчанию → `under_review` / `blocked` только по действию админа | [~] |

### Личный кабинет — Профиль организации
> 📄 [Spec 01 — Seller Onboarding & Profile](./specs/2026-03-24-mvp-spec-01-seller-onboarding-profile.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-08 | P0 | Просмотр и редактирование всех полей профиля организации | [~] |
| S-09 | P0 | Управление адресами (добавить / изменить / удалить) | [~] |

### Личный кабинет — Управление айтемами
> 📄 [Spec 02 — Item / Course Management](./specs/2026-03-24-mvp-spec-02-item-course-management.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-10 | P0 | Создание айтема с полной карточкой | [~] |
| S-11 | P0 | Базовые параметры: название, полное описание, краткое описание, категория/предмет | [~] |
| S-12 | P0 | Параметры курса: возраст (от/до), класс (от/до), тип занятий (группа / мини-группа / индивидуально), формат (онлайн / офлайн / гибрид), язык, время суток | [~] |
| S-13 | P0 | Длительность занятия и продолжительность курса | [~] |
| S-14 | P0 | Адрес / локация для офлайн | [~] |
| S-15 | P0 | Полная матрица цен: за занятие / за месяц / за абонемент / за пакет занятий | [ ] |
| S-16 | P0 | Спецпредложения: скидка, условие, период действия | [ ] |
| S-17 | P0 | Загрузка фото и видео курса | [~] |
| S-18 | P0 | Преподавательский состав на карточке: фото, имя, регалии, описание | [~] |
| S-19 | P0 | Статусная модель айтема: `draft` → `pending` → `active` / `rejected` / `revision_required` | [~] |
| S-20 | P0 | **Фикс критичного бага:** `pending` айтемы не отображаются в каталоге и поиске | [~] |
| S-21 | P0 | Управление видимостью: временно скрыть из поиска / вернуть обратно | [ ] |
| S-22 | P0 | Редактирование айтема | [~] |
| S-23 | P0 | Удаление айтема | [~] |
| S-24 | P0 | Продавец видит причину отклонения / комментарий на доработку | [ ] |

### Личный кабинет — Сотрудники
> 📄 [Spec 03 — Staff Management](./specs/2026-03-24-mvp-spec-03-staff-management.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-25 | P0 | Создание сотрудника с ролью: **Администратор** (управляет кабинетом, айтемами, лидами) | [~] |
| S-26 | P0 | Создание сотрудника с ролью: **Преподаватель/Перформер** (отображается в карточке айтема и профиле школы) | [~] |
| S-27 | P0 | Статусная модель сотрудника: `active` / `blocked` (управляется продавцом) | [ ] |
| S-28 | P0 | Редактирование и удаление сотрудника | [~] |
| S-29 | P0 | Профиль преподавателя: фото, имя, должность, регалии, описание | [~] |

### Личный кабинет — Управление лидами
> 📄 [Spec 09 — Lead Management (Seller)](./specs/2026-03-24-mvp-spec-09-lead-management.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-30 | P0 | Список входящих лидов: имя, телефон, email, комментарий, тип (trial/buy) | [~] |
| S-31 | P0 | Привязка лида к конкретному айтему | [~] |
| S-32 | P0 | Расширенная статусная модель лида: `new` → `contacted` → `enrolled` → `attended` / `no_show` → `purchased` / `not_purchased` | [ ] |
| S-33 | P0 | Фильтрация и сортировка лидов по статусу | [~] |
| S-34 | P1 | Информация о монетизационной модели и спецпредложении в карточке лида | [ ] |

### Личный кабинет — Уведомления
> 📄 [Spec 10 — Notifications System](./specs/2026-03-24-mvp-spec-10-notifications.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-35 | P0 | Добавление Telegram-аккаунта для уведомлений + верификация через бота | [~] |
| S-36 | P0 | Уведомление в Telegram при новом лиде | [~] |
| S-37 | P1 | Уведомление в Telegram при изменении статуса лида | [ ] |
| S-38 | P1 | Уведомление на email при новом лиде | [ ] |
| S-39 | P1 | Настройка триггеров уведомлений (что включить / выключить) | [~] |

### Личный кабинет — Отзывы
> 📄 [Spec 14 — Reviews System](./specs/2026-03-24-mvp-spec-14-reviews.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-40 | P0 | Список отзывов с разбивкой по айтемам | [~] |
| S-41 | P0 | Ответ продавца на отзыв | [ ] |
| S-42 | P0 | Подача жалобы на отзыв (несправедливый / нарушает правила) → отзыв уходит на модерацию | [ ] |
| S-43 | P1 | Статусная модель отзыва: `published` / `pending_moderation` / `rejected` | [ ] |

### Seller Dashboard (Overview)
> 📄 [Spec 11 — Seller Dashboard](./specs/2026-03-24-mvp-spec-11-seller-dashboard.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-44 | P0 | Кол-во активных айтемов | [~] |
| S-45 | P0 | Кол-во уникальных просмотров айтемов | [ ] |
| S-46 | P0 | Кол-во полученных лидов (всего и за период) | [~] |
| S-47 | P0 | Кол-во полученных отзывов | [~] |

### Публичный профиль продавца (`/sellers/[id]`)
> 📄 [Spec 12 — Public Seller Profile](./specs/2026-03-24-mvp-spec-12-public-seller-profile.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| S-48 | P0 | Вся информация об организации (название, описание, контакты, адреса) | [~] |
| S-49 | P0 | Все активные айтемы школы | [~] |
| S-50 | P0 | Весь педагогический состав | [~] |
| S-51 | P0 | Все отзывы по всем курсам | [~] |
| S-52 | P0 | Категории и направления школы | [~] |
| S-53 | P0 | SSR + SEO meta tags для страницы профиля | [~] |

---

## [MVP] Buyer Side

### Регистрация и онбординг
> 📄 [Spec 08 — Buyer Onboarding & Profile](./specs/2026-03-24-mvp-spec-08-buyer-onboarding-profile.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| B-01 | P0 | Выбор роли: `parent` / `student` | [~] |
| B-02 | P0 | Заполнение профиля: имя, телефон, email | [~] |
| B-03 | P0 | Для родителя: добавление ребёнка (имя, возраст, класс) | [~] |
| B-04 | P0 | Наследование полей между шагами онбординга | [~] |

### Каталог и поиск (`/`)
> 📄 [Spec 05 — Catalog & Search + Map](./specs/2026-03-24-mvp-spec-05-catalog-search-map.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| B-05 | P0 | Поиск по названию курса / школы (PostgreSQL full-text) | [~] |
| B-06 | P0 | Фильтры: категория, формат, тип занятий, язык, время суток, цена (от/до), возраст (от/до), локация | [~] |
| B-07 | P0 | Категорийная навигация (горизонтальные pill-кнопки) | [~] |
| B-08 | P0 | Карточка курса в ленте: фото, название, продавец, рейтинг, цена от, формат, локация | [~] |
| B-09 | P0 | Infinite scroll каталога вместо кнопки "Загрузить ещё" | [x] |
| B-10 | P0 | SSR рендеринг для SEO | [~] |
| B-11 | P0 | Skeleton loading при загрузке | [~] |
| B-12 | P0 | **Карта офлайн-центров:** байер может искать школы и репетиторов через карту (OpenStreetMap / Nominatim) | [ ] |
| B-13 | P0 | Маркеры на карте → клик → карточка продавца / айтема | [ ] |
| B-14 | P0 | Redis-кэширование результатов каталога (TTL 5 мин) | [~] |

### Полная карточка айтема (`/item/[slug]`)
> 📄 [Spec 06 — Item Detail Card](./specs/2026-03-24-mvp-spec-06-item-detail-card.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| B-15 | P0 | Полные параметры курса (возраст, формат, тип, язык, время суток, длительность) | [~] |
| B-16 | P0 | Полное описание курса + чему научится ребёнок / какие навыки приобретёт | [~] |
| B-17 | P0 | Полная матрица цен (за занятие / месяц / абонемент / пакет) | [ ] |
| B-18 | P0 | Все спецпредложения по курсу | [ ] |
| B-19 | P0 | Преподавательский состав: фото, имя, регалии, описание | [~] |
| B-20 | P0 | Фото и видео галерея курса | [~] |
| B-21 | P0 | Карта с расположением (только для офлайн / гибрид, только если `displayPublicly = true`) | [ ] |
| B-22 | P0 | Блок отзывов с рейтингом и текстом | [~] |
| B-23 | P0 | Кнопка "Записаться" → открывает LeadModal | [~] |
| B-24 | P0 | **Похожие курсы** — блок рекомендаций на карточке айтема | [ ] |
| B-25 | P0 | SSR + SEO meta tags + JSON-LD (Course schema.org) | [~] |

### Подача лида (LeadModal)
> 📄 [Spec 07 — Lead Submission (Buyer)](./specs/2026-03-24-mvp-spec-07-lead-submission.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| B-26 | P0 | Поля: имя, телефон (+998 маска), тип (trial / buy), комментарий | [~] |
| B-27 | P0 | Валидация телефона: формат +998XXXXXXXXX | [~] |
| B-28 | P0 | Привязка лида к конкретному айтему и продавцу | [~] |
| B-29 | P0 | Подтверждение после успешной отправки | [~] |
| B-30 | P0 | Гость может оставить лид (без авторизации) | [ ] |

### Личный кабинет байера (`/me`)
> 📄 [Spec 13 — Buyer Personal Cabinet](./specs/2026-03-24-mvp-spec-13-buyer-cabinet.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| B-31 | P0 | Мои заявки (лиды): статус, название курса, контакты продавца | [~] |
| B-32 | P0 | Мои отзывы | [~] |
| B-33 | P0 | Редактирование профиля (имя, телефон, email) | [~] |

### Отзывы
> 📄 [Spec 14 — Reviews System](./specs/2026-03-24-mvp-spec-14-reviews.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| B-34 | P0 | Написать отзыв (рейтинг 1–5 + текст) — только при наличии лида на этот айтем | [~] |
| B-35 | P0 | Модерация отзыва перед публикацией (статус `pending` → `published`) | [ ] |
| B-36 | P1 | Отображение среднего рейтинга на карточке и в профиле продавца | [~] |

---

## [MVP] Platform & Admin

### Роли и доступы
> 📄 [Spec 04 — Admin Roles & Moderation](./specs/2026-03-24-mvp-spec-04-admin-moderation.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-01 | P0 | Роль **Root**: полный доступ ко всему | [ ] |
| A-02 | P0 | Роль **Верификатор**: модерация айтемов + отзывов | [ ] |
| A-03 | P0 | Роль **Аналитик**: dashboard + all leads + просмотр пользователей | [ ] |
| A-04 | P0 | Роль **Маркетолог**: reference data + просмотр пользователей | [ ] |

### Модерация айтемов
> 📄 [Spec 04 — Admin Roles & Moderation](./specs/2026-03-24-mvp-spec-04-admin-moderation.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-05 | P0 | Очередь айтемов в статусе `pending` | [~] |
| A-06 | P0 | Действие **Апрув** → айтем переходит в `active`, появляется в каталоге | [~] |
| A-07 | P0 | Действие **Отклонить** с комментарием → `rejected`, комментарий виден продавцу | [~] |
| A-08 | P0 | Действие **Отправить на доработку** с комментарием → `revision_required`, комментарий виден продавцу | [ ] |
| A-09 | P0 | **Фикс:** айтемы в `pending` и `revision_required` не отображаются в поиске | [~] |

### Модерация отзывов
> 📄 [Spec 04 — Admin Roles & Moderation](./specs/2026-03-24-mvp-spec-04-admin-moderation.md) · [Spec 14 — Reviews System](./specs/2026-03-24-mvp-spec-14-reviews.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-10 | P0 | Отзывы публикуются сразу (`active` по умолчанию — без пре-модерации) | [~] |
| A-11 | P0 | Жалоба от продавца → отзыв переходит в `pending_moderation` → появляется в очереди | [ ] |
| A-12 | P0 | Внутренний комментарий к решению (виден только админам) | [ ] |
| A-13 | P0 | Решение: вернуть в `published` / перевести в `rejected` (с причиной) | [ ] |

### Управление пользователями
> 📄 [Spec 04 — Admin Roles & Moderation](./specs/2026-03-24-mvp-spec-04-admin-moderation.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-14 | P0 | Просмотр всех продавцов и их статусов | [~] |
| A-15 | P0 | Просмотр всех байеров и их статусов | [~] |
| A-16 | P0 | Действия над аккаунтом: отправить на верификацию / заблокировать / разблокировать | [ ] |

### Admin Dashboard
> 📄 [Spec 04 — Admin Roles & Moderation](./specs/2026-03-24-mvp-spec-04-admin-moderation.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-17 | P0 | Всего аккаунтов продавцов | [~] |
| A-18 | P0 | Всего созданных айтемов | [~] |
| A-19 | P0 | Всего аккаунтов байеров | [~] |
| A-20 | P0 | MAU (Monthly Active Users) | [ ] |
| A-21 | P0 | Всего лидов за всё время | [~] |
| A-22 | P0 | Всего отзывов | [~] |

### Reference Data Management
> 📄 [Spec 15 — Reference Data Management](./specs/2026-03-24-mvp-spec-15-reference-data.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-23 | P1 | CRUD: subjects (предметы и группы предметов) | [~] |
| A-24 | P1 | CRUD: locations (города, районы, регионы) | [~] |
| A-25 | P1 | CRUD: tags | [~] |

### CPL Billing Infrastructure
> 📄 [Spec 16 — CPL Billing Infrastructure](./specs/2026-03-24-mvp-spec-16-cpl-billing.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-26 | P0 | Учёт переданных лидов по каждому продавцу | [ ] |
| A-27 | P0 | Формирование счёта за выбранный период (неделя / месяц) | [ ] |
| A-28 | P0 | Статус оплаты счёта: `pending` / `paid` / `overdue` | [ ] |
| A-29 | P1 | Биллинг-дашборд для админа | [ ] |

### All Leads View
> 📄 [Spec 04 — Admin Roles & Moderation](./specs/2026-03-24-mvp-spec-04-admin-moderation.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| A-30 | P1 | Таблица всех лидов: продавец, айтем, байер, статус, тип, дата | [~] |
| A-31 | P1 | Гибкая фильтрация по всем параметрам | [~] |

---

## [MVP] Cross-Cutting Requirements

### SEO
> 📄 [Spec 17 — SEO + i18n](./specs/2026-03-24-mvp-spec-17-seo-i18n.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| X-01 | P0 | SSR для всех публичных страниц (каталог, карточка, профиль продавца) | [~] |
| X-02 | P0 | `<title>`, `<meta description>`, Open Graph теги на каждой публичной странице | [~] |
| X-03 | P0 | Structured data JSON-LD (Course schema.org для айтемов, Organization для продавцов) | [ ] |
| X-04 | P0 | Sitemap для всех активных айтемов | [ ] |
| X-05 | P0 | ЧПУ-слаги (транслитерация кириллицы → латиница) | [~] |
| X-06 | P1 | Canonical URL для страниц с фильтрами | [ ] |

### i18n
> 📄 [Spec 17 — SEO + i18n](./specs/2026-03-24-mvp-spec-17-seo-i18n.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| X-07 | P0 | Три языка: **uz** (основной), **ru**, **en** | [~] |
| X-08 | P0 | Переключатель языка в хедере | [~] |
| X-09 | P0 | Все UI-строки переведены на три языка | [~] |
| X-10 | P0 | Fallback на узбекский при отсутствии перевода | [~] |
| X-11 | P0 | ICU pluralization (узбекский и русский имеют разные правила) | [~] |

### Карта
> 📄 [Spec 05 — Catalog & Search + Map](./specs/2026-03-24-mvp-spec-05-catalog-search-map.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| X-12 | P0 | Поиск офлайн-центров через карту на главной странице (OpenStreetMap) | [ ] |
| X-13 | P0 | Маркеры школ и репетиторов на карте | [ ] |
| X-14 | P0 | Клик по маркеру → краткая карточка → переход на айтем / профиль | [ ] |
| X-15 | P0 | Фильтрация по зоне на карте | [ ] |
| X-16 | P0 | Карта с адресом на странице айтема (только если `displayPublicly = true`) | [ ] |
| X-17 | P0 | Валидация координат по bounds Узбекистана (lat: 37–45.6, lon: 55.9–73.2) | [~] |

### Уведомления
> 📄 [Spec 10 — Notifications System](./specs/2026-03-24-mvp-spec-10-notifications.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| X-18 | P0 | Telegram-бот: уведомление о новом лиде продавцу | [ ] |
| X-19 | P1 | Telegram-бот: уведомление об изменении статуса лида | [ ] |
| X-20 | P1 | Email-уведомление о новом лиде (fallback к Telegram) | [ ] |

---

---

# Stage 2: v1.0 — Growth + Paid CRM

**Цель:** Первые стабильные доходы, retention продавцов через CRM, рост байерской аудитории.

**Монетизация:** CPL $30/лид + SaaS $15/мес за CRM

**География:** Rollout на весь Узбекистан (операционный фокус — крупные города)

### 📋 Индекс спеков v1.0

| Спек | Модуль | Файл |
|------|--------|------|
| Spec v1-01 | CRM: Calendar & Schedule | [→](./specs/2026-03-24-v1-spec-01-crm-calendar-schedule.md) |
| Spec v1-02 | CRM: Client Database | 🔲 в работе |
| Spec v1-03 | CRM: Online Booking | 🔲 в работе |
| Spec v1-04 | CRM: Roles & Permissions | 🔲 в работе |
| Spec v1-05 | CRM: SaaS Billing | 🔲 в работе |
| Spec v1-06 | Discovery: Personalized Feed | 🔲 в работе |
| Spec v1-07 | Discovery: Quiz Flow | 🔲 в работе |
| Spec v1-08 | Promo Tools | 🔲 в работе |

---

## [v1.0] Paid CRM для продавца

### Двухуровневый календарь
> 📄 [Spec v1-01 — CRM: Calendar & Schedule](./specs/2026-03-24-v1-spec-01-crm-calendar-schedule.md)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| C-01 | P0 | Рабочий график преподавателя: дни, часы работы, перерывы | [ ] |
| C-02 | P0 | Исключения в графике: отпуск, больничный, разовые отмены | [ ] |
| C-03 | P0 | Расписание курса/группы: дни недели, время, аудитория | [ ] |
| C-04 | P0 | Связь расписания курса с графиком преподавателя | [ ] |
| C-05 | P0 | Календарный вид: день / неделя / месяц | [ ] |
| C-06 | P0 | Визуализация загрузки: занятые и свободные слоты преподавателя | [ ] |

### База клиентов
> 📄 Spec v1-02 — CRM: Client Database · 🔲 не написан

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| C-07 | P0 | Клиентская база: профили учеников (имя, возраст, контакты родителя) | [ ] |
| C-08 | P0 | История лидов и записей клиента | [ ] |
| C-09 | P0 | Статус клиента: активный / неактивный / заблокирован | [ ] |
| C-10 | P1 | Ручное добавление клиента менеджером | [ ] |

### Онлайн-запись с карточки айтема
> 📄 Spec v1-03 — CRM: Online Booking · 🔲 не написан

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| C-11 | P0 | **Группы / Мини-группы:** показ доступных групп с расписанием из CRM | [ ] |
| C-12 | P0 | Проверка свободных мест в группе при попытке записи | [ ] |
| C-13 | P0 | Если места есть → запись → место блокируется | [ ] |
| C-14 | P0 | Если мест нет → кнопка "Хочу в такую же" → событие в CRM (лид на ожидание) | [ ] |
| C-15 | P0 | **Индивидуальные (1:1):** показ свободных слотов преподавателя | [ ] |
| C-16 | P0 | Длина слота = длительность занятия из карточки айтема | [ ] |
| C-17 | P0 | Байер выбирает слот → бронирует → слот закрывается в календаре преподавателя | [ ] |

### CRM-роли и доступы
> 📄 Spec v1-04 — CRM: Roles & Permissions · 🔲 не написан

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| C-18 | P0 | Роль **Owner**: полный доступ включая биллинг, настройки, удаление орг | [ ] |
| C-19 | P0 | Роль **Admin CRM**: расписание, персонал, клиенты, аналитика | [ ] |
| C-20 | P0 | Роль **Manager**: лиды, клиенты, бронирования | [ ] |
| C-21 | P0 | Роль **Teacher**: только своё расписание, свои группы, посещаемость | [ ] |
| C-22 | P0 | Матрица доступов: что каждая роль может видеть и делать | [ ] |

### SaaS Billing для CRM
> 📄 Spec v1-05 — CRM: SaaS Billing · 🔲 не написан

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| C-23 | P0 | Подписка на CRM: $15/мес | [ ] |
| C-24 | P0 | Активация / деактивация CRM-функций в зависимости от статуса подписки | [ ] |
| C-25 | P0 | История платежей за CRM в кабинете продавца | [ ] |

---

## [v1.0] Discovery & Growth (Buyer)
> 📄 Spec v1-06 — Discovery: Personalized Feed · 🔲 не написан
> 📄 Spec v1-07 — Discovery: Quiz Flow · 🔲 не написан

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| D-01 | P0 | **Персонализированная выдача каталога:** на основе возраста ребёнка, истории просмотров и лидов | [ ] |
| D-02 | P0 | **Quiz-подборщик курсов:** вопросы (возраст, интересы, формат, бюджет) → персональная подборка → лид | [ ] |
| D-03 | P0 | Прямая онлайн-запись в календарь продавца с карточки айтема (если продавец подключил CRM) | [ ] |
| D-04 | P1 | SEO-страницы для популярных запросов (математика Ташкент, английский для детей и т.д.) | [ ] |

---

## [v1.0] Promo Tools для продавца
> 📄 Spec v1-08 — Promo Tools · 🔲 не написан

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| P-01 | P0 | Создание спецпредложения: тип (скидка % / фикс), условие (новые клиенты / все), период | [ ] |
| P-02 | P0 | Отображение бейджа спецпредложения на карточке курса в каталоге | [ ] |
| P-03 | P1 | Платное продвижение айтема в выдаче каталога | [ ] |
| P-04 | P2 | Промо-баннеры для продавцов | [ ] |

---

---

# Stage 3: v1.5 — Deep Analytics + Mobile

**Цель:** Глубокий retention продавцов через аналитику и финансовый учёт. Мобильное присутствие для обеих аудиторий.

**Монетизация:** CPL + SaaS (усиление retention через ценность аналитики)

---

## [v1.5] Расширенная аналитика продавца

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| AN-01 | P0 | P&L dashboard: выручка, расходы, прибыль за период | [ ] |
| AN-02 | P0 | Аналитика по курсам: выручка / лиды / конверсия по каждому айтему | [ ] |
| AN-03 | P0 | Аналитика по клиентам: новые / активные / неактивные (>30 дней без занятий) | [ ] |
| AN-04 | P0 | Аналитика по преподавателям: загрузка (%), кол-во проведённых занятий | [ ] |
| AN-05 | P0 | Сравнение периодов: месяц к месяцу, год к году | [ ] |
| AN-06 | P1 | Выгрузка отчётов (CSV / Excel) | [ ] |

### Управление персоналом и зарплаты

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| AN-07 | P0 | Настройка ставки преподавателя: % от занятия / фикс за занятие / фикс в месяц | [ ] |
| AN-08 | P0 | Автоматический расчёт зарплаты за период на основе проведённых занятий | [ ] |
| AN-09 | P0 | Отчёт по зарплатам: кому сколько начислено и выплачено | [ ] |
| AN-10 | P1 | KPI преподавателя: посещаемость студентов, рейтинг, загрузка | [ ] |

---

## [v1.5] Мобильные приложения

### CRM-приложение для продавцов (iOS + Android)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| M-01 | P0 | Авторизация (JWT Bearer header) | [ ] |
| M-02 | P0 | Мобильный календарь расписания | [ ] |
| M-03 | P0 | Управление лидами и записями | [ ] |
| M-04 | P0 | Push-уведомления о новых лидах | [ ] |
| M-05 | P1 | Основные дашборд-метрики | [ ] |
| M-06 | P1 | Отмечание посещаемости преподавателем | [ ] |

### Маркетплейс-приложение для байеров (iOS + Android)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| M-07 | P0 | Авторизация (JWT Bearer header) | [ ] |
| M-08 | P0 | Каталог с поиском и фильтрами | [ ] |
| M-09 | P0 | Полная карточка айтема | [ ] |
| M-10 | P0 | Подача лида / онлайн-запись | [ ] |
| M-11 | P0 | Личный кабинет байера (мои заявки, профиль) | [ ] |
| M-12 | P1 | Push-уведомления о статусе заявки | [ ] |

---

---

# Stage 4: v2.0 — Transactional Super-App

**Цель:** Стать единой точкой оплаты всего дополнительного образования. Перевод на транзакционную модель монетизации.

**Монетизация:** Выбор модели продавцом — CPL+SaaS ИЛИ Transaction (10% комиссии, тогда лиды + CRM бесплатно). Long-term цель: только транзакции.

---

## [v2.0] Онлайн-платежи

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| T-01 | P0 | Интеграция платёжных систем: Payme / Click / Uzum | [ ] |
| T-02 | P0 | Оплата курса / занятия / абонемента через платформу | [ ] |
| T-03 | P0 | Автоматическое начисление комиссии 10% с каждой транзакции | [ ] |
| T-04 | P0 | Выплата продавцу (за вычетом комиссии) | [ ] |
| T-05 | P0 | История транзакций для продавца и байера | [ ] |
| T-06 | P1 | Финтех-партнёрство: специальные условия эквайринга для продавцов на транзакционной модели | [ ] |

### Гибридная модель монетизации

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| T-07 | P0 | Продавец выбирает модель: **CPL+SaaS** или **Transaction** | [ ] |
| T-08 | P0 | На транзакционной модели: лиды бесплатны, CRM бесплатна, платит 10% комиссии | [ ] |
| T-09 | P1 | Инструменты для конверсии продавцов с CPL+SaaS на транзакционную модель | [ ] |

---

## [v2.0] Единое расписание байера (Super-App)

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| T-10 | P0 | Единый календарь всех занятий ребёнка: все курсы из разных школ в одном месте | [ ] |
| T-11 | P0 | Управление подписками: активные курсы, даты оплаты, история | [ ] |
| T-12 | P0 | Оплата всех курсов через единый счёт на платформе | [ ] |
| T-13 | P1 | Уведомления о предстоящих занятиях и оплатах | [ ] |
| T-14 | P1 | Специальные условия для лояльных байеров (cashback, партнёрские предложения от банка) | [ ] |

---

## [v2.0] Онлайн-маркетплейс

| # | Приоритет | Функциональность | Статус |
|---|-----------|-----------------|--------|
| T-15 | P1 | Онлайн-курсы: видео-контент, структура уроков | [ ] |
| T-16 | P1 | LMS: прогресс ученика по курсу | [ ] |
| T-17 | P2 | Домашние задания и проверка | [ ] |
| T-18 | P2 | Сертификаты по окончании курса | [ ] |

---

---

# Appendix: Деferred — Явно за скоупом

Эти функциональности осознанно отложены. Не реализовывать без отдельного решения:

| Функциональность | Причина |
|-----------------|---------|
| Elasticsearch (замена PG full-text) | Достаточно PG для текущего масштаба |
| Dark theme | Не приоритет для целевой аудитории |
| Региональная экспансия (Казахстан, Кыргызстан) | После стабилизации Узбекистана |
| Чат между байером и продавцом | Заменяется лидами и Telegram |
| Сравнение курсов | Низкий спрос на MVP |
| Избранное / закладки | Низкий приоритет для PMF |
| Multi-branch (несколько филиалов) | После v1.0 |
| B2B аналитика / API для государства | Отдельный продукт |
| Privacy Policy страница | До запуска v1.0 |
| Course comparison | Отложено |
