Описание задачи: необходимо разработать бэкенд для 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) | ||||
Чтение записей | Только свои | Все | Все | Все |
Создание запроса на изменение | Да | Нет | Нет | Нет |
Редактирование записи | Нет | Да | Да | Да |
Удаление записи | Нет | Да | Нет | Нет |
- Действия пользователей должны быть ограничены в соответствии с заданной ролью.
- Все запросы и входные параметры должны валидироваться.
- Сервер должен писать логи действий пользователей.