Тестовое задание — Иерархия сотрудников
Часть №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 репозиторий.