Описание задачи: необходимо разработать бэкенд для web-приложения, выполняющего функции CRM-системы.
Взаимодействие с интерфейсом пользователя: взаимодействие осуществляется через API. Фронтенд реализован на React JS.
Хранение данных: в процессе разработки для целей тестирования взаимодействия с фронтом можно использовать любую СУБД. По завершении реализации данного ТЗ необходимо осуществить интеграцию с существующей БД, выполненной на MySQL.
Стек: Python / Django REST Framework.
| Таблица | Поле | Тип данных | Внешняя таблица |
|---|---|---|---|
| Users | id | ||
| role_id | FK | Roles | |
| name | text | ||
| text | |||
| password | text | ||
| last_active | date | ||
| AuthTokens | id | ||
| key | text | ||
| user_id | |||
| Roles | id | ||
| name | text | ||
| permissions | JSON | ||
| CashboxIncomes | id | ||
| user_id | FK | Users | |
| date | date | ||
| description | text | ||
| bank_value | number | ||
| cash_value | number | ||
| project_id | FK | Projects | |
| category | ENUM | ||
| comments | text | ||
| status | ENUM | ||
| CashboxExpenses | id | ||
| user_id | FK | Users | |
| date | date | ||
| description | text | ||
| cash_value | number | ||
| project_id | FK | Projects | |
| category | ENUM | ||
| team | text | ||
| comments | text | ||
| status | ENUM | ||
| Projects | id | ||
| name | text | ||
| customer | FK | Contractors | |
| organization | FK | Organizations | |
| cost | number | ||
| project_manager | FK | Managers | |
| sales_manager | FK | Managers | |
| start_plan | date | ||
| start_fact | date | ||
| finish_plan | date | ||
| finish_fact | date | ||
| budget_bank | number | ||
| budget_cash | number | ||
| comments | text | ||
| warranty_start | date | ||
| warranty_finish | date | ||
| status | ENUM |
getUserProfile – запрос профиля пользователя по токену авторизации
getCashboxIncomes – запрос списка доходов
getCashboxIncomes - запрос списка расходов
getProjectsNames – запрос перечня наименований проектов
postAuthToken – создание токена авторизации
postCashboxIncome – создание записи в таблице доходов
postCashboxExpense - создание записи в таблице расходов
patchCashboxIncome – внесение изменений в запись таблицы доходов
patchCashboxExpense – внесение изменений в запись таблицы расходов
patchCashboxIncomesStatus – изменение статуса записи таблицы доходов
patchCashboxExpensesStatus - – изменение статуса записи таблицы расходов
deleteToken – удаление токена авторизации
deleteCashboxIncomes – удаление записи таблицы доходов
deleteCashboxExpenses – удаление записи таблицы расходов
| Наименование функции | manager | director | salesHead | projectsHead |
|---|---|---|---|---|
| Финансы (cashboxIncomes, cashboxExpenses) | ||||
| Чтение записей | Только свои | Все | Только свои | Только свои |
| Создание записи | Только свои | Все | Только свои | Только свои |
Редактирование записи в статусе Черновик |
Только свои | Только свои | Только свои | Только свои |
Редактирование записи в статусе Согласовано/Отклонено |
Нет | Все | Нет | Нет |
Изменение статуса записи с Черновик на На согласовании |
Только свои | Только свои | Только свои | Только свои |
Изменение статуса записи с На согласовании на Согласовано/Отклонено |
Нет | Все | Нет | Нет |
Удаление записи в статусе Черновик |
Только свои | Только свои | Только свои | Только свои |
Удаление записи в статусе Согласовано/Отклонено |
Нет | Все | Нет | Нет |
| Проекты (Projects) | ||||
| Чтение записей | Только свои | Все | Все | Все |
| Создание запроса на изменение | Да | Нет | Нет | Нет |
| Редактирование записи | Нет | Да | Да | Да |
| Удаление записи | Нет | Да | Нет | Нет |
- Действия пользователей должны быть ограничены в соответствии с заданной ролью.
- Все запросы и входные параметры должны валидироваться.
- Сервер должен писать логи действий пользователей.