/test_task_excel_to_json

test task for developing a service that converts an excel file to json

Primary LanguagePythonMIT LicenseMIT

Сервис для преобразования excel-файлов в формат JSON

Сервис предназначен для конвертации excel файлов в json формат

Как установить

Сервис упакован в контейнеры, для запуска проекта нужно создать .env файл в корневой директории:

STORAGE_DIR="json_output_data"

Переменная STORAGE_DIR описывает относительный путь к директрории, куда будут загружаться данные. В репозитории уже присутствует директория json_output_data. Если появится желание хранить файлы в другой директории, то необходимо создать её и указать название в переменной .env файла

Запуск Docker-compose

В корневой директории выполнить следующую команду:

docker-compose up -d --build

Описание работы сервиса

На вход поступает excel файл, который требуется преобразовать в json-формат. Присутствуют следующие проверки:

  • Проверка на наличие файла загружаемого файла
  • Если файл с таким же названием уже существует в папке, то появится ошибка "Файл уже существует"
  • Если файла с таким именем нет в папке, то пользователь получает сообщение: "Обработка файла запущена"

Требование к форматированию

  • Структура JSON файла должна быть сформирована на основе вкладок в Excel файле. Наименования атрибутов объекта верхнего уровня должны совпадать с именами листов в Excel-файле. Наименования атрибутов вложенных объектов, должны определяться наименованиями соответствующих столбцов в заголовке соответствующих таблиц.
    • Серверное приложение должно работать с любым Excel файлом, который содержит таблицы (диапазоны значений с заголовками).
    • Название выходного файла JSON берется из название Excel файла, которое отправляется в запросе
    • Все поля с датами, должны быть преобразованы в формат: Формат: YYYY-MM-DDThh:mm:ss.sssZ
    • Типы значений во всех ячейках входного файла должны сохраниться в выходном файле:
      • целые числа должны выводиться как целые;
      • числа с дробной частью должны выводиться соответственно;
      • если текст в ячейке является JSON-строкой, то в выходной файл должен быть выведен вложенный JSON-объект.
    • Пустые значения ячеек входного файла должны выводиться как null значение в выходном файле.
    • JSON должен быть валидным и иметь кодировку UTF-8 (без BOM).

Использование сервиса

При локальном запуске сервиса он будет доступен по адресу: http://0.0.0.0:8000/

Перед пользователем появится интерактивное окно, куда можно загрузить файл. После того как файл принят в обработку, пользоватей видит на экране статус выполнения задачи преобразования. Возможные варианты:

  • PENDING - в процессе выполнения
  • SUCCESS - файл успешно загружен
  • FAILURE - при загрузке произошла ошибка

Запрос на преобразование файла отсылается на эндпоинт http://0.0.0.0:8000/upload/excel Документация расположена по адресу http://0.0.0.0:8000/docs, там же можно отправлять файлы для проверки работоспособности, но более интуитивно понятное взаимодействие с сервисом осуществляется через графический интерфейс.

Возможные улучшения

Проверка наличия файла внутри директории по его имени - не совсем удачное решение. Будет неплохо в будущем получать хэш загружаемого файла и сверять его с существующими хэшами.