# Техническое задание на доработки "ПлюсАгент"
## Вводные сведения
Производится разработка онлайн-платформы для специалистов в сфере недвижимости "ПлюсАгент". Для ускоренного релиза было принято решение привлечь дополнительных разработчиков в целях решения ряда задач.
Платформа представлет собой площадку для риэлторов, позволяющая им создать свою страницу, заполнить её объявлениями и продвинуть в сети Интернет.
Текущую версию можно посмотреть по адресу https://newproto.an-luxemburg.ru. Тестовый доступ:
- Телефон: +79824133348
- Пароль: Pass1234
## Задача 1. Лендинг
### Постановка
Необходимо реализовать главную страницу сайта. Визуально страница может повторять главные страницы следующих ресурсов по недвижимости:
- https://www.zillow.com
- https://trulia.com
### Требования
Лендинг должен обладать блочной вёрсткой и быть адаптирован под мобильные устройства. Список блоков описан далее.
#### Блок 1. Купить и продать

Раскладка блока приведена на изображении выше. В центре расположена строка поиска, в которой предлагается ввести адрес. Над ней два переключателя: "Купить" (активен) и "Продать". По нажатию на продать должно открываться модальное окно составления заявки на продажу объекта. Содержимое окна описано в отдельной задаче.
Осуществляя ввод в поисковом поле, пользователь должен увидеть список подсказок адреса. Бэкенд для подсказок реализован; результат подсказок выглядит следующим образом:

#### Блок 2. Быстрый выбор категории.
В данном блоке приведён список категорий:
- Студии и однушки
- Двухкомнатные квартиры
- Трехкомнатные квартиры
- Четырехкомнатные и более
- Частные дома
- Дачи
- Таунхаусы
Визуально можно оформить этот список также, как на изображении ниже, где вместо районов будет названия категорий. В качестве фоновых изображений можно использовать любые интерьеры квартир / домов с pexels.com.

#### Блок 3. Лучшие агенты
В данном блоке нужно представить топ лучших риэлторов. Бэкенд для вывода списка в нужном порядке готов. Ориентировочный внешних вид блока представлен на изображении ниже.

#### Блок 4. Лучшие квартиры
В данном блоке нужно расположить топ наиболее просматриваемых квартир в виде сетки с карточками объекта недвижимости. Ориентировочных вид карточек представлен на изображении ниже.

#### Блок 5. Вы риэлтор?
Данный блок предназначен для потенциальных пользователей системы - риэлторов. В нём должна содержаться информация о преимуществах работы на платформе и кнопка "Принять участие", открывающая модальное окно с процессом регистрации (уже реализовано).
#### Футер
В нижней части страницы нужно расположить футер со следующей информацией:
- О компании
- Правила
- Контакная информация
- Ссылки на наши социальные сети FB, VK
## Задача 2. База объявлений собственников
### Постановка
Для риэлторов, осуществивших вход в систему в вехнем меню сайта должен быть доступен раздел "База собственников".
Раздел должен состоять из двух частей. первая часть - это список нерассмотреных горячих заявок на продажу недвижимости от собственников (см. лендинг). Подача заявки и отображение списка заявок описано в отдельной задаче.
Данная задача описывает реализацию второй части раздела. Вторая часть - это список объявлений, полученных из досок объявлений по недвижимости (таких как Авито, Циан и др.) методом парсинга.
**Важно**: сам парсинг реализовывать не нужно. Источником данных будет являться сервис [INPARS](https://inpars.ru).
### Требования
#### Объявления от сосбственников
Навигация по объявлениям собственника должна осуществляться с помощью календаря. Пользователь выбирает нужный день (по умолчанию выбрана сегодняшняя дата) и видит список **новых** объявлений на этот день (сервис INPARS позволяет это сделать).
Каждый элемент списка включает:
- Одну фотографию объекта (при наличие; иначе отображается заглушка)
- Категория объекта: *Продажа*, *Аренда*
- Время публикации
- Тип объекта: *Квартира*, *Студия*, *Дом*, *Дача*
- Адрес объекта
- Базовые сведения об объекте: *Площадь*, *Количество комнат (для квартир)*, *Цена*, *Цена за кв. метр*
- Тип контактного номера собственника: *Защищённый*, *Не защищённый*
> Защищённый конктакт обозначает ситуацию, когда вместо настоящего номера площадка (Циан или Авито) отображает подменный номер. Настоящие контакты риэлтору придётся узнавать у собственника самостоятельно.
- Кнопка *Показать контакты*
#### Кнопка "Показать контакты"
По нажатию на кнопку пользователю отображается модальное окно с предложением приобрести контакты собственника за определённую сумму. Защищённые контакты должны стоить **дешевле** обычных.
Средства должны списываться с личного счёта пользователя (личный счёт и пополнение счёта будет реализовываться параллельно с задачами из данного ТЗ).
После снятия средств пользователю отображаются имя и номер телефона собственника (если номер был защищён, то также нужно напомнить пользователю узнать во время разговора реальный номер). Также нужно написать, что данное объявления риэлтор может найти в разделе "Приобретённые заявки"
После приобретения заявка остаётся в общем списке, но кнопка "Показать контакты" блокируется; в элементе списка должен быть отображен тот факт, что контакты были приобретены другим агентом.
#### Раздел "Приобретённые заявки"
В верхней части страницы должен быть расположен переключатель - "Общая база", "Мои заявки". По умолчанию показывается общая база; при нажатии на "Мои заявки" должны показываться купленные пользователем контактов (как из базы объявлений, так и из базы горячих заявок) за всё время.
#### Автоворонка, риэлтор
Система должна с определённой периодичностью (например, раз в 6 дней) отправлять зарегистрированному риэлтору SMS-сообщение со следующим смыслом: *Внимание! В базе собственников ПлюсАгент добавлено [количество] новых контактов. Успей их получить! [ссылка]*
> Можно проработать альтернативное решение: рассылка в Viber https://stream-telecom.ru
## Задача 3. База горячих заявок от собственников
### Постановка
В разделе "База собственников" в верхней части страницы должен идти список текущих заявок на продажу объекта недвижимости.
### Требования
#### Подача заявки
Заявки собираются из модальной формы на главной странице. Форма заполняется собственниками. Форма включает в себя следующие поля:
- Категория заявки: *Продать* (по умолчанию), *Сдать в аренду*
- Тип объекта: *Квартира* (по умолчанию), *Дом*
- Вид объекта: для типа "Квартира": *Квартира* (по умолчанию), *Студия* *Аппартаменты*, *Пентхаус*; для типа *Дом*: *Частный дом* (по умолчанию), *Дача*, *Таунхаус*, *Часть дома*
- Адрес объекта; для этого поля должны отображаться поисковые подсказки, показывающиеся во время ввода адреса. Подсказки будут браться с сервиса геокодинга (похожее поле ввода с геокодингом уже реализовано).
- Площадь
- Количество комнат (для типа "Квартира")
- Цена
- Имя
- Конктактный телефон
После заполнения заявка отправляется в раздел "База собственников", а клиенту отображается сообщение со следующим смыслом: *Ваша заявка принята. Её увидит каждый специалист на платформе. Наиболее активный из них обязательно свяжется с вами в ближайшее время*.
#### Покупка заявки
В разделе "База собственников" риэлторы могут приобрести контакты собственников из заявки по аналогии с приобретением контактов собственников из парсинга (см. задача "База объявлений собственников").
Стоимость заявки должна быть выше, чем стоимость контактов из парсинга.
#### Автоворонка, собственник
После того как заявка была куплена, собственнику отправляется SMS-сообщение со следующим смыслом: `Спасибо что обратились в +Агент! Вам назначен специалист по недвижимости [имя], [телефона], [ссылка]. В ближайшее время он свяжется с Вами!`
## Задача 4. Определение количества звонков риэлтору
### Постановка
Для определения эффективности рекламных инструментов риэлтор должен иметь возможность в личном кабинете посмотреть количество звонков с номерами телефонов, поступивших ему с сайта.
Выбирая определённый период (конкретная дата, последние 7 дней, последние 30 дней, последние 90 дней, всё время) пользователь видит список телефонных номеров с датой и временем звонка.
Был найден наиболее дешёвый способ выполнить эту задачу - это [CallbackHunter](https://callbackhunter.com/) в связке с виртуальной АТС от [UIScom](https://www.uiscom.ru/virtualnaya-ats/).
### Требования
#### Виджет обратной связи
Необходимо настроить работающие личные кабинеты в CallbackHunter и UIScom. Для CallbackHunter будет использоваться тариф "Корпоративный" (при условии наличии телефонии от UIScom его стоимость будет равна стоимости тарифа "Полный"). Для UIScom подойдёт минимальный тариф.
Далее, необходимо встроить страницы каждого риэлтора виджет обратной связи, который будет появляться по нажатию на кнопку "Позвоните мне" (должно быть расположена на месте кнопки "Показать телефон" на изображении ниже).

Нажав на эту кнопку, клиент в стандартном виджете обратной связи CallbackHunter вводит свой телефон. Осуществляется запрос на сервисы CallbackHunter, которые связываются с виртуальной АТС. Она в свою очередь осуществляет два исходящих звонка: клиенту и риэлтору, связывая их.
#### Обмен контактами
После осуществления обратной связи система должна:
- Отправить клиенту СМС-сообщение со следующим смыслом: `Ваш ПлюсАгент: [имя] [телефон] [ссылка на страницу]`
- Оправить риэлтору СМС-сообщение с номером телефона клиента и временем осуществления контакта
#### Просмотр звонков
В меню агента риэлтору должна быть доступна ссылка на страницу "Поступившие звонки". На ней риэлтор может увидеть количество поступивших звонков за определенные периоды, а также увидеть детализацию по звонкам.
Просмотр детализации осуществляется за определённый период. Риэлтор видит список телефонных номеров с датой и временем звонка. Также там должен отображаться источник, откуда попал на страницу покупатель (т. е. UTM-метка, либо её отсутствие).
Для просмотра доступны следующие периоды:
- Конкретная дата (выбор в календаре)
- Последние 7 дней
- Последние 30 дней (по умолчанию)
- Последние 90 дней
- За всё время
## Задача 5. Подборки объектов для покупателей
### Постановка
Риэлтор должен иметь возможность составления подборки с объектами недвижимости для отправки её клиенту-покупателю.
В личном кабинете риэлтор должен иметь возможность просмотра журнала событий по каждому покупателю, когда-либо зашедшему по его подборке.
### Требования
#### Отправка подборки
Процесс составления подборки в системе реализован, однако нужно его доработать. Необходимо, чтобы по нажатию кнопки "Отправить подборку" открывал модальное окно, в котором риэлтору предлагалось ввести номер телефона покупателя.
Далее риэлтору показывается ссылка, в которую зашит идентификатор покупателя, основаный на введённом номере телефона.
Кроме ссылки, агенту доступно две кнопки: "Скопировать" и "Отправить по СМС". Примерный вид этого модального окна представлен на изображении ниже (иконки мессенджеров ведут на сайты скачивания соответствующих программ-клиентов).

Когда клиент заходит по такой ссылке, ему в куки записывается идентификатор, по которому далее составляется журнал действий клиента.
#### Журнал действия клиента
В меню агента риэлтору должна быть доступна ссылка на страницу "Покупатели и подборки". На данной странице должен быть представлен список телефонов клиентов, которые когда-либо заходили на подборки агента (отсортированых от новому к старому).
По нажатию на телефон агент должен увидеть список действий клиента (отсортированных от нового к старому) вместе с датой их совершения. Каждое действие имеет один из нижеперечисленных типов:
- Клиент открыл подборку [ID подборки]
- Клиент посмотрел объект [ID объекта] [ссылка на объект]
- Клиент добавил в избранное объект [ID объекта] [ссылка на объект]
#### Автоворонка: покупатель
Если система не зарегистрировала в течении 24 часов переход клиента по ссылке, система отправляет клиенту СМС со следующим смыслом: `Я надеюсь что моя подборка объектов не потеряла для вас актуальность [ссылка на подборку]. Ваш ПлюсАгент [имя].`