Backend FastAPI
Необходимо разработать легкий локальный сервер для работы с десктопным приложением по REST API (и возможно WebSocket).
Существует 2 пользователя: Фотограф и Администратор
Процесс работы фотографа приложения:
- Фронтенд отправляет данных для авторизации (логин и пароль)
- Пользователь сканирует штрих-код и zxing подхватывает его код
- Программа берет конфигурацию (протокол взаимодействия, маппинг полей) интеграции с учетной системой, в которой хранится информация о продукте
- Программа отправляет запрос на получение данных в учетную систему
- Программа принимает и трансформирует данные
- Программа копирует в локальную временную папку изображение из заданной папки (статичный путь, записывается в конфигурационный файл на этапе разработки)
- Программа отправляет в фронтенд данные о продукте и ссылку на изображение
- Фронтенд может запросить ссылки на фоны для изображения - пользователь может их добавлять. Они хранятся в локальной папке
- Фронтенд может отправить иное изображения, его нужно поместить во временную локальную папку
- Фронтенд присылает Данные об изображении - размер, масштаб, угол поворота, положение и выбранные коннекторы (хранятся в виде JSON / YAML, в них - папка выгрузки, шаблон генерации названия изображения, если оно не установлено)
- Изображение необходимо совместить с фоном на основе данных, предоставленных на предыдущем шаге
- Изображение выгружается в папки назначений в формате, размере, заданных в конфигурациях
Администратор также может из фронтенда:
- Управлять пользователями
- Управлять коннекторами - для выгрузки изображений и загрузки данных о продукте
- Запрашивать действия пользователей
Приложение присылает логи о действиях пользователей - их нужно помещать в БД.
В проекте будут использованы следующие технологии:
- Сканер штрих-кодов - zxing-cpp / zxing
- Экспорт изображений - Pillow
- Управление пользователями - fastapi-users (Bearer + database)
- Генератор CRUD эндпоинтов - fastcrud
- ORM - SQLAlchemy 2.0 (async)
- Хранение конфигурации - PyYAML / JSON
- Тестирование - pytest
- Возможно server-sent events для уведомления фронтенда о новом сканировании (другой вариант - long polling / refetching / WebSocket)
- База данных - SQLite
Документация структуры БД будет предоставлена.
Пожалуйста опишите свой опыт реализации приложений на FastAPI (желательно похожих). Описание опыта работы с представленными выше технологиями будет преимуществом.
Оплата договорная