Skip to content
This repository has been archived by the owner on Oct 14, 2023. It is now read-only.
/ FastAPI_project Public archive

This is test task for recommendation AI platform "Bewise"

Notifications You must be signed in to change notification settings

Arteyss/FastAPI_project

Repository files navigation

FastAPI_project

This is my first FastAPI project. And this is test task for recommendation AI platform Bewise

Stack:

FastAPI Python SqlAlchemy PostgreSQL Docker

Запуск

  1. Перейти в директорию с проектом и запустить команду:
    docker-compose up
  2. После установки и запуска контейнера, перейти по ссылке: http://127.0.0.1:8000/docs

Задача 1

Реализовать на Python3 веб сервис (с помощью FastAPI или Flask, например), выполняющий следующие функции:

  1. В сервисе должно быть реализован POST REST метод, принимающий на вход запросы с содержимым вида {"questions_num": integer}.

  2. После получения запроса сервис, в свою очередь, запрашивает с публичного API (англоязычные вопросы для викторин) https://jservice.io/api/random?count=1 указанное в полученном запросе количество вопросов.

  3. Далее, полученные ответы должны сохраняться в базе данных из п. 1, причем сохранена должна быть как минимум следующая информация (название колонок и типы данный можете выбрать сами, также можете добавлять свои колонки):

    • ID вопроса,
    • Текст вопроса,
    • Текст ответа,
    • Дата создания вопроса.

    В случае, если в БД имеется такой же вопрос, к публичному API с викторинами должны выполняться дополнительные запросы до тех пор, пока не будет получен уникальный вопрос для викторины.

  4. Ответом на запрос из п.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"
}

Задача 2

  1. Необходимо реализовать веб-сервис, выполняющий следующие функции: Создание пользователя;
  2. Для каждого пользователя - сохранение аудиозаписи в формате wav, преобразование её в формат mp3 и запись в базу данных и предоставление ссылки для скачивания аудиозаписи.

Детализация задачи:

Реализовать веб-сервис со следующими REST методами:

  1. Создание пользователя, POST: Принимает на вход запросы с именем пользователя; Создаёт в базе данных пользователя заданным именем, так же генерирует уникальный идентификатор пользователя и UUID токен доступа (в виде строки) для данного пользователя; Возвращает сгенерированные идентификатор пользователя и токен. Реализация ChatGPTBewise_user_creat
  2. Добавление аудиозаписи, POST: Принимает на вход запросы, содержащие уникальный идентификатор пользователя, токен доступа и аудиозапись в формате wav; Преобразует аудиозапись в формат mp3, генерирует для неё уникальный UUID идентификатор и сохраняет их в базе данных; Возвращает URL для скачивания записи вида http://host:port/record?id=idзаписи&user=idпользователя. Реализация ChatGPTBewise_audio_creat
  3. Доступ к аудиозаписи, GET: Предоставляет возможность скачать аудиозапись по ссылке из пред. пункта.

Пример запроса и ответа

  1. Создадим пользователя. POST запрос на endpoint /users/ с данными:
    {
      "name": "Artem"
    }
    Возвращает ответ:
    {
      "id": 1,
      "name": "Artem",
      "token": "17b2a3aa-11d6-47ec-b7e1-b777e5e931b5"
    }
  2. POST запрос на endpoint /audio_converter/ с данными: Alt text загрузит файл типа wav и преобразует в формат mp3, вернув ответ со сгенерированной ссылкой:
    {
      "url": "http://localhost:8000/record?id=03600308-5e02-4fd0-8936-c6070dfe3302&user=2"
    }
  3. Перейдя по полученной ссылки http://localhost:8000/record?id=03600308-5e02-4fd0-8936-c6070dfe3302&user=1 можно скачать конвертированный файл аудио.

Releases

No releases published

Packages

No packages published