mirror of
https://github.com/task-17-lct/backend.git
synced 2024-11-27 12:23:45 +03:00
resolve confs
This commit is contained in:
commit
9e02502cb3
61866
data/cities.json
61866
data/cities.json
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
id:{
|
id:{
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -81,4 +82,89 @@
|
||||||
ya_id: str // Идентификатор города в справочнике на стороне Яндекс
|
ya_id: str // Идентификатор города в справочнике на стороне Яндекс
|
||||||
сoat_of_arms: list // Герб
|
сoat_of_arms: list // Герб
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
id:{
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
},
|
||||||
|
dictionary_data: { // собственно наполнение словарей
|
||||||
|
_id: str // нет
|
||||||
|
aliases: list // Псевдонимы
|
||||||
|
cg_images: list // Обложка CityGuide / Alfa travel
|
||||||
|
city: str // идентификатор города
|
||||||
|
country: list // идентификатор страны
|
||||||
|
description: str // описание
|
||||||
|
description_title: str // заголовок
|
||||||
|
external_id: str // внешний идентификатор
|
||||||
|
gallery: list // Галерея изображений
|
||||||
|
geo_data {
|
||||||
|
center_distance: float // расстояние до центра
|
||||||
|
coordinates: [ // Координаты (широта и долгота)
|
||||||
|
#.##, // широта
|
||||||
|
#.## // долгота
|
||||||
|
]
|
||||||
|
type: str // Тип геоданных (по умолчанию: points)
|
||||||
|
}
|
||||||
|
google_place {
|
||||||
|
use_manual_schedule: bool // Использовать google расписание
|
||||||
|
}
|
||||||
|
hp_images: list // HP Картинки
|
||||||
|
icon: [ // Иконка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Основное изображений
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // импорт запрещен
|
||||||
|
is_priority: bool // приоритет
|
||||||
|
list_image: list // идентификаторы и источники файлов изображений
|
||||||
|
on_map: list // Город на карте
|
||||||
|
rating: int // Рейтинг
|
||||||
|
region: str // Регион
|
||||||
|
short_description: str // Краткое описание
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
source: str // Источник данных
|
||||||
|
timezone: str // часовой пояс
|
||||||
|
title: str // Название
|
||||||
|
title_dative: str // Название в винительном падеже
|
||||||
|
title_genitive: str // Название в родительном падеже
|
||||||
|
travel_line_id: str // Идентификатор города в справочнике на стороне travelline (TravelLine ID)
|
||||||
|
weather_sync: bool // Признак синхронизации погоды
|
||||||
|
working_time: {
|
||||||
|
days: {
|
||||||
|
Mon: {
|
||||||
|
closed: bool // Нерабочий день Понедельник
|
||||||
|
}
|
||||||
|
Tue: {
|
||||||
|
closed: bool // Нерабочий день Вторник
|
||||||
|
}
|
||||||
|
Wed: {
|
||||||
|
closed: bool // Нерабочий день Среда
|
||||||
|
}
|
||||||
|
Thu: {
|
||||||
|
closed: bool // Нерабочий день Четверг
|
||||||
|
}
|
||||||
|
Fri: {
|
||||||
|
closed: bool // Нерабочий день Пятница
|
||||||
|
}
|
||||||
|
Sat: {
|
||||||
|
closed: bool // Нерабочий день Суббота
|
||||||
|
}
|
||||||
|
Sun: {
|
||||||
|
closed: bool // Нерабочий день Воскресенье
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ya_id: str // Идентификатор города в справочнике на стороне Яндекс
|
||||||
|
сoat_of_arms: list // Герб
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id:{
|
_id:{
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -124,3 +125,131 @@
|
||||||
youtube_videos: list // YouTube ролики
|
youtube_videos: list // YouTube ролики
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id:{
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
},
|
||||||
|
dictionary_data: { // собственно наполнение коллекций
|
||||||
|
_id: str // нет
|
||||||
|
aac_images: list // ААЦ Изображения
|
||||||
|
aac_tags: list // AAC Тэги
|
||||||
|
about_booking: str // Дополнительная информация о покупке билета
|
||||||
|
age: str // Возрастное ограничение
|
||||||
|
billing_product_id: int // Идентификатор продукта в биллинге
|
||||||
|
booking_link: str // Ссылка на покупку билета
|
||||||
|
cg_announcement: str // Краткое описание события
|
||||||
|
cg_recommendations: list // CG: Рекомендации членов клуба Prime
|
||||||
|
city: str // id города (справочник cities)
|
||||||
|
creator: str // Кто создал запись
|
||||||
|
description: str // Описание
|
||||||
|
disable_sessionids_autoupdate: bool // Не обновлять автоматически sessionIds
|
||||||
|
discover_moscow_link: str // ссылка на Discover.Moscow
|
||||||
|
duration: str // Продолжительность, мин
|
||||||
|
event_type: str // Тип события
|
||||||
|
galereya: list // Галерея
|
||||||
|
id_izi_travel: str // Идентификатор izi.travel
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображение обложки
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
information_pages: list // Информационные страницы
|
||||||
|
is_can_buy: bool // Можно купить
|
||||||
|
is_priority: bool // Приоритетное событие
|
||||||
|
link_source: str // Ссылка на источник события
|
||||||
|
parser_source: str // Источник импорта
|
||||||
|
partner: str // Партнер
|
||||||
|
partner_type: str // Тип партнера
|
||||||
|
payment_method: str // Метод покупки
|
||||||
|
place: list // Площадка проведения события (справочник places)
|
||||||
|
pravila-soglasovaniya: bool // Правила согласования
|
||||||
|
purchase_addtitional_info: str // Дополнительная информация к стоимости
|
||||||
|
purchase_method: str // Метод покупки (старый)
|
||||||
|
recommendation_prime: list // City Guide Рекомендации
|
||||||
|
region: str // Регион
|
||||||
|
remote_event_id: str // нет
|
||||||
|
remote_place_id: str // нет
|
||||||
|
restaurants: list // Рестораны проведения события
|
||||||
|
rp_price_id: int // Идентификатор тарифа в биллинге
|
||||||
|
russpass_recommendation: bool // RUSSPASS рекомендует
|
||||||
|
schedule: [ // Расписание
|
||||||
|
{
|
||||||
|
title: str // заголовок
|
||||||
|
start: {
|
||||||
|
$date: str // Дата и время начала
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
$date: str // Дата и время окончания
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
schedule_description: str // Дополнительная информация к расписанию
|
||||||
|
scheduleUpdatedByPlace: bool // нет
|
||||||
|
sessionId: str // sessionId
|
||||||
|
sessionIds: [ // sessionIds
|
||||||
|
{
|
||||||
|
id: str // id сессии
|
||||||
|
startTime: str // Дата время начала
|
||||||
|
endTime: str // Дата время окончания
|
||||||
|
timezone: str // Временная зона
|
||||||
|
isAllDay: bool // Длитяс ли весь день
|
||||||
|
}
|
||||||
|
]
|
||||||
|
social_buttons: list // Кнопки социальных сетей
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
tags: list // Тэги
|
||||||
|
tags_main_screen: list // Тэг главного экрана
|
||||||
|
ticket_price: str // Стоимость билета
|
||||||
|
timetable_by_place: [ // Расписание и сессии по площадкам(Yandex Afisha)
|
||||||
|
{
|
||||||
|
placeId: str // id места (справочник places)
|
||||||
|
sessionIds: [
|
||||||
|
{
|
||||||
|
id: str // id сессии
|
||||||
|
startTime: str // Дата время начала
|
||||||
|
endTime: str // Дата время окончания
|
||||||
|
timezone: str // Временная зона
|
||||||
|
isAllDay: bool // Длитяс ли весь день
|
||||||
|
}
|
||||||
|
]
|
||||||
|
schedule: [ // Расписание
|
||||||
|
{
|
||||||
|
title: str // заголовок
|
||||||
|
start: {
|
||||||
|
$date: str // Дата и время начала
|
||||||
|
}
|
||||||
|
end: {
|
||||||
|
$date: str // Дата и время окончания
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
title: str // Заголовок
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
without_schedule: bool // Событие без расписания
|
||||||
|
ya_id: str // Идентификатор города в справочнике на стороне Яндекс
|
||||||
|
youtube_video_url: str // Ссылка на видео в Youtube
|
||||||
|
youtube_videos: list // YouTube ролики
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -98,3 +99,105 @@
|
||||||
without_schedule: bool // Признак, показывающий, отсутствует расписание у активности: true, false
|
without_schedule: bool // Признак, показывающий, отсутствует расписание у активности: true, false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
},
|
||||||
|
dictionary_data: {
|
||||||
|
audioguide: bool // наличие аудиогида
|
||||||
|
campaign: list // id кампании (акции)
|
||||||
|
city: str // идентификатор города
|
||||||
|
description: str // описание
|
||||||
|
duration: str // длительность минуты
|
||||||
|
duration_hours: float // длительность часы
|
||||||
|
duration_string: str // длительность часы
|
||||||
|
event_type: str // тип события
|
||||||
|
excursion_form: str // Способ передвижения
|
||||||
|
excursion_type: str // Тип экскурсии
|
||||||
|
html_file: list // html файл
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью картитнки
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Список изображений
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
information_pages: list // Информационные страницы
|
||||||
|
is_can_buy: bool // Возможность покупки
|
||||||
|
is_priority: bool // Признак приоритета
|
||||||
|
language: list // Язык проведения
|
||||||
|
min_age: str // Минимальный возраст
|
||||||
|
minGroupCount: str // Минимальное количество группы
|
||||||
|
parser_source: str // Источник импорта
|
||||||
|
partner: str // Партнер
|
||||||
|
partner_logo: list // Логотипы партнёра
|
||||||
|
pravila-soglasovaniya: bool // Правила согласования
|
||||||
|
price: int // Цена от
|
||||||
|
program: str // Программа экскурсий
|
||||||
|
region: str // Регион
|
||||||
|
route: [ // Основные события
|
||||||
|
{
|
||||||
|
title: str // заголовок
|
||||||
|
day_contents: { // события, посещения внутри дня
|
||||||
|
dictionaries: list // Используемые словари
|
||||||
|
selected: [ // события / рестораны и прочие участвующие
|
||||||
|
{
|
||||||
|
id: str
|
||||||
|
active: bool
|
||||||
|
}
|
||||||
|
]
|
||||||
|
active: list // список активностей
|
||||||
|
}
|
||||||
|
events: [ // список событий
|
||||||
|
{
|
||||||
|
title: str
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
geo_data: {
|
||||||
|
coordinates: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
russpass_recommendation: bool // Признак значка "RUSSPASS рекомендует" true / false
|
||||||
|
schedule_excursion: str // Расписание проведения экскурсии
|
||||||
|
season_end: date // Дата конца сезона
|
||||||
|
season_start: date // Дата начала сезона
|
||||||
|
short_description: str // Краткое описание экскурсий
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
tags: list // Тэги дополнительные
|
||||||
|
tags_main_screen: list // Тэг главного экрана
|
||||||
|
title: str // Заголовок
|
||||||
|
tour_composition: [ // Состав экскурсии
|
||||||
|
{
|
||||||
|
title: str
|
||||||
|
list: list
|
||||||
|
}
|
||||||
|
]
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
without_schedule: bool // Признак, показывающий, отсутствует расписание у активности: true, false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id:{
|
_id:{
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -102,3 +103,109 @@
|
||||||
title: str // Название
|
title: str // Название
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id:{
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
},
|
||||||
|
dictionary_data: {
|
||||||
|
address: str // адрес отеля
|
||||||
|
arrival_time: str // Время заезда
|
||||||
|
beach_services: list // Список услуг отеля связанных с пляжным отдыхом
|
||||||
|
city: str // Город
|
||||||
|
common_services: list // Список общих услуг отеля
|
||||||
|
departure_time: str // Время выезда
|
||||||
|
description: str // Описание отеля
|
||||||
|
email: str // Контактный email
|
||||||
|
entertainment_services: list // Список услуг отеля связанных с развлечением
|
||||||
|
facility_services: list // Список общих удобств отеля
|
||||||
|
fitness_services: list // Список услуг отеля связанных со здоровьем и красотой
|
||||||
|
geo_data: {
|
||||||
|
center_distance: float // расстояние до центра города
|
||||||
|
coordinates: [ // Координаты (широта и долгота)
|
||||||
|
#.##, // широта
|
||||||
|
#.## // долгота
|
||||||
|
]
|
||||||
|
type: str // Тип координат
|
||||||
|
}
|
||||||
|
google_place: { // информация из Google
|
||||||
|
meta: { // доп информация
|
||||||
|
formatted_address: str // Адрес Google
|
||||||
|
update_time: str // дата и время последнего обновления
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hotel_rooms: { // наличие типов комнат
|
||||||
|
active: list // список активных комнат
|
||||||
|
dictionaries: list // id словаря который описывает комнаты
|
||||||
|
selected: [ // все доступные комнаты
|
||||||
|
{
|
||||||
|
id: str
|
||||||
|
active: bool
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображения
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
import_denied_reason: str // Причина отклонения модератором
|
||||||
|
integration_id: str // id интеграции
|
||||||
|
meals: list // услуги питания
|
||||||
|
parser_source: str // Условный код внешней системы откуда было загружено событие Yandex Afisha – ya/afisha; infotech – INFOTECH; LeClick– leclick/restaurants; LKP Личный кабинет партнёров
|
||||||
|
partner: str // id партнёра
|
||||||
|
partner_is_not_moderated: bool // Партнёр не проходил модерацию
|
||||||
|
partner_system_type: str // Наименование системы партнера
|
||||||
|
phones: list // Контактные телефоны
|
||||||
|
region: str // Регион
|
||||||
|
rooms: [ // Список объектов содержащий информацию о номерах
|
||||||
|
{
|
||||||
|
name: str // Название комнат
|
||||||
|
description: str // Описание комнат
|
||||||
|
images: list // Изображения комнат
|
||||||
|
integration_id: str // id интеграции
|
||||||
|
rate_plans: [ // Тарифы комнаты
|
||||||
|
{
|
||||||
|
integration_id: str // id интеграции
|
||||||
|
name: str // Наименование тарифа
|
||||||
|
description: str // Описание тарифа
|
||||||
|
currency: str // Валюта тарифа
|
||||||
|
services: list // Услуги тарифа
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
russpass_recommendation: bool // Признак значка "RUSSPASS рекомендует" true / false
|
||||||
|
services: [ // Услуги отеля
|
||||||
|
{
|
||||||
|
name: str // Название услуги
|
||||||
|
description: str // Описание услуги
|
||||||
|
kind: str // Тип услуги
|
||||||
|
mealPlanCode: str // Код услуги питания
|
||||||
|
integration_id: str // id интеграции
|
||||||
|
}
|
||||||
|
]
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
stars: str // Звёзд отеля
|
||||||
|
time_zone: str // Временная зона
|
||||||
|
title: str // Название
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
|
|
757846
data/places.json
757846
data/places.json
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -275,4 +276,283 @@
|
||||||
working_time_description: str // Примечание ко времени работы
|
working_time_description: str // Примечание ко времени работы
|
||||||
ya_afisha_id: str // Yandex Afisha ID
|
ya_afisha_id: str // Yandex Afisha ID
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
}
|
||||||
|
dictionary_data: {
|
||||||
|
address: str // адрес места
|
||||||
|
cg_recommendations: list // CG: Рекомендации членов клуба Prime
|
||||||
|
chain: list // Сеть
|
||||||
|
city: list // Город
|
||||||
|
country: list // идентификатор страны (дублирует strana)
|
||||||
|
creator: str // Кто создал запись
|
||||||
|
description: str // Описание места
|
||||||
|
district: list // Список районов из выборки
|
||||||
|
emails: list[str] // Контактные email-ы
|
||||||
|
exter_spot_id: int // Идентификатор площадки в ЕБС
|
||||||
|
external_id: str // id места из внешней системы
|
||||||
|
geo_data: {
|
||||||
|
center_distance: float // расстояние до центра города
|
||||||
|
coordinates: [ // Координаты (широта и долгота)
|
||||||
|
#.##, // широта
|
||||||
|
#.## // долгота
|
||||||
|
]
|
||||||
|
type: str // Тип координат
|
||||||
|
}
|
||||||
|
google_place: { // Google Place
|
||||||
|
meta: {
|
||||||
|
formatted_address: str // Адрес Google
|
||||||
|
international_phone_number: str // Номер телефона
|
||||||
|
place_id: str // id места из внешней системы
|
||||||
|
update_time: str // дата и время последнего обновления
|
||||||
|
vicinity: str // "около"
|
||||||
|
website: str // сайт места
|
||||||
|
}
|
||||||
|
schedule_google: { // Расписание google
|
||||||
|
all: {
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
days: { // Объекты дней недели
|
||||||
|
Sun: { // Воскресенье
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Mon: { // Понедельник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Tue: { // Вторник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Wed: { // Среда
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Thu: { // Четверг
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Fri: { // Пятница
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Sat: { // Суббота
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
use_manual_schedule: bool // Применять ручное расписание
|
||||||
|
}
|
||||||
|
holding: str // Холдинг
|
||||||
|
hotels_types: list // Тип отеля
|
||||||
|
hp_images: list // HP Изображения
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображения
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
import_denied_reason: str // Причина отклонения модератором
|
||||||
|
is_showed_in_placeslist: bool // Отображать в списке площадок
|
||||||
|
metro: list // список id станций метро
|
||||||
|
parser_source: str // Условный код внешней системы откуда было загружено событие Yandex Afisha – ya/afisha; infotech – INFOTECH; LeClick– leclick/restaurants; LKP Личный кабинет партнёров
|
||||||
|
partner: list // id партнёра
|
||||||
|
partner_subtype: list // Подтип партнера ПП
|
||||||
|
partner_system: list // Партнерская система
|
||||||
|
partner_type: str // Тип партнера
|
||||||
|
phones: list // Контактные телефоны
|
||||||
|
place_note: str // Доп информация
|
||||||
|
post_code: str // Почтовый индекс
|
||||||
|
pravila-soglasovaniya: bool // Правила согласования
|
||||||
|
privileges_prime: list // Привилегии Prime
|
||||||
|
promo: list // Условный код промо слова
|
||||||
|
region: str // Регион
|
||||||
|
remote_place_id: str // нет
|
||||||
|
route_description: str // Описание для пути, проходящего
|
||||||
|
short_title: str // Короткое название
|
||||||
|
sites: list // web сайты
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
source: str // Источник данных
|
||||||
|
strana: list // идентификатор страны (дублирует country)
|
||||||
|
tags: list // Тэги дополнительные
|
||||||
|
tags_main_screen: list // Тэги главного экрана
|
||||||
|
testovaya-ploshadkakf: str // Тестовая площадкаКФ
|
||||||
|
tet: { // Тет
|
||||||
|
coordinates: list
|
||||||
|
}
|
||||||
|
title: str // Название
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
working_time: { // График работы площадки
|
||||||
|
all: {
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
days: { // Объекты дней недели
|
||||||
|
Sun: { // Воскресенье
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Mon: { // Понедельник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Tue: { // Вторник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Wed: { // Среда
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Thu: { // Четверг
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Fri: { // Пятница
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Sat: { // Суббота
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
working_time_description: str // Примечание ко времени работы
|
||||||
|
ya_afisha_id: str // Yandex Afisha ID
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
18432
data/regions.json
18432
data/regions.json
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -51,4 +52,59 @@
|
||||||
url: str // Официальный адрес сайт региона/ОИВа
|
url: str // Официальный адрес сайт региона/ОИВа
|
||||||
сoat_of_arms: list // Герб (аналог: coat_of_arms)
|
сoat_of_arms: list // Герб (аналог: coat_of_arms)
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
}
|
||||||
|
dictionary_data: {
|
||||||
|
city: list // Список городов
|
||||||
|
coat_of_arms: list // Герб (аналог: сoat_of_arms)
|
||||||
|
code_ott_avia_from: str // Код региона откуда (города) в onetwotrip для авиабилетов
|
||||||
|
code_ott_avia_to: str // Код региона куда (города) в onetwotrip для авиабилетов
|
||||||
|
code_ott_rzd_from: str // Код региона откуда (города) в onetwotrip жд билетов
|
||||||
|
code_ott_rzd_to: str // Код региона куда (города) в onetwotrip жд билетов
|
||||||
|
country: str // Страна
|
||||||
|
description: str // Детальное описание
|
||||||
|
description_title: str // Заголовок детального описания
|
||||||
|
external_id: str // Внешний ID
|
||||||
|
gallery: list // Галерея изображений
|
||||||
|
icon: [ // Иконка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Основное изображение
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
map_info: str // Информация для карты
|
||||||
|
on_map: [ // Регион на карте
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
price_hotel: int // Цена билета за ночь (отель)
|
||||||
|
short_description: str // Краткое описание
|
||||||
|
showcase_cards: list // Активности на витрине региона
|
||||||
|
showcase_description: str // Описание на витрине региона
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
time_zone: list // Часовой пояс
|
||||||
|
title: str // Заголовок
|
||||||
|
title_accusative: str // Название в винительном падеже
|
||||||
|
title_dative: str // Название в дательном падеже
|
||||||
|
title_genitive: str // Название в родительном падеже
|
||||||
|
travel_line_id: str // TravelLine ID
|
||||||
|
url: str // Официальный адрес сайт региона/ОИВа
|
||||||
|
сoat_of_arms: list // Герб (аналог: coat_of_arms)
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
261894
data/restaurants.json
261894
data/restaurants.json
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -285,4 +286,293 @@
|
||||||
}
|
}
|
||||||
working_time_description: str // Примечание ко времени работы
|
working_time_description: str // Примечание ко времени работы
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
}
|
||||||
|
dictionary_data: {
|
||||||
|
_id: str // нет
|
||||||
|
address: str // Адрес
|
||||||
|
avg_price_level: str // Уровень цен
|
||||||
|
avg_time_visit: int // Среднее время посещения, мин
|
||||||
|
bill: int // Средний чек
|
||||||
|
can_reserve: bool // Доступен для бронирования
|
||||||
|
cg_recommendations: list // Рекомендации членов клуба Prime
|
||||||
|
chain: list // Сеть
|
||||||
|
children: list // Дети
|
||||||
|
city: list // Город
|
||||||
|
country: list // Страна
|
||||||
|
cuisines: list // Кухни
|
||||||
|
description: str // Описание
|
||||||
|
district: list // Район
|
||||||
|
emails: list // Электронные почты
|
||||||
|
external_id: str // Внешний ID
|
||||||
|
external_status: int // нет
|
||||||
|
geo_data: {
|
||||||
|
center_distance: float // расстояние до центра города
|
||||||
|
coordinates: [ // Координаты (широта и долгота)
|
||||||
|
#.##, // широта
|
||||||
|
#.## // долгота
|
||||||
|
]
|
||||||
|
type: str // Тип координат
|
||||||
|
}
|
||||||
|
google_place: { // Google Place
|
||||||
|
meta: {
|
||||||
|
formatted_address: str // Адрес Google
|
||||||
|
international_phone_number: str // Номер телефона
|
||||||
|
place_id: str // id места из внешней системы
|
||||||
|
update_time: str // дата и время последнего обновления
|
||||||
|
vicinity: str // "около"
|
||||||
|
website: str // сайт места
|
||||||
|
}
|
||||||
|
schedule_google: { // Расписание google
|
||||||
|
all: {
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
days: { // Объекты дней недели
|
||||||
|
Sun: { // Воскресенье
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Mon: { // Понедельник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Tue: { // Вторник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Wed: { // Среда
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Thu: { // Четверг
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Fri: { // Пятница
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Sat: { // Суббота
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
use_manual_schedule: bool // Применять ручное расписание
|
||||||
|
}
|
||||||
|
guides: list // Гиды
|
||||||
|
holding: str // Холдинг
|
||||||
|
hp_images: list // Изображения Hotel Prime
|
||||||
|
icons: [ // Тэги ресторана (Особенности)
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображения
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images360: list // 360 изображения
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
menu_type: list // Тип меню
|
||||||
|
metro: list // Метро
|
||||||
|
parser_source: str // Источник импорта
|
||||||
|
partner: str // Партнер
|
||||||
|
partner_subtype: list // Подтип партнера ПП
|
||||||
|
partner_type: list // Тип партнера
|
||||||
|
phones: list // Телефоны
|
||||||
|
post_code: str // Почтовый индекс
|
||||||
|
promo: list // Промоакции
|
||||||
|
rating_prime: str // Рейтинг Prime
|
||||||
|
region: str // Регион
|
||||||
|
remote_id: str // ID Ресторана
|
||||||
|
remote_status: int // нет
|
||||||
|
rest_id: str // нет
|
||||||
|
rest_services: list // Услуги ресторанов
|
||||||
|
route_description: str // Как добраться
|
||||||
|
russpass_recommendation: bool // RUSSPASS рекомендует
|
||||||
|
short_description: str // Краткое описание
|
||||||
|
showcase_filter: list // Фильтрация по витринам
|
||||||
|
sites: list // web сайты
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
source: str // нет
|
||||||
|
subcategories: list // Подкатегория
|
||||||
|
tags: list // Тэги основные (фильтр)
|
||||||
|
tags_main_screen: list // Тэг главного экрана
|
||||||
|
title: str // Название
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
working_time: { // График работы площадки
|
||||||
|
all: {
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
days: { // Объекты дней недели
|
||||||
|
Sun: { // Воскресенье
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Mon: { // Понедельник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Tue: { // Вторник
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Wed: { // Среда
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Thu: { // Четверг
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Fri: { // Пятница
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
Sat: { // Суббота
|
||||||
|
breaks: [ // перерывы
|
||||||
|
{
|
||||||
|
startTime: str // время начала перерыва
|
||||||
|
endTime: str // время конца перерыва
|
||||||
|
}
|
||||||
|
]
|
||||||
|
closed: bool // Закрыта ли на целый день активность или нет; true - закрыто
|
||||||
|
endTime: str // Время окончания работы
|
||||||
|
startTime: str // Время начала работы
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
working_time_description: str // Примечание ко времени работы
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
672
data/routes.json
672
data/routes.json
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"_id": {
|
"_id": {
|
||||||
|
@ -667,4 +668,675 @@
|
||||||
"title": "St.-Petersburg CityPass на 2 дня"
|
"title": "St.-Petersburg CityPass на 2 дня"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"_id": {
|
||||||
|
"$oid": "63ce792cb792256419d55e28"
|
||||||
|
},
|
||||||
|
"dictionary_data": {
|
||||||
|
"type_audio_guide": [],
|
||||||
|
"region": "5d08e36dad3a9a001701b95b",
|
||||||
|
"information_pages": [
|
||||||
|
"5ed7a8a9070b700019e2d3cc",
|
||||||
|
"5ed7aaed7437c000194f1972"
|
||||||
|
],
|
||||||
|
"image_explore_preview": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce70b1b792256419d51be2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"image_detailed_page_main": [],
|
||||||
|
"tags_main_screen": [
|
||||||
|
"5e4aa3aca7edd0687c4688e1"
|
||||||
|
],
|
||||||
|
"rp_price_id": 39665,
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce7095b792256419d51b90"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce7099b792256419d51b94"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce709db792256419d51ba7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce70a2b792256419d51baa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce70a6b792256419d51bbf"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce70a9b792256419d51bca"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "63ce70adb792256419d51bd8"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"route": {
|
||||||
|
"dictionaries": [
|
||||||
|
"5a673061e97c730010ac6281"
|
||||||
|
],
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"id": "5f146cfa448801001847422d",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5f2bfb47a0eff200185761cc",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e67af0ea4ba9e001a93240f",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a45826e00001944d0ee",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561770826e00001944d02c",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619e8826e00001944d0d0",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5617c6826e00001944d042",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619a6826e00001944d0c2",
|
||||||
|
"active": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"active": [
|
||||||
|
"5f146cfa448801001847422d",
|
||||||
|
"5f2bfb47a0eff200185761cc",
|
||||||
|
"5e67af0ea4ba9e001a93240f",
|
||||||
|
"5e561a45826e00001944d0ee",
|
||||||
|
"5e561770826e00001944d02c",
|
||||||
|
"5e5619e8826e00001944d0d0",
|
||||||
|
"5e5617c6826e00001944d042",
|
||||||
|
"5e5619a6826e00001944d0c2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": "Moscow CityPass Express ― это новый формат карты гостя столицы. В ее стоимость включены увлекательные экскурсии и бесплатное посещение интереснейших мест города, а срок действия составляет целых 30 дней. Туристы смогут познакомиться с главными достопримечательностями Москвы во время путешествия на двухэтажном автобусе, побывать на стадионе «Лужники» и прокатиться по канатной дороге, полюбоваться панорамными видами на мегаполис со смотровой площадки в сталинской высотке, прогуляться по «Зарядью» в компании гида и посетить музеи, которые известны на весь мир. Получить карту Moscow CityPass Express можно в Музее советских игровых автоматов.\n",
|
||||||
|
"sort": 60,
|
||||||
|
"time": "90",
|
||||||
|
"packet_price": 5100,
|
||||||
|
"route_tags": [],
|
||||||
|
"city": "5bbe8a8a9e7fcb000f78a92d",
|
||||||
|
"import_denied": false,
|
||||||
|
"title": "Moscow CityPass Express"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": {
|
||||||
|
"$oid": "5e58fffb7849960019a7e18a"
|
||||||
|
},
|
||||||
|
"dictionary_data": {
|
||||||
|
"is_priority": false,
|
||||||
|
"is_can_buy": false,
|
||||||
|
"type_audio_guide": [],
|
||||||
|
"region": "5d08e36dad3a9a001701b95b",
|
||||||
|
"information_pages": [
|
||||||
|
"5ed7a8a9070b700019e2d3cc",
|
||||||
|
"5ed7aaed7437c000194f1972"
|
||||||
|
],
|
||||||
|
"short_description": "Пластиковая смарт карта Moscow CityPass откроет двери всех главных достопримечательностей столицы! ",
|
||||||
|
"image_explore_preview": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "623982ee994c9997315b6917"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"image_detailed_page_main": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "705a663b-41c4-430f-abf9-814f493c0c52",
|
||||||
|
"avg": "rgba(125, 136, 148, 0.4)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags_main_screen": [
|
||||||
|
"5e4aa3aca7edd0687c4688e1"
|
||||||
|
],
|
||||||
|
"billing_product_id": 3507,
|
||||||
|
"rp_price_id": 6301,
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "635fce9512bcf2bb9a7508b9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "635fce9912bcf2bb9a7508d3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"route": {
|
||||||
|
"active": [
|
||||||
|
"5e561615826e00001944cfe2",
|
||||||
|
"5e561627826e00001944cfe6",
|
||||||
|
"5e561760826e00001944d027",
|
||||||
|
"5e561768826e00001944d029",
|
||||||
|
"5e561770826e00001944d02c",
|
||||||
|
"5e561784826e00001944d030",
|
||||||
|
"5e561815826e00001944d067",
|
||||||
|
"5e56181d826e00001944d069",
|
||||||
|
"5e56193a826e00001944d0ac",
|
||||||
|
"5e5617b9826e00001944d03e",
|
||||||
|
"5e5617e5826e00001944d04b",
|
||||||
|
"5e561800826e00001944d05e",
|
||||||
|
"5e5617c6826e00001944d042",
|
||||||
|
"5e561948826e00001944d0b0",
|
||||||
|
"5e561964826e00001944d0b4",
|
||||||
|
"5e56169d826e00001944cfff",
|
||||||
|
"5e5619ad826e00001944d0c4",
|
||||||
|
"5e5619f0826e00001944d0d2",
|
||||||
|
"5e5619a6826e00001944d0c2",
|
||||||
|
"5e56199a826e00001944d0c0",
|
||||||
|
"5e5618b5826e00001944d08b",
|
||||||
|
"5e561729826e00001944d01c",
|
||||||
|
"5e561950826e00001944d0b2",
|
||||||
|
"5e5619e8826e00001944d0d0",
|
||||||
|
"5e5616b4826e00001944d005",
|
||||||
|
"5e5616ac826e00001944d003",
|
||||||
|
"5e5616a5826e00001944d001",
|
||||||
|
"5e561941826e00001944d0ae",
|
||||||
|
"5e5616e6826e00001944d00f",
|
||||||
|
"5e561636826e00001944cfea",
|
||||||
|
"5e5619d9826e00001944d0cc",
|
||||||
|
"5e5619c4826e00001944d0ca",
|
||||||
|
"5e5619bc826e00001944d0c8",
|
||||||
|
"5e5619b4826e00001944d0c6",
|
||||||
|
"5e56196c826e00001944d0b6",
|
||||||
|
"5e561974826e00001944d0b8",
|
||||||
|
"5e56197b826e00001944d0ba",
|
||||||
|
"5e56198a826e00001944d0be",
|
||||||
|
"5e561898826e00001944d087",
|
||||||
|
"5e56171a826e00001944d017",
|
||||||
|
"5e561982826e00001944d0bc",
|
||||||
|
"5e561a38826e00001944d0ec",
|
||||||
|
"5e561a4e826e00001944d0f0",
|
||||||
|
"5e561759826e00001944d025",
|
||||||
|
"5e561a45826e00001944d0ee",
|
||||||
|
"5e561a5e826e00001944d0f4",
|
||||||
|
"5e561a56826e00001944d0f2",
|
||||||
|
"5e561a26826e00001944d0e8"
|
||||||
|
],
|
||||||
|
"dictionaries": [
|
||||||
|
"5bb51b424390424300d06a41",
|
||||||
|
"5a673061e97c730010ac6281"
|
||||||
|
],
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"id": "5e561615826e00001944cfe2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561627826e00001944cfe6",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561760826e00001944d027",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561768826e00001944d029",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5617a2826e00001944d03a",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561770826e00001944d02c",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561784826e00001944d030",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561815826e00001944d067",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56181d826e00001944d069",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56193a826e00001944d0ac",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5617b9826e00001944d03e",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5617e5826e00001944d04b",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561800826e00001944d05e",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5617c6826e00001944d042",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561948826e00001944d0b0",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561964826e00001944d0b4",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56169d826e00001944cfff",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619ad826e00001944d0c4",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619f0826e00001944d0d2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619a6826e00001944d0c2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56199a826e00001944d0c0",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5618b5826e00001944d08b",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561729826e00001944d01c",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561950826e00001944d0b2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619e8826e00001944d0d0",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5616b4826e00001944d005",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5616ac826e00001944d003",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5616a5826e00001944d001",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561941826e00001944d0ae",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5616e6826e00001944d00f",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561636826e00001944cfea",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619d9826e00001944d0cc",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619c4826e00001944d0ca",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619bc826e00001944d0c8",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619b4826e00001944d0c6",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56196c826e00001944d0b6",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561974826e00001944d0b8",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56197b826e00001944d0ba",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56198a826e00001944d0be",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561898826e00001944d087",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56171a826e00001944d017",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561982826e00001944d0bc",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5619e1826e00001944d0ce",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a38826e00001944d0ec",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a4e826e00001944d0f0",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561759826e00001944d025",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a45826e00001944d0ee",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a5e826e00001944d0f4",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a56826e00001944d0f2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561a26826e00001944d0e8",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e56162f826e00001944cfe8",
|
||||||
|
"active": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": "Пластиковая смарт карта Moscow CityPass откроет двери всех главных достопримечательностей столицы! Экскурсии по суше и воде, проход в музеи без очередей, скидки в ресторанах и 15 поездок на общественном транспорте — и все это бесплатно! В турпакет включены более 40 достопримечательностей и 6 экскурсионных туров разных форматов. Скучать не придется! \n\nИспользуя карту Moscow CityPass, вы можете посетить каждый объект программы, но не более одного раза, в течение срока действия карты (кроме билетов на City Sightseeing Bus. Они бывают нескольких видов на 24, 48 и 72 часа. Вы можете выходить и заходить обратно на любой из остановок неограниченное количество раз в течение срока действия билета).",
|
||||||
|
"sort": 96,
|
||||||
|
"time": "48",
|
||||||
|
"packet_price": 6500,
|
||||||
|
"route_tags": [
|
||||||
|
"5e4fa298d067450019abf839",
|
||||||
|
"5e4f9f18d067450019abf806",
|
||||||
|
"5e4fa278d067450019abf834",
|
||||||
|
"5e4fa0a4d067450019abf81c",
|
||||||
|
"5ec3ee769bee8c001946a9a7",
|
||||||
|
"5ec3ee40bfdeb400197cbe8e"
|
||||||
|
],
|
||||||
|
"city": "5bbe8a8a9e7fcb000f78a92d",
|
||||||
|
"import_denied": false,
|
||||||
|
"title": "Moscow CityPass на 2 дня"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": {
|
||||||
|
"$oid": "5e5902357849960019a7e25e"
|
||||||
|
},
|
||||||
|
"dictionary_data": {
|
||||||
|
"type_audio_guide": [],
|
||||||
|
"region": "5d08e36dad3a9a001701b94c",
|
||||||
|
"information_pages": [
|
||||||
|
"5ed7a8a9070b700019e2d3cc",
|
||||||
|
"5f132560448801001846dfc0"
|
||||||
|
],
|
||||||
|
"service_count": null,
|
||||||
|
"activity_count": null,
|
||||||
|
"short_description": "Карта гостя Санкт-Петербурга, ключ к главным достопримечательностям города и не только!",
|
||||||
|
"image_explore_preview": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "6351452112bcf2bb9a0c8e7c"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"image_detailed_page_main": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "5f16ea774488010018484d59"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags_main_screen": [
|
||||||
|
"5e4aa3aca7edd0687c4688e1"
|
||||||
|
],
|
||||||
|
"rp_price_id": 7101,
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "635fc95f12bcf2bb9a748e5c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"id": "635fc96412bcf2bb9a748e60"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"route": {
|
||||||
|
"active": [
|
||||||
|
"5c1ce09d514196d20547020e",
|
||||||
|
"5e5615db826e00001944cfd2",
|
||||||
|
"5e5615e9826e00001944cfd6",
|
||||||
|
"5e55a62a826e00001944c86c",
|
||||||
|
"5e5e331d2fc00200193460d3",
|
||||||
|
"5e561606826e00001944cfe0",
|
||||||
|
"5e5615ff826e00001944cfde",
|
||||||
|
"5e5e473d2fc00200193461b6",
|
||||||
|
"5e5e531e2fc00200193461f4",
|
||||||
|
"5e5e49822fc00200193461c2",
|
||||||
|
"5e5e4bf42fc00200193461d1",
|
||||||
|
"5e5e561a2fc002001934620c",
|
||||||
|
"5e5e45052fc00200193461a1",
|
||||||
|
"5e55a346b333bd0019d18d2c",
|
||||||
|
"5e5e29d82fc0020019346078",
|
||||||
|
"5e5615e1826e00001944cfd4",
|
||||||
|
"5e5d676d88e8040019cda132",
|
||||||
|
"5e5e42982fc0020019346184",
|
||||||
|
"5e5615f8826e00001944cfdc",
|
||||||
|
"5e5e6903ccb7de00197f8abd",
|
||||||
|
"5e5e5e45ccb7de00197f8aa3",
|
||||||
|
"5e5e6e30ccb7de00197f8aec",
|
||||||
|
"5e590ac47849960019a7e44b",
|
||||||
|
"5e590a777849960019a7e445",
|
||||||
|
"5e57735d2c129400197af134",
|
||||||
|
"5f130fb1448801001846dec8",
|
||||||
|
"5e5e6fe8ccb7de00197f8af3"
|
||||||
|
],
|
||||||
|
"dictionaries": [
|
||||||
|
"5bb51b424390424300d06a41",
|
||||||
|
"5a673061e97c730010ac6281"
|
||||||
|
],
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"id": "5c1ce09d514196d20547020e",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e40f22fc0020019346173",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5615db826e00001944cfd2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5615e9826e00001944cfd6",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e55a62a826e00001944c86c",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e267b2fc002001934603b",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e2e422fc0020019346090",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e30fc2fc00200193460c8",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e331d2fc00200193460d3",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e561606826e00001944cfe0",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5615ff826e00001944cfde",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e473d2fc00200193461b6",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e531e2fc00200193461f4",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e49822fc00200193461c2",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e4bf42fc00200193461d1",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e561a2fc002001934620c",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e218d2fc002001934601a",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e45052fc00200193461a1",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e55a346b333bd0019d18d2c",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e29d82fc0020019346078",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5615e1826e00001944cfd4",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5d676d88e8040019cda132",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e42982fc0020019346184",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5615f8826e00001944cfdc",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e6903ccb7de00197f8abd",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e5e45ccb7de00197f8aa3",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e59098f7849960019a7e435",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e6e30ccb7de00197f8aec",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e590ac47849960019a7e44b",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e590a777849960019a7e445",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e57735d2c129400197af134",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5f130fb1448801001846dec8",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5e5e6fe8ccb7de00197f8af3",
|
||||||
|
"active": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": "St. Petersburg CityPass — это карта гостя Санкт-Петербурга, ключ к главным достопримечательностям города и не только! Комплект состоит из путеводителя с отрывными билетами на двух языках (русский, английский) и карты города. Вас ждет доступ к 23 музеям, 6 увлекательных разноформатных экскурсий и многое другое! Это просто, удобно и экономно! \n\nОбратите внимание, что после приобретения St. Petersburg CityPass, вы получаете путеводитель с отрывными билетами. В течение срока действия CityPass вы можете один раз посетить все музеи и экскурсии (кроме билетов на City Sightseeing Bus. Они бывают нескольких видов на 24, 48 и 72 часа. Вы можете выходить и заходить обратно на любой из остановок неограниченное количество раз в течение срока действия билета). CityPass действует с момента первого прохода в музей, автобус или на борт корабля. Скидками и специальными предложениями можно воспользоваться и после окончания срока действия CityPass!",
|
||||||
|
"sort": 90,
|
||||||
|
"time": "48",
|
||||||
|
"packet_price": 5500,
|
||||||
|
"route_tags": [],
|
||||||
|
"city": "5bbf0e5f729bd4000fe02d5e",
|
||||||
|
"import_denied": false,
|
||||||
|
"pravila-soglasovaniya": false,
|
||||||
|
"title": "St.-Petersburg CityPass на 2 дня"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
]
|
]
|
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -53,4 +54,61 @@
|
||||||
title: str // Заголовок
|
title: str // Заголовок
|
||||||
type_audio_guide: list // Тип аудиогида
|
type_audio_guide: list // Тип аудиогида
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
}
|
||||||
|
dictionary_data: {
|
||||||
|
billing_product_id: int // Идентификатор продукта в биллинге
|
||||||
|
city: str // Город
|
||||||
|
description: str // Описание
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображение
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
information_pages: list // Информационные страницы
|
||||||
|
is_can_buy: bool // нет
|
||||||
|
is_priority: bool // нет
|
||||||
|
packet_price: int // Стоимость пакета
|
||||||
|
pravila-soglasovaniya: bool // Правила согласования
|
||||||
|
region: str // Регион
|
||||||
|
route: { // Маршрут
|
||||||
|
active: list // список активностей
|
||||||
|
dictionaries: list // Используемые словари
|
||||||
|
selected: [ // события / рестораны и прочие участвующие
|
||||||
|
{
|
||||||
|
id: str
|
||||||
|
active: bool
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
route_tags: list // Тэги маршрута
|
||||||
|
rp_price_id: int // Идентификатор тарифа в биллинге
|
||||||
|
short_description: str // Краткое описание
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
tags_main_screen: list // Тэг главного экрана
|
||||||
|
time: str // Продолжительность, мин
|
||||||
|
title: str // Заголовок
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
20990
data/tours.json
20990
data/tours.json
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -89,4 +90,97 @@
|
||||||
tour_type: str // Тип тура
|
tour_type: str // Тип тура
|
||||||
type_audio_guide: list // Тип аудиогида
|
type_audio_guide: list // Тип аудиогида
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
}
|
||||||
|
dictionary_data: {
|
||||||
|
city: str // Город
|
||||||
|
complexity: str // Cложность
|
||||||
|
days: int // Количество дней
|
||||||
|
description: str // Описание
|
||||||
|
hotel_stars: str // Звезды отеля
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображения
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
included: str // В стоимость включено
|
||||||
|
is_can_buy: bool // Можно купить
|
||||||
|
language: str // Язык проведения
|
||||||
|
min_age: str // Возрастное ограничение
|
||||||
|
minGroupCount: str // Группа
|
||||||
|
nights: int // Количество ночей
|
||||||
|
paid_separately: str // Оплачивается дополнительно
|
||||||
|
partner: str // Партнер
|
||||||
|
pravila-soglasovaniya: bool // Правила согласования
|
||||||
|
price: str // Стоимость
|
||||||
|
program: str // Программа
|
||||||
|
region: str // Регион
|
||||||
|
route: [ // Программа тура
|
||||||
|
{
|
||||||
|
title: str // заголовок
|
||||||
|
day_contents: { // события, посещения внутри дня
|
||||||
|
dictionaries: list // Используемые словари
|
||||||
|
selected: [ // события / рестораны и прочие участвующие
|
||||||
|
{
|
||||||
|
id: str
|
||||||
|
active: bool
|
||||||
|
}
|
||||||
|
]
|
||||||
|
active: list // список активностей
|
||||||
|
}
|
||||||
|
events: [ // список событий
|
||||||
|
{
|
||||||
|
title: str
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
geo_data: {
|
||||||
|
coordinates: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
russpass_recommendation: bool // RUSSPASS рекомендует
|
||||||
|
season_end: str // Конец сезона
|
||||||
|
season_start: str // Начало сезона
|
||||||
|
short_description: str // Краткое описание
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
tags: list // Тэги
|
||||||
|
tags_main_screen: list // Тэг главного экрана
|
||||||
|
title: str // Заголовок
|
||||||
|
tour_composition: [ // Состав тура
|
||||||
|
{
|
||||||
|
title: str
|
||||||
|
list: list
|
||||||
|
}
|
||||||
|
]
|
||||||
|
tour_type: str // Тип тура
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
29731
data/tracks.json
29731
data/tracks.json
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
{
|
{
|
||||||
_id: {
|
_id: {
|
||||||
$oid: str // id объекта коллекции
|
$oid: str // id объекта коллекции
|
||||||
|
@ -75,4 +76,83 @@
|
||||||
video_link: str // Ссылка на видео
|
video_link: str // Ссылка на видео
|
||||||
video_url_detail: str // Ссылка на видео на странице маршрута
|
video_url_detail: str // Ссылка на видео на странице маршрута
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
{
|
||||||
|
_id: {
|
||||||
|
$oid: str // id объекта коллекции
|
||||||
|
}
|
||||||
|
dictionary_data: {
|
||||||
|
city: str // Город
|
||||||
|
days_count: int // Длительность (дни)
|
||||||
|
description: str // Полное описание
|
||||||
|
duration_hours: int // Общее время прохождения маршрута (часы)
|
||||||
|
image_detailed_page_main: [ // Главная картинка
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
image_explore_preview: [ // Превью для Explore
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
images: [ // Изображения
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
id: str // id картинки в бд
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
import_denied: bool // Отклонено модератором
|
||||||
|
information_pages: list // Информационные страницы
|
||||||
|
price: int // Стоимость маршрута
|
||||||
|
region: str // Регион
|
||||||
|
route: [ // Маршрут по дням
|
||||||
|
{
|
||||||
|
title: str // заголовок
|
||||||
|
day_contents: { // события, посещения внутри дня
|
||||||
|
dictionaries: list // Используемые словари
|
||||||
|
selected: [ // события / рестораны и прочие участвующие
|
||||||
|
{
|
||||||
|
id: str
|
||||||
|
active: bool
|
||||||
|
}
|
||||||
|
]
|
||||||
|
active: list // список активностей
|
||||||
|
}
|
||||||
|
recommended_hotels: list
|
||||||
|
descriptions: { // Описания
|
||||||
|
'active_id': { // id из day_contents
|
||||||
|
description: str // Описание для данного элемента маршрута (может быть отлично от данных объекта)
|
||||||
|
duration_custom_for_this_route: int // Продолжительность для данного элемента маршрута (может быть отлична от данных объекта)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translated_data: {
|
||||||
|
'language': { // 2-х буквенное описание языка
|
||||||
|
descriptions: { // Описания
|
||||||
|
'active_id': { // id из day_contents
|
||||||
|
description: str // Описание для данного элемента маршрута (может быть отлично от данных объекта)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
russpass_recommendation: bool // RUSSPASS рекомендует
|
||||||
|
short_description: str // Краткое описание
|
||||||
|
sort: int // Порядковый номер сортировки
|
||||||
|
tags: list // Тэги
|
||||||
|
tags_main_screen: list // Тэги главного экрана
|
||||||
|
title: str // Заголовок
|
||||||
|
total_activity_price: int // Суммарная цена на активности
|
||||||
|
type: str // Тип маршрута
|
||||||
|
type_audio_guide: list // Тип аудиогида
|
||||||
|
video_link: str // Ссылка на видео
|
||||||
|
video_url_detail: str // Ссылка на видео на странице маршрута
|
||||||
|
}
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
}
|
}
|
0
logs/.gitkeep
Normal file
0
logs/.gitkeep
Normal file
|
@ -155,5 +155,3 @@ class ObjectRouteSerializer(serializers.Serializer):
|
||||||
title = serializers.CharField()
|
title = serializers.CharField()
|
||||||
description = serializers.CharField()
|
description = serializers.CharField()
|
||||||
oid = serializers.CharField()
|
oid = serializers.CharField()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,6 @@ def post(self, request):
|
||||||
'scooter': 30.0,
|
'scooter': 30.0,
|
||||||
'auto': 50.0
|
'auto': 50.0
|
||||||
}
|
}
|
||||||
|
|
||||||
serializer = RouteInputSerializer(data=request.data)
|
serializer = RouteInputSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
data = serializer.data
|
data = serializer.data
|
||||||
|
|
|
@ -27,6 +27,7 @@ class HotelOnboardingRetrieve(serializers.Serializer):
|
||||||
|
|
||||||
|
|
||||||
class TinderGetEventFilterSerializer(serializers.Serializer):
|
class TinderGetEventFilterSerializer(serializers.Serializer):
|
||||||
|
<<<<<<< HEAD
|
||||||
type = serializers.ListField(child=serializers.ChoiceField(['attraction', 'museum', 'movie', 'play', 'concert']))
|
type = serializers.ListField(child=serializers.ChoiceField(['attraction', 'museum', 'movie', 'play', 'concert']))
|
||||||
event = EventSerializer()
|
event = EventSerializer()
|
||||||
|
|
||||||
|
@ -43,6 +44,8 @@ class DailySelectionSerializerInput(serializers.Serializer):
|
||||||
|
|
||||||
class DailySelectionSerializer(serializers.Serializer):
|
class DailySelectionSerializer(serializers.Serializer):
|
||||||
nodes = serializers.ListField(child=DailySelectionNodeSerializer(), write_only=True)
|
nodes = serializers.ListField(child=DailySelectionNodeSerializer(), write_only=True)
|
||||||
|
=======
|
||||||
|
>>>>>>> 60a019fcf7e95a63e66b6b0fcbf1495da8a3e8b7
|
||||||
type = serializers.ListField(
|
type = serializers.ListField(
|
||||||
child=serializers.ChoiceField(
|
child=serializers.ChoiceField(
|
||||||
["attraction", "museum", "movie", "play", "concert"]
|
["attraction", "museum", "movie", "play", "concert"]
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
from random import sample
|
from random import sample
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TinderView(viewsets.GenericViewSet):
|
class TinderView(viewsets.GenericViewSet):
|
||||||
serializer_class = EventSerializer
|
serializer_class = EventSerializer
|
||||||
model = Event
|
model = Event
|
||||||
|
@ -75,6 +74,7 @@ def movies(self, request, *args, **kwargs):
|
||||||
for rec in recs:
|
for rec in recs:
|
||||||
ans.append(EventSerializer(rec[1]).data)
|
ans.append(EventSerializer(rec[1]).data)
|
||||||
return Response(ans, 200)
|
return Response(ans, 200)
|
||||||
|
|
||||||
|
|
||||||
@action(methods=['GET'], detail=True)
|
@action(methods=['GET'], detail=True)
|
||||||
def get_nearest_user_distance(self, request, pk, *args, **kwargs):
|
def get_nearest_user_distance(self, request, pk, *args, **kwargs):
|
||||||
|
@ -127,7 +127,6 @@ def generate_daily_selection(self, request, *args, **kwargs):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class OnboardingViewset(viewsets.GenericViewSet):
|
class OnboardingViewset(viewsets.GenericViewSet):
|
||||||
serializer_class = EventSerializer
|
serializer_class = EventSerializer
|
||||||
model = Event
|
model = Event
|
||||||
|
|
|
@ -2,7 +2,12 @@
|
||||||
from .mapping.mapping import *
|
from .mapping.mapping import *
|
||||||
from .models.models import *
|
from .models.models import *
|
||||||
from passfinder.events.models import Event, Region, Hotel, BasePoint, City, Restaurant
|
from passfinder.events.models import Event, Region, Hotel, BasePoint, City, Restaurant
|
||||||
from passfinder.events.api.serializers import HotelSerializer, EventSerializer, ObjectRouteSerializer
|
from passfinder.events.api.serializers import (
|
||||||
|
HotelSerializer,
|
||||||
|
EventSerializer,
|
||||||
|
RestaurantSerializer,
|
||||||
|
ObjectRouteSerializer,
|
||||||
|
)
|
||||||
from passfinder.recomendations.models import *
|
from passfinder.recomendations.models import *
|
||||||
from random import choice, sample
|
from random import choice, sample
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
|
@ -262,6 +267,7 @@ def dist_func(event1: Event, event2: Event):
|
||||||
except:
|
except:
|
||||||
return 1000000
|
return 1000000
|
||||||
#return (event1.lon - event2.lon) ** 2 + (event1.lat - event2.lat) ** 2
|
#return (event1.lon - event2.lon) ** 2 + (event1.lat - event2.lat) ** 2
|
||||||
|
# return (event1.lon - event2.lon) ** 2 + (event1.lat - event2.lat) ** 2
|
||||||
|
|
||||||
|
|
||||||
def generate_nearest():
|
def generate_nearest():
|
||||||
|
@ -317,7 +323,7 @@ def generate_nearest_restaurants():
|
||||||
nr.save()
|
nr.save()
|
||||||
if i % 10 == 0:
|
if i % 10 == 0:
|
||||||
print(i)
|
print(i)
|
||||||
|
|
||||||
for i, hotel in enumerate(Hotel.objects.all()):
|
for i, hotel in enumerate(Hotel.objects.all()):
|
||||||
sorted_rests = list(sorted(rests.copy(), key=lambda x: dist_func(x, hotel)))
|
sorted_rests = list(sorted(rests.copy(), key=lambda x: dist_func(x, hotel)))
|
||||||
nr = NearestRestaurantToHotel.objects.create(hotel=hotel)
|
nr = NearestRestaurantToHotel.objects.create(hotel=hotel)
|
||||||
|
@ -327,7 +333,6 @@ def generate_nearest_restaurants():
|
||||||
print(i)
|
print(i)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def match_points():
|
def match_points():
|
||||||
regions = list(City.objects.all())
|
regions = list(City.objects.all())
|
||||||
for i, point in enumerate(Event.objects.all()):
|
for i, point in enumerate(Event.objects.all()):
|
||||||
|
@ -335,8 +340,7 @@ def match_points():
|
||||||
point.city = s_regions[0]
|
point.city = s_regions[0]
|
||||||
point.save()
|
point.save()
|
||||||
if i % 10 == 0:
|
if i % 10 == 0:
|
||||||
print(i)
|
print(i)
|
||||||
|
|
||||||
for i, point in enumerate(Hotel.objects.all()):
|
for i, point in enumerate(Hotel.objects.all()):
|
||||||
s_regions = list(sorted(regions.copy(), key=lambda x: dist_func(point, x)))
|
s_regions = list(sorted(regions.copy(), key=lambda x: dist_func(point, x)))
|
||||||
point.city = s_regions[0]
|
point.city = s_regions[0]
|
||||||
|
@ -423,6 +427,15 @@ def time_func(km_distance: float, velocity: float):
|
||||||
def generate_route(point1: BasePoint, point2: BasePoint, velocity: float):
|
def generate_route(point1: BasePoint, point2: BasePoint, velocity: float):
|
||||||
distance = dist_func(point1, point2)
|
distance = dist_func(point1, point2)
|
||||||
time = time_func(distance, velocity)
|
time = time_func(distance, velocity)
|
||||||
|
|
||||||
|
|
||||||
|
def time_func(km_distance: float):
|
||||||
|
return timedelta(minutes=(km_distance) / (4.0 / 60))
|
||||||
|
|
||||||
|
|
||||||
|
def generate_route(point1: BasePoint, point2: BasePoint):
|
||||||
|
distance = dist_func(point1, point2)
|
||||||
|
time = time_func(distance)
|
||||||
return {
|
return {
|
||||||
"type": "transition",
|
"type": "transition",
|
||||||
"distance": distance,
|
"distance": distance,
|
||||||
|
@ -442,7 +455,7 @@ def generate_point(point: BasePoint):
|
||||||
|
|
||||||
def generate_restaurant(point: BasePoint):
|
def generate_restaurant(point: BasePoint):
|
||||||
rest_data = ObjectRouteSerializer(point).data
|
rest_data = ObjectRouteSerializer(point).data
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"type": "point",
|
"type": "point",
|
||||||
"point": rest_data,
|
"point": rest_data,
|
||||||
|
@ -474,7 +487,6 @@ def generate_tour(user: User, city: City, start_date: datetime.date, end_date: d
|
||||||
)
|
)
|
||||||
disallowed_rest = local_disallowed_rest
|
disallowed_rest = local_disallowed_rest
|
||||||
current_date += timedelta(days=1)
|
current_date += timedelta(days=1)
|
||||||
|
|
||||||
return paths, points
|
return paths, points
|
||||||
|
|
||||||
|
|
||||||
|
@ -523,7 +535,6 @@ def generate_path(user: User, disallowed_points: Iterable[BasePoint], hotel: Hot
|
||||||
|
|
||||||
how_many_eat = 1
|
how_many_eat = 1
|
||||||
|
|
||||||
|
|
||||||
while start_time.hour < 22 and start_time.day == datetime.now().day:
|
while start_time.hour < 22 and start_time.day == datetime.now().day:
|
||||||
if (start_time.hour > 14 and how_many_eat == 1) or (start_time.hour > 20 and how_many_eat == 2):
|
if (start_time.hour > 14 and how_many_eat == 1) or (start_time.hour > 20 and how_many_eat == 2):
|
||||||
point = NearestRestaurantToEvent.objects.filter(event=points[-1]).first().restaurants.filter(~Q(oid__in=disallowed_rests))[0]
|
point = NearestRestaurantToEvent.objects.filter(event=points[-1]).first().restaurants.filter(~Q(oid__in=disallowed_rests))[0]
|
||||||
|
@ -555,6 +566,7 @@ def generate_path(user: User, disallowed_points: Iterable[BasePoint], hotel: Hot
|
||||||
points.append(get_nearest_favorite(candidates, user, points[-1], points))
|
points.append(get_nearest_favorite(candidates, user, points[-1], points))
|
||||||
|
|
||||||
transition_route = generate_route(points[-1], points[-2], avg_velocity)
|
transition_route = generate_route(points[-1], points[-2], avg_velocity)
|
||||||
|
|
||||||
start_time += timedelta(seconds=transition_route["time"])
|
start_time += timedelta(seconds=transition_route["time"])
|
||||||
|
|
||||||
point_route = generate_point(points[-1])
|
point_route = generate_point(points[-1])
|
||||||
|
@ -571,10 +583,23 @@ def calculate_distance(sample1: Event, samples: Iterable[Event], model: AnnoyInd
|
||||||
metrics.append(model.get_distance(rev_mapping[sample1.oid], rev_mapping[sample.oid]))
|
metrics.append(model.get_distance(rev_mapping[sample1.oid], rev_mapping[sample.oid]))
|
||||||
|
|
||||||
return sum(metrics) / len(metrics)
|
return sum(metrics) / len(metrics)
|
||||||
|
|
||||||
|
|
||||||
|
def calculate_distance(
|
||||||
|
sample1: Event, samples: Iterable[Event], model: AnnoyIndex, rev_mapping
|
||||||
|
):
|
||||||
|
metrics = []
|
||||||
|
|
||||||
|
for sample in samples:
|
||||||
|
metrics.append(
|
||||||
|
model.get_distance(rev_mapping[sample1.oid], rev_mapping[sample.oid])
|
||||||
|
)
|
||||||
|
|
||||||
|
return sum(metrics) / len(metrics)
|
||||||
|
|
||||||
|
|
||||||
def get_onboarding_attractions():
|
def get_onboarding_attractions():
|
||||||
sample_attractions = sample(list(Event.objects.filter(type='attraction')), 200)
|
sample_attractions = sample(list(Event.objects.filter(type="attraction")), 200)
|
||||||
first_attraction = choice(sample_attractions)
|
first_attraction = choice(sample_attractions)
|
||||||
|
|
||||||
attractions = [first_attraction]
|
attractions = [first_attraction]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user