Второй этап отбора на проект от яндекса фестиваль "Любимовка" (пройден)
Справочник представляет собой API приложение(DFR) для поиска номеров телефонов и информации об организациях. Визуальное представление не требуется.
- Информация, хранимая об организации: адрес, название, описание и список сотрудников.
- У каждого сотрудника есть ФИО, должность и номера телефонов.
- Номера телефонов могут быть различных типов: Рабочий, Личный, Факс. Хотя бы один телефон в справочнике должен быть обязательным.
- Рабочие телефоны могу быть одинаковыми для нескольких сотрудников, но личные — нет.
- Создать организацию с одинаковым названием нельзя.
- Внутри одной организации не может быть сотрудников с одинаковыми ФИО, но они могут быть в разных организациях.
- Номера телефонов отображаются в формате +79161234567. Нужно учесть, что номера телефонов могут быть с разными кодами страны.
- Аутентификация реализована через email и пароль.
- Для вывода списка организаций, элементов поиска и сотрудников организации, всегда используем пагинатор. Стандартное количество элементов на всех страница — 10 штук, но пользователь может менять количество элементов.
На главной странице API выводится список организаций в алфавитном порядке.
Приложение имеет поиск — одно поле, поиск осуществляется по названию организации, ФИО сотрудника и номеру телефона. В результатах поиска выводится название организации и первые 5 сотрудников, подходящих под условия поиска. Или просто название организации, если в ней нет сотрудников, подходящих под условия поиска. Если какого-то телефона нет, он не показывается. Примеры ответов ниже показывают ожидаемую иерархию данных.
Результаты:
- ООО Ромашка
- Иванов Сергей Петрович (Инженер)
- Факс: +74951234567
- Басурман Иван Павлович (Бухгалтер)
- Личный: +79161234567
- Факс: +74951234567
- Иванов Сергей Петрович (Инженер)
- ООО Василек
- Цветкова Яна Ивановна (Программист)
- Личный: +79161234567
- Факс: +74951234567
- Цветкова Яна Ивановна (Программист)
- ООО Гремучая ива
- И так далее
Результаты:
- ООО Заборы из металла
- ОГО Металлические нервы
- ОАО Металлург
- И так далее
Поиск представляет собой API вида /search?q=Ива
Со страницы результатов поиска должна быть вся необходимая информация для того, чтобы перейти на страницу организации.
При запросе конкретной организации выводится список сотрудников с их должностями и номерами телефонов, формат аналогичен формату выше. Доступен поиск по номеру телефона, а также по ФИО и должности сотрудника в рамках организации, также в одном поле.
- Создавать организации
- Просмотреть список организаций, в которых он может изменять данные сотрудников.
- Добавлять и удалять сотрудников, редактировать их ФИО, должности и номера телефонов.
- Предоставить по email доступ пользователю к редактированию организации.
- Просмотреть список пользователей, которым доступно редактирование организации.
- Отозвать права на редактирование.
- Изменять информацию об организации: адрес, название и описание.
Необходимо добавить все модели в джанго-админку, чтобы суперпользователь мог редактировать оттуда любую информацию.
- Создайте пустой репозиторий и работайте в нем, когда будете готовы — пришлите ссылку на репозиторий.
- Рекомендуем разбить проект на маленькие задачи и делать их поочередно, от меньшего к большему.
- Разрабатывать приложение необходимо средствами Django REST Framework.
- Необходимо описать README.md файл с инструкцией по запуску.
- Ключевые моменты: архитектура приложения и качество кода.
- Приветствуются любые дополнения к данному ТЗ, весь дополнительный функционал необходимо описать в README.md
Prefix: api/auth/
registration/
login/
Создатель компании и те, кому он передал права, могут посмотреть всех у кого есть права на эту фирмы:
api/v1/company/<company_id>/access
- get
{
"administrator": {
"id": 0,
"username": "string",
"email": "string"
},
"delegate_persons": [
{
"id": 0,
"username": "string",
"email": "string"
}
]
}Добавить удалять права может только создатель компании:
api/v1/company/<company_id>/access
- post
{
"email":"string"
}- delete
api/v1/company/<company_id>/access/<user_id>
Юзер может создавать много компаний, также он может состоять в многих компаниях, где ему дали права. Чтобы посмотреть какие у тебя есть права, можно сделать такой get запрос
api/v1/me
{
"id": 0,
"username": "string",
"email": "string",
"permissions": [
{
"id": 0,
"name": "string"
},
],
"companies": [
{
"id": 0,
"name": "string",
},
]
}Работники выводятся как в тз
api/v1/company/<company_id>/workers/
Совпадения ищет как в тз
api/v1/company/?search=value