Имеется готовый и работающий интернет магазин запчастей на русском языке, необходим ещё англиский язык. Сайт на битрикс https://imcar.com.ua Каждый день добавляются новые товары. Необходим автоматический перевод их свойств или варианты.
Node.js бекенд для дашборда
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Нужно написать на node.js бекенд для вот такого дашборда https://bit.ly/3n7MP1x
Работа состоит из двух частей:
1. Парсер, который будет периодически забирать из ftp csv и xml файлы, разбирать их и складывать в БД (postgresql)
2. API, которое будет отдавать данные фронтенду.
Ниже текстовое ТЗ, а вот здесь красивое ТЗ с картинками: https://living-pentagon-5f4.notion.site/b84bc8af445c4f45923f5d77e35509e0
Часть 1.1: Парсинг csv
Раз в сутки скачать zip-архив с файлами CSV вот такого вида: https://www.dropbox.com/s/gukumii5lavcb87/Simplewealth_AG_Inception_December_21_2021.csv?dl=0
Нужно скачать свежий zip, разложить содержимое csv по таблицам в БД (если таблицы нет или какого-то поля в ней нет - создать)
Названия таблиц предлагаю формировать так:
- префикс: IbImport
- название: первый столбец + SubSection (если есть), пробелы убираем
Пример: https://monosnap.com/file/92XRfdNex2PlTgGxUlSJjkNEWfCJk3
Названия полей внутри таблиц предлагаю формировать исходя из полей Header, например: https://monosnap.com/file/LbXyEpMrkpFpasdglwD8xPdwyWT19j
Дополнительно:
- в каждой таблице должно быть поле id
- в каждой таблице должно быть поле IntroductionID - ссылка (внешний ключ) на запись в таблице IbImportIntroduction
- если в таблице есть MetaInfo - должно быть поле MetaInfoID, ссылка на таблицу IbImportMetaInfo
Все данные импортируем как строки, т.е. “как есть”. Исключение только для IbImportMetainfo.AnalysisPeriod - тут нужно сохранить “как есть” + распарсить даты и сохранить AnalysisPeriodBegin и AnalysisPeriodEnd
Дополнительно в поля IbImportIntroduction: ImportFile, ImportDate, ImportIBUID записываем имя импортируемого файла, дату импорта и ID аккаунта (он есть в названии файла)
Часть 1.2: Парсинг xml
Раз в сутки скачать из ftp xml-файл вот такого вида: https://www.dropbox.com/s/4wr928qhdfmb11c/clientonly.xml?dl=0
Нужно скачать свежий файл и разложить содержимое по таблицам в БД (если таблицы нет или какого-то поля в ней нет - создать. НО! Если внутри тега нет данных - пустую таблицу создавать не нужно)
Названия таблиц предлагаю формировать так:
- префикс: IbImport
- название: Названия тегов внутри
Названия полей внутри таблицы - по названию атрибутов
Пример: https://monosnap.com/file/OeXuVe8jFXeRUhhZBbyys6AFMrmdOp
Дополнительно:
- в каждой таблице должно быть поле id
- нужно сохранить данные из тега в таблицу FlexStatement
- данные из AccountInformation нужно сохранять только если они поменялись, и в этом случае нужно создавать новую запись а не обновлять старую.
- в каждой таблице должны быть поля FlexStatementID и AccountInformatinID - ссылки на соотв. таблицы
Часть 2: API
Нужны три endpoint’а:
1) POST /clientAuth
Принимает email и пароль, сравнивает с данными в таблице Users, возвращает "result": true/false и ставит сессионную куку
2) GET /table?name={TableName}&fields={FieldName1},{FieldName2},{FieldName3},...
Возвращает запрашиваемые поля указанной таблицы:
- из последнего импорта (определяем по IbImportIntroduction.ImportDate)
- для текущего пользователя (из cookies получаем имя сессии, по ней находим пользователя, получаем его IBUID)
- Если поля не перечислены - возвращает все поля таблицы
3) POST /table?name={Table}
Пример:
curl -X POST "https://api.service.com/table?name=Users" \
-d '{
"set": {"portfolio": "3", "duration": "5 years"},
"where": {"id": "123"}
}'
- По сессии проверяем что текущий пользователь - админ (Users.role=admin)
- исполнить UPDATE Users SET portfolio="3", duration="5 years" WHERE id="123"
- Перед исполнением проверить, - если запрос затронет больше одной записи, то вернуть ошибку
Формат ответа:
{
"result": {
"id":"2d4d028de3015345da9420df5514dad0",
"name":"blog.example.com",
"content":"2.6.4.5"
},
"success": true,
"errors": [],
"messages": [],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 200
}
}
{
"result": null,
"success": false,
"errors": [{"code":1003,"message":"Invalid or missing id."}],
"messages": []
}
Пагинация:
curl "https://api.service.com/zones?page=3&per_page=20&order=type&direction=asc"
По умолчанию: page=1, per_page=100, order=id, direction=ASC
HTTP response codes:
- 200 OK request successful
- 400 Bad Request request was invalid
- 401 Unauthorized user does not have permission
- 403 Forbidden request not authenticated
- 405 Method Not Allowed incorrect HTTP method provided
Предлодите цену и сроки.
- Похожие заказы
- Веб-программирование1 заявкаЗакрыт2 года назад
- $15
Задание на прикреплённых скринах. Подготовьте рабочий код, после этого я вышлю вам несколько вариантов вводных данных, а вы вышлите результат работы кода. В случае успеха работа будет оплачена, а вы вышлите рабочий код. Обязательные требования: - Выполнение задачи ...
Веб-программированиенет заявокЗакрыт2 года назад Нужен код для меню, как показано на примере. даже не знаю, что тут уточнять, всё визуально понятно. Если будут вопросы - я изменю описание проекта, добавлю подробностей. по 4 подкатегории в строку (название выделено болдом), в ...
Веб-программированиенет заявокЗакрыт2 года назадвсем привет! на сайте обнаружен вирус. нужно почистить сайт и восстановить его работу. Хостинг предлагает восстановить копию, но в чистую директорию и базу данных. Но так уже делали неделю назад, вирус остался. Подробности в лс. спасибо!
Веб-программирование10 заявокЗакрыт2 года назад- $25Веб-программирование4 заявкиЗакрыт2 года назад
Подробное описание в ТЗ. Цена договорная
Веб-программирование2 заявкиЗакрыт2 года назадПриветствую. Вот подробное ТЗ: https://dune-property-9b9.notion.site/cf11833bf9b14c12adbf24f5e4a79d86
Веб-программирование1 заявкаЗакрыт2 года назад- $20
Нужно разово спарсить данные из каталога, категории и товары, чтобы была сохранена иерархия. Формат csv/xlsx По карточке товаров: картинки название артикул описание технические характеристики Это все
Веб-программирование1 исполнительЗавершен2 года назад Добрый день. Есть готовый сайт на laravel, хотим добавить новую фичу(связать api с нашим проектом). Кто заинтересован оставляйте заявку.
Веб-программирование1 заявкаЗакрыт2 года назадДобрый день. Установлено готовое решение сайт битрикс. Необходимо создать согласно структуре страницы и разделы для сайта, и сделать меню под них.
Веб-программирование7 заявокЗакрыт2 года назад