# Сверка с исходным ТЗ SHARENTA

**Дата:** 24 сентября 2026  
**Код сверен с пилотом `instant-watch`.**  
**Файла исходного ТЗ в репозитории нет.** Ниже — реконструкция по первому рабочему срезу и по модулям, которые позже вошли в продукт.

Легенда:

| Метка | Значение |
| ----- | -------- |
| **Сделано** | Экран + действие в контуре / API |
| **Заменено** | Требование ТЗ снято другим, более честным решением |
| **Макет** | Экран или копирайт есть, внешней системы нет |
| **Нет** | В коде не найдено |

---

## Короткий ответ

**Пользовательский контур исходного ТЗ в основном собран:** онбординг, каталог, карта, карточка, заявка, чат, кабинеты, создание объявления, модерация, поддержка, безопасность, Android-клиент того же контура.

**Не закрыты внешние системы, которые ТЗ называло, но пилот сознательно не подключал:** приём денег, SMS, Apple/Google, OCR KYC, УКЭП, push/email, 2FA сотрудников, редактор стран и юр.текста правил.

**Часть экранов ТЗ — витрина:** PRO/MAX, пакеты услуг, реферальные «выплаты», таблица стран, список правил, оборот сервисов в админке.

Это не противоречит дорожной карте от 24 сентября: платежи, PRO и каналы доставки туда не входят, пока не будет отдельного решения.

---

## 1. Исходный веб-срез ТЗ (первый портал)

Источник: состав экранов и README первого коммита портала.

| Функция из ТЗ | Сейчас | Комментарий |
| ------------- | ------ | ----------- |
| Онбординг: язык, слайды, роль, гость | **Сделано** | `/welcome`. На Android нет этого потока |
| Главная лента «рядом» | **Сделано** | Каталог живой; «рядом» по зашитому `distanceKm`, не GPS |
| Категории (10 шт.) | **Сделано** | Подкатегории транспорта — ссылки без фильтра |
| Поиск и фильтры | **Сделано** | Keyword + AI-фраза (фаза 3, позже ТЗ) |
| Карта | **Сделано** | Leaflet OSM; в первом срезе была схема Москвы, заменена на OSM |
| Карточка юнита, фото, отзывы, профиль владельца | **Сделано** | Отзывы из контура; просмотры считаются уникально за сессию |
| Избранное | **Сделано** | Шапка + карточка; гостевой claim |
| Заявка на даты | **Сделано** | Нужен KYC; пересечения блокируются; instant book опционален |
| Подтверждение / отказ владельца | **Сделано** | Да/нет + предложить другие даты |
| Подпись документов (e-sign) | **Макет** | Флаг в приложении + `demoESignProvider`. УКЭП нет |
| Чаты сторон | **Сделано** | Текст заявки копируется в тред |
| Уведомления | **Сделано** in-app | Prefs email/push сохраняются; доставки нет |
| Кабинет арендатора | **Сделано** | Единый кабинет + роль |
| Кабинет арендодателя | **Сделано** | `/landlord` + CRM две рейки (добавлено позже) |
| Создание объявления + ИИ-мастер | **Сделано** | ИИ не публикует сам; без ключа — mock |
| Календарь занятости | **Сделано** | В мастере создания и после публикации |
| Документы сделки | **Сделано** как шаблоны | Договор / акт / уведомление платформы; не PDF-крипто |
| Аналитика / финансы хозяина | **Частично** | Сделки и покупки из контура; `views` сид; деньги аренды платформа не держит |
| Продвижение, буст, выделение | **Макет оплаты + живой буст** | Ранжирование работает; провайдера нет |
| Подписки PRO / MAX | **Макет** | Чек `purchases`, прав PRO нет |
| Реферальная программа | **Частично** | Код при регистрации; выплат нет; Android читает контур |
| Центр безопасности | **Сделано** | KYC-заметка, проверка профилей, жалоба-тикет, блок, правила |
| Правила платформы | **Макет** | 7 заголовков без текста статей |
| Поддержка / тикеты | **Сделано** | Переписка user/admin в тикете |
| Админка: модерация | **Сделано** | Approve/reject, AI-подсказка не банит сама |
| Админка: пользователи и KYC | **Сделано** | Вручную, не OCR |
| Админка: тикеты | **Сделано** статус | Без ответа в тикете |
| Админка: страны и запреты | **Макет** | Статические таблицы `COUNTRIES` / `BANNED_CATEGORIES`, не редактируются |
| Админка: настройки | **Макет** | Read-only; 2FA сотрудников нет |
| Гостевой каталог без сделок | **Сделано** | Контур режется сессией |
| RU/EN | **Сделано** | Остальные языки в списке, UI только ru/en |

### Вход — как было в исходном README и как стало

| ТЗ первого среза | Сейчас |
| ---------------- | ------ |
| Apple / Google / email → сразу Алексей | **Заменено.** Настоящий логин+пароль, сессия cookie/Bearer. OAuth нет |
| Телефон + код `1234` | **Заменено.** Код 1234 отвергается; пароль `Sharenta1` у демо |
| Демо-вход админа кнопкой | **Сделано** иначе: аккаунт `admin` + пароль |
| Данные в localStorage браузера | **Заменено** на PostgreSQL (городской пилот) |

Замена входа — не дырка ТЗ, а ужесточение: подмена аккаунта с клиента закрыта.

---

## 2. Модули, которые стали частью ТЗ после первого среза

Их нет в самом первом README, но они заказывались и вошли в продукт.

| Модуль | Сейчас | Дыра |
| ------ | ------ | ---- |
| Deal Engine: статусы заявки → документы → подписи → active → complete | **Сделано** | Две шкалы booking/deal; кнопка «Подтвердить» пишет `documents` |
| Фото выдачи / возврата, noshow, unreturned, expire | **Сделано** | — |
| KYC обязателен для брони | **Сделано** | Чат без KYC; OCR нет (так и задумано) |
| Серверная сессия, без `X-Actor-Id` | **Сделано** | — |
| PostgreSQL + фото BYTEA + backup | **Сделано** локально | На Vercel без `DATABASE_URL` снова эфемерный JSON |
| Android тот же контур | **Сделано** частично | Нет welcome, CRM/finance; рефералка фейковая; APK не пересобирался в этой сессии |
| AI Gateway: vision, цена, поиск фразой, ассистент, разбор сделки, модерация | **Сделано** на backend | Без `AI_API_KEY` — mock по каталогу; выдуманных юнитов нет |
| Водяной знак в файле фото | **Заменено** | Бейдж только на экране, файл не портится |

---

## 3. Что исходное ТЗ требовало «как у маркетплейса», но пилот честно не имитирует

Эти пункты **не считать недоделкой волны 1**. Их нет в текущем плане реализации, пока не будет провайдера.

| Тема | Статус |
| ---- | ------ |
| Платёжный провайдер (аренда, буст, PRO) | Нет. `SettlementNotice`: аренда напрямую. Буст пишется без списания |
| SMS / OTP провайдер | Нет. Пароль |
| Apple / Google OAuth | Нет |
| Внешний KYC / паспорт | Нет. Заметка + админ |
| УКЭП / КриптоПро / Контур.Подпись | Нет. Демо-конверт |
| Push, email, Telegram | Каналы пишутся в журнал сделки, писем нет |
| 2FA сотрудников админки | Нет |
| Персональный менеджер MAX | Копирайт подписки |
| Мультиязычность сверх ru/en | Список есть, интерфейс нет |
| Мультивалютность стран | Таблица есть, цены в контуре как числа без FX |

---

## 4. Экраны ТЗ, которые есть, но не закрывают сценарий

Имеет смысл не путать с «функция не сделана».

1. **E-sign** — стороны ставят флаг, комплект шаблонов генерируется. Юридической подписи нет.  
2. **PRO/MAX / пакеты** — покупка = строка в `purchases`. Лимиты и менеджер не включаются.  
3. **Реферал** — код живой; «к выплате» на Android выдумано.  
4. **Правила** — оглавление без статей.  
5. **Страны в админке** — витрина.  
6. **Настройки платформы** — нельзя сохранить.  
7. **Тикет** — одно сообщение.  
8. **Финансы хозяина** — учёт сделок, не эквайринг.  
9. **«Проверен» на юните** — у сидов стоит; новый publish в контуре `verified: false`.  
10. **ИИ-мастер** — работает при ключе; иначе честный mock, поля не выдумывает.

---

## 5. Итог покрытия

| Корзина | Оценка |
| ------- | ------ |
| Экраны исходного ТЗ | Почти все маршруты первого коммита на месте (плюс assistant, demo, download, CRM, roadmap) |
| Живой контур аренды (найти → заявка → чат → подпись → выдача → отзыв) | **Да**, с оговорками UX из дорожной карты |
| Внешние интеграции из ТЗ | **Нет**, и это зафиксировано в UI |
| Монетизация из ТЗ (PRO, выплаты, эквайринг) | **Нет** |
| Админ-операционка (модерация, ручной KYC, тикет-статус) | **Да** на уровне пилота |
| Паритет Android = веб | **Нет** (достаточно для демо-воронки, не для всех кабинетов) |

**Вывод:** исходное ТЗ как *маркетплейс-срез с макетами оплат и KYC* — реализовано. Исходное ТЗ как *боевая платформа с провайдерами* — не реализовано и не должно считаться закрытым. Продуктовые дыры «найти → связаться → договориться» (чат на карточке, другие даты, пин не Арбат) — это уже не ТЗ-интеграции, а план волны 1.

---

## 6. Связь с планом реализации

Не тащить в волну 1 то, чего не было рабочим в исходном ТЗ:

- не подключать оплату, OAuth, SMS, УКЭП, OCR, SMTP;
- не строить редактор стран и юридические правила;
- не включать права PRO.

Волна 1 закрывает качество уже заявленного в ТЗ контура (чат, статусы, честная карта), а не новые модули из §3.
