Импорт данных в систему учета из .excel таблицы (Symfony)

https://freelance.habr.com/tasks/605661 Бюджет: 170 000 руб. за проект

ВНИМАНИЕ : только фреймворк Symfony оставляйте свой TG для связи!

Надо получить механизм, который позволяет  вгрузить к нам данные (создать и/ли обновить сущности) заданного типа  до загрузки получить предпросмотр, чтобы юзер смог указать наглядно "что куда грузим"  в зависимости от условий и выбранных данных, доуказать какие-то опции "как обрабатывать"  когда всего хватает - обработать импорт Как сделано у другой системы (flow), для референса.

Там хорошо и правильно. Очень рекомендую посмотреть другие системы  выбираешь "импорт" - например товары  грузишь файл, excel-источник  бек его читает, собирает первые NN строк со столбцами, выводит в ответе предпросмотра  юзер в окне предпросмотра видит колонки с примером данных, выбирает им "заголовок", т.е куда грузить. По умолчанию не выбраны  бек получает выбранные колонки/типы данных, и отдает в ответе "какие еще опции надо указать"  юзер указывает (на фронте) доп параметры, которые бек запросил на этапе предпросмотра. Например "как обрабатывать остатки", создавать ли оприходование итп  юзер аппрувит, шлёт данные. Бек ставит задачу по обработке данных, со всеми указанными параметрами - отдает фронту "запустили обработку, вон ее ID"  обработка задачи выполняет то, что от нее просили, и финалится по готовности

Как бы я сделал, с учетом нашей имеющейся машинерии У нас есть миграшки. Всё чем они занимаются - берут входящие параметры (любые), обрабатывают эти параметры, ставят себе в миграшку задачи, которые уже обрабатывают и вливают данные в зависимости от того, что попросили. Мне кажется - вполне наш вариант.

Чего нет: нам надо получать файлик, выдавать предпросмотр, дальше (до постановки задачи в обработку) понимать, чего от нас хотят и чего не хватает, запрашивать у фронта необходимые параметры (доп.опции и доп.обработки), и когда всего хватает - ставить и запускать миграшки. Миграшка умеет писать лог, чего реально происходило и как обработалось - окай.

 Я бы сделал объект ImportTask, и у него type=excel (мало ли потом захотят еще там с 1C, YML как у МСклада итд итп)  Фронт запрашивает метод ImportTask/create entity=product (например), мы ее создаем пустую: фронт знает айдишник, может ее дальше доконфигурить  Фронт грузит к ней файлик (возможно, больше одного раза) - т.е метод upload  Мы по type=excel и entity=product понимаем, какие поля объекта существуют, и читаем первые 20 строк файла. Говорим OK - файлик получили (вдруг нет, или формат не тот)  Отдаем а) строки предпросмотра б) набор возможных полей (метод configure для таски)  В зависимости от уже загруженных данных в ImportTask, определяем, чего не хватает. Эта логика зависит от уже выбранных данных! так что имеет смысл для importTask написать ряд проверок, которые посмотрят на данные задачи, и что-то запишут в ее requirements + выдадут какой-то лог (например, "ваш файл ваще говно склизское")  Я бы сделал отдельный метод ImportTask/configure, в который фронт шлет тупо набор данных, собранных из формы. Прямо json. Тут тебе и выбранные поля, и опции входной обработки (не создавать товары, только обновлять / выбраны остатки, создавать приход, какого контрагента итд итп). Мы данные получаем, прогоняем обработчики по type+entity, и отвечаем на configure: вот снова предпросмотр, вот такие requirements, вот такой ответ валидации, вот такой набор справочных строк (например, сколько данных там вообще в файле нашли подходящих)  Для всей ImportTask я бы ввел статус, если он не ready - значит юзеру надо что-то дозаполнить  Фронт, когда видит дополнительные requirements, показывает юзеру доп.формы и доп.блоки, которых изначально не было, и которые у юзера дособерут нужные данные  Цикл повторяется: юзер дозаполняет или меняет поля (или даже грузит другой файл), мы снова всё проверяем, и так пока все наши проверки не пройдет, а для фронта ImportTask не станет ready  Когда у importTask status=ready, фронт вызывает метод execute, который по полностью заполненному importT

repost

28

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь