Сервис предназначен для конвертации excel файлов в json формат
Сервис упакован в контейнеры, для запуска проекта нужно создать .env
файл в корневой директории:
STORAGE_DIR="json_output_data"
Переменная STORAGE_DIR
описывает относительный путь к директрории, куда будут загружаться данные. В репозитории уже присутствует директория json_output_data
.
Если появится желание хранить файлы в другой директории, то необходимо создать её и указать название в переменной .env
файла
В корневой директории выполнить следующую команду:
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, там же можно отправлять файлы для проверки работоспособности, но более интуитивно понятное взаимодействие с сервисом осуществляется через графический интерфейс.
Проверка наличия файла внутри директории по его имени - не совсем удачное решение. Будет неплохо в будущем получать хэш загружаемого файла и сверять его с существующими хэшами.