This is my first FastAPI project. And this is test task for recommendation AI platform Bewise
- Перейти в директорию с проектом и запустить команду:
docker-compose up
- После установки и запуска контейнера, перейти по ссылке: http://127.0.0.1:8000/docs
Реализовать на Python3 веб сервис (с помощью FastAPI или Flask, например), выполняющий следующие функции:
-
В сервисе должно быть реализован POST REST метод, принимающий на вход запросы с содержимым вида {"questions_num": integer}.
-
После получения запроса сервис, в свою очередь, запрашивает с публичного API (англоязычные вопросы для викторин) https://jservice.io/api/random?count=1 указанное в полученном запросе количество вопросов.
-
Далее, полученные ответы должны сохраняться в базе данных из п. 1, причем сохранена должна быть как минимум следующая информация (название колонок и типы данный можете выбрать сами, также можете добавлять свои колонки):
- ID вопроса,
- Текст вопроса,
- Текст ответа,
- Дата создания вопроса.
В случае, если в БД имеется такой же вопрос, к публичному API с викторинами должны выполняться дополнительные запросы до тех пор, пока не будет получен уникальный вопрос для викторины.
-
Ответом на запрос из п.1 должен быть предыдущей сохранённый вопрос для викторины. В случае его отсутствия - пустой объект.
POST запрос на endpoint /questions/3
сохранит в базе 3-и сущности викторины
{"questions_num": 3}
И вернет предыдущей сохранённый вопрос для викторины
{
"id_question": 43046,
"question": "After Abel's murder, Cain settled in this land east of Eden",
"answer": "Nod",
"created_at": "2022-12-30T18:55:35.605000"
}
- Необходимо реализовать веб-сервис, выполняющий следующие функции: Создание пользователя;
- Для каждого пользователя - сохранение аудиозаписи в формате wav, преобразование её в формат mp3 и запись в базу данных и предоставление ссылки для скачивания аудиозаписи.
Реализовать веб-сервис со следующими REST методами:
- Создание пользователя, POST: Принимает на вход запросы с именем пользователя; Создаёт в базе данных пользователя заданным именем, так же генерирует уникальный идентификатор пользователя и UUID токен доступа (в виде строки) для данного пользователя; Возвращает сгенерированные идентификатор пользователя и токен. Реализация ChatGPTBewise_user_creat
- Добавление аудиозаписи, POST:
Принимает на вход запросы, содержащие уникальный идентификатор пользователя, токен доступа и аудиозапись в формате wav;
Преобразует аудиозапись в формат mp3, генерирует для неё уникальный UUID идентификатор и сохраняет их в базе данных;
Возвращает URL для скачивания записи вида
http://host:port/record?id=idзаписи&user=idпользователя
. Реализация ChatGPTBewise_audio_creat - Доступ к аудиозаписи, GET: Предоставляет возможность скачать аудиозапись по ссылке из пред. пункта.
- Создадим пользователя. POST запрос на endpoint
/users/
с данными:Возвращает ответ:{ "name": "Artem" }
{ "id": 1, "name": "Artem", "token": "17b2a3aa-11d6-47ec-b7e1-b777e5e931b5" }
- POST запрос на endpoint
/audio_converter/
с данными: загрузит файл типа wav и преобразует в формат mp3, вернув ответ со сгенерированной ссылкой:{ "url": "http://localhost:8000/record?id=03600308-5e02-4fd0-8936-c6070dfe3302&user=2" }
- Перейдя по полученной ссылки
http://localhost:8000/record?id=03600308-5e02-4fd0-8936-c6070dfe3302&user=1
можно скачать конвертированный файл аудио.