You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Во всех заданиях обязательно создание pull-request по аналогии из задачи блока git!**
3
+
4
+
**Ваш код обязательно должен запускаться и проверяться на работоспособность**
5
+
## Задание 1
6
+
Нужно локально запустить backend приложение. Пройдитесь по шагам:
7
+
1. Если еще не склонирован этот репозиторий, то склонируйте
8
+
2. Создайте в папке `simple_backend/src/task_tracker` виртуальное окружение
9
+
3. Активируйте `venv`
10
+
4. Установите записимости из `requirements.txt`
11
+
5. Запустите сервер с помощью команды `uvicorn main:app`
12
+
6. Перейдите по ссылке http://127.0.0.1:8000/docs и проверьте, что бэк работает
13
+
## Задание 2
14
+
Вам нужно оживить бекенд из первой задачи и создать простой API для управления списком задач. Данные нужно хранить в оперативной памяти (например в списке Python).
15
+
В каждой из функций нужно прописать логику:
16
+
- get_tasks должен возвращать список всех задач
17
+
- create_task должен создавать новую задачу
18
+
- update_task должен обновлять информацию о задаче
19
+
- delete_task должен удалять задачу
20
+
21
+
У задачи должны быть параметры: id, название, статус задачи.
22
+
23
+
### Подзадачи
24
+
- Прочитайте, что такое "Хранение состояния", создайте в task_tracker readme.md файл и напишите в чём минусы подхода с хранением задач в оперативной памяти (списке python)
25
+
- Исправьте ситуацию и переделайте хранение информации о задачах в файле проекта. Информацию можно хранить например в формате json.
26
+
- Напишите в readme.md:
27
+
- что улучшилось после того, как список из оперативной памяти изменился на файл проекта?
28
+
- избавились ли мы таким способом от хранения состояния или нет?
29
+
- где еще можно хранить задачи и какие есть преимущества и недостатки этих подходов?
30
+
- Напишите класс для работы с файлом хранения задач в task_tracker и измените код проекта так, чтобы он работал с объектом этого класса.
31
+
- Сделайте свой backend - stateless с помощью интеграции с облачным сервисом (jsonbin.io, mockapi.io, github gist). Организуйте хранение и обновление json файла во внешнем сервисе.
32
+
- Прочитайте что такое "состояние гонки" и напишите в readme файле о том, какие проблемы остались в бекенде на данном этапе проекта. Есть ли у вас какое-то решение этой проблемы?
33
+
34
+
35
+
## Задание 3
36
+
Давайте прокачаем наш таск-треккер. Хочется, чтобы текст задачи заливался в LLM модель и она выдавала способы решения задачи и добавляла к её тексту.
37
+
Для того, чтобы это сделать:
38
+
- Настройте интеграцию с сервисом [Cloudflare](https://developers.cloudflare.com/workers-ai/get-started/rest-api/) через REST API. Для этого создайте новый класс для работы с этой API.
39
+
- При создании новой задачи отправляйте запрос с её текстом в LLM и просьбой объяснить как решать задачу
40
+
- Добавляйте полученный ответ в текст задачи
41
+
42
+
## Задание 4
43
+
Заметили, что в коде для работы с файлами и в коде для работы с LLM API есть похожие участки? Давайте избавимся от дублирования через наследование.
44
+
- Сделайте базовый класс BaseHTTPClient и вынесите в него общие функции и методы из двух классов
45
+
- Сделайте наследование от базового класса в клиентах
46
+
- С помощью абстрактных классов реализуйте абстрактные методы, которые должны быть в классах наследниках
0 commit comments