resolve confs

This commit is contained in:
ilia 2023-05-27 11:39:38 +03:00
commit 9e02502cb3
23 changed files with 1152753 additions and 15 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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
} }

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -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
} }

File diff suppressed because it is too large Load Diff

View File

@ -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
} }

File diff suppressed because it is too large Load Diff

View File

@ -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
} }

View File

@ -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
] ]

View File

@ -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
} }

File diff suppressed because one or more lines are too long

View File

@ -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
} }

File diff suppressed because it is too large Load Diff

View File

@ -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
View File

View 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()

View File

@ -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

View File

@ -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"]

View File

@ -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

View File

@ -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]