Серверное приложение для работы с базой данных задач и сотрудников.
Реализация базы данных:
БД реляционная (Postgres)
БД представляет собой трекер задач и содержит следующие таблицы:
таблица сотрудников (ФИО, должность, ...);
таблица задач (наименование, ссылка на родительскую задачу, если есть зависимость, исполнитель, срок, статус, ...).
таблица операций
таблица последних 5 сообщений чата
таблица пользователей
таблица ролей пользователя
Реализованы на Python REST API (FastAPI) следующие эндпоинты:
CRUD для сотрудников и задач
"Занятые сотрудники":
Запрашивает из БД список сотрудников и их задачи.
Список сотрудников отсортирован по количеству активных задач.
"Важные задачи":
Запрашивает из БД задачи не взятые в работу, и от которых зависят другие задачи, взятые в работу.
Реализует поиск по сотрудникам, которые могут взять такие задачи
(наименее загруженный сотрудник или сотрудник выполняющий родительскую задачу если ему назначено
максимум на 2 задачи больше, чем у наименее загруженного сотрудника).
Возвращает Список объектов [{Важная задача, Срок, [ФИО сотрудника]}].
"Операции"
"Чат"
"Регистрация/Аутентификация"
"Страницы"
Библиотеки, планирующиеся к использованию:
alembic
sqlalchemy
fastapi-users
fastapi-cache
celery
redis
jinja
flower
Технологии:
аутентификация пользователей (fastapi-users)
кэширование запросов (redis)
отложенные задачи (celery + redis)
тестирование (pytest).
мониторинг отложенных задач (flower)
валидация (pydantic)
Фронтенд:
react (в данный момент в разработке).
Сгенерировать миграции:
alembic revision --autogenerate -m 'initial'
Тестирование локально:
pytest -s -v
Запуск локально:
Переименовать .env.sample в .env
В файле .env изменить доступы к базам данных и redis
alembic upgrade head
uvicorn src.main:app --reload
celery --app=src.report.report:celery worker -l INFO
celery --app=src.report.report:celery flower
Запуск docker:
Из файла pyproject.toml удалить pytest-asyncio = "^0.23.0", тесты в прод не планировались. fix it, можно не удалять.
Переименовать .env-non-dev.sample в .env-non-dev
В файле .env-non-dev внести необходимые изменения
docker compose build
docker compose up
bugs:
При запуске нескольких воркеров чат на вебсокете работает тоже на нескольких воркерах,
из-за чего не все клиенты друг другу могут достучаться