Яндекс

Python HTML CSS JavaScript Django FastAPI Flask

Тестовое задание — Иерархия сотрудников

Часть №1 — Обязательная

Создайте веб-страницу, отображающую иерархию сотрудников в виде дерева.

Требования:

  • Хранение данных в базе данных.
  • Информация о каждом сотруднике:
  • ФИО
  • Должность
  • Дата приёма на работу
  • Размер заработной платы
  • У каждого сотрудника должен быть один начальник.
  • В базе данных должно быть:
  • не менее 50 000 сотрудников
  • 5 уровней иерархий
  • На веб-странице должна быть видна должность сотрудника.

Часть №2 — Опционально (дополнительные пункты)

1. Инициализация данных:

  • Использовать миграции Django / Flask для создания базы данных.
  • Реализовать Seeder для генерации тестовых данных с помощью Django ORM / Flask-SQLAlchemy.

2. Визуальное оформление:

  • Применить Twitter Bootstrap для базовых стилей и адаптивной верстки страницы.

3. Отдельная страница со списком сотрудников:

  • Создать страницу с полной информацией о сотрудниках.
  • Реализовать сортировку по любому полю (ФИО, должность, дата, зарплата и т.д.).

4. Поиск сотрудников:

  • Добавить возможность поиска по любому полю на странице со списком сотрудников.

5. Работа без перезагрузки:

  • Реализовать AJAX-поиск и сортировку без перезагрузки страницы.

6. Аутентификация:

  • Настроить аутентификацию пользователей с помощью стандартных функций Django / Flask.
  • Список сотрудников, поиск и сортировка (пункты 3–5) должны быть доступны только зарегистрированным пользователям.

7. Полный CRUD:

  • В разделе для авторизованных пользователей реализовать создание, редактирование, удаление сотрудников.
  • Все поля сотрудника (включая начальника) должны быть редактируемыми.

8. Фото сотрудников:

  • Реализовать загрузку фотографии сотрудника.
  • Отображать фото:
  • на странице редактирования
  • в виде уменьшенного превью в таблице сотрудников

9. Перераспределение подчинённых:

  • При изменении начальника сотрудника обеспечить перераспределение иерархии.
  • Бонус: использовать встроенные механизмы ORM для этого.

10. Ленивое дерево:

  • По умолчанию отображать только 2 уровня иерархии.
  • Подгружать следующие уровни (или всю ветку) при клике на сотрудника 2 уровня.

11. Drag-n-Drop:

  • Позволить переносить сотрудников между начальниками прямо в дереве с помощью Drag-n-Drop.

Финальная сдача

Тестовое задание необходимо предоставить в виде ссылки на GitHub или Bitbucket репозиторий.