Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

ТЗ выгрузка данных YC в свою БД

Документация YClients https://developers.yclients.com/ru/#operation/Получить%20список%20клиентов Данные необходимо сохранять в БД PostgreSQL, размещенную на reg.ru

Таблицы: 1 Записи 2 Клиенты 2.1 Категории клиентов 3 Сотрудники 3.1 Должности сотрудников 4 Услуги 4.1 Сотрудники, оказывающие услугу 5 Финансовые операции 5.1 Категория операции 5.2 Касса 6 Таблица синхронизации. Поля: сущность, порядковый номер последней записи (нужна для того, чтобы очередной проход синхронизации стартовать с конкретного места, а не с начала)

Порядок синхронизации

  • Запуск скрипта
  • Авторизация
  • Выгружаем список сотрудников
  • Загружаем список услуг
  • Синхронизируем список всех клиентов (по алгоритму ниже)
  • Синхронизируем список всех записей (по алгоритму ниже)
  • Синхронизируем список всех финансовых операций
Общий алгоритм синхронизации пагинированных данных: Смотрим последнюю запись в нашей БД, берем ее id. Смотрим последний порядковый номер записи из таблицы 6 Делаем запрос с нужной страницы. Например, если последний сохраненный порядковый номер 524, то делаем запрос с pageSize = 200 и pageNumber = 3. Таким образом, последняя сохраненная запись попадет в текущую страницу. Проверяем, что id записи из ответа запроса по порядковому номеру из таблицы 6 равен последнему id из нашей таблицы. Иначе говоря, проверяем, что ничего не добавилось/удалилось из начала таблицы.

Если все ок: синхронизируем данные дальше (отправляем запросы на следующие страницы при необходимости), все сохраняем в нашу таблицу. При достижении последней записи сохраняем информацию по ней в таблицу 6 Если не ок (id отличаются для одинаковых порядковых номеров в запросе и нашей таблице): удаляем все записи из таблицы и зависимые от нее записи, начинаем синхронизацию с первой страницы.

Авторизация https://developers.yclients.com/ru/#operation/Авторизовать%20пользователя

Запрос сотрудников https://developers.yclients.com/ru/#operation/Получить%20список%20сотрудников%20/%20конкретного%20сотрудника Запрос не панированный. Получили данные, все сохранили в БД. Должность сотрудника сохраняем в таблицу 3.1

Запрос услуг https://developers.yclients.com/ru/#operation/Получить%20список%20услуг%20/%20конкретную%20услугу Запрос не пагинированный. Массив staff сохраняем в таблицу 4.1.

Запрос клиентов https://developers.yclients.com/ru/#operation/Получить%20список%20клиентов Body имеет следующий вид: { "page": 1, "page_size": 25, "fields": [ "id", "name" ], "order_by": "name", "order_by_direction": "desc", "operation": "AND", "filters": [] } Какие параметры указывать в body page - номер страницы по алгоритму page_size - 200 fields: "id" "name" "phone" "email" "card" "birth_date" "comment" "discount" "sex_id" "sex" "sms_check" "sms_bot" "sms_not" "balance" "importance_id" "importance" "categories" "last_change_date" "custom_fields" order_by: id order_by_direction: asc operation: AND filters: [] Массив categories записывается в отдельную таблицу 2.1

Запрос записей https://developers.yclients.com/ru/#operation/Получить%20список%20записей Параметры для query page - номер страницы по алгоритму page_size = 200 Массив services - ссылки не соответствующие услуги из таблицы 4 Массив staff - ссылки на соответствующие записи из таблицы 3 Client - ссылка на запись из таблицы 2 Document - не сохраняем

Запрос финансовых операций https://developers.yclients.com/ru/#tag/Finansovye-tranzakcii поле «expense» пишем в отдельную таблицу 5.1 категорий финансовых операций, финансовая операция имеет ссылку на эту запись Поле «account» пишем в отдельную таблицу «кассы» 5.2. Финансовая операция имеет ссылку на эту запись Поле «client» - ссылка на запись клиента

Важно В таблицах должны быть проставлены все необходимые ключи и индексы для возможности поиска клиентов по категориям/сотрудникам, оказавшим услугу и тд

2 года назад
miher19mri94
Михаил 
30 летРоссия
6 лет в сервисе
Был
2 года назад
Выбранный исполнитель
izmaylov_d
Дмитрий 
30 летРоссия
6 лет в сервисе
Был
2 года назад
2 года назад
$100
5 дней
Рекомендую Дмитрия. Сам инициировал составление подробного ТЗ со структурой всех таблиц. К работе подходит методично, на связи в оговорённое время. Результат полностью соответствует ожиданиям.
Положительные впечатления от сотрудничества. Михаил точно описал задачу и дополнил инструкциями о том, как он видит реализацию. Все необходимые данные были предоставлены своевременно и в полном объеме. Всегда был на связи и оперативно отвечал на вопросы, которые возникали в процессе реализации задачи. Оплата точно в срок. Рекомендую к сотрудничеству!