Веб-сервис на Django: личный кабинет B2B, заявки и роли

Кабинет B2B на Django: заявки, роли и админка операторов — чужие заявки не светятся по URL.

Стек Celery, Django, PostgreSQL, RBAC

Я делал веб-сервис на Django — личный кабинет для клиентов B2B: заявки на услуги, статусы, файлы, переписка с менеджером. Рядом — внутренняя админка для операторов, не «голый» Django Admin из коробки.

Я спроектировал модели и ограничения: организация → пользователи → заявки → комментарии и вложения. Я написал RBAC: владелец, менеджер клиента, наблюдатель, оператор, супервизор. Права проверял не только в view, но и на queryset: чужие заявки не светятся даже прямым URL.

Я собрал формы и список заявок с фильтрами, пагинацией и поиском; загрузка файлов — в S3, антивирусная проверка и лимит размера. Я вынес тяжёлые уведомления (почта, Telegram) в Celery, чтобы POST не ждал SMTP.

Я закрыл сессии, CSRF, аудит действий (кто сменил статус), мягкое удаление. Стек: Django 5, PostgreSQL, Redis, Celery, Gunicorn, Nginx, Docker. NDA: сервис и домен не публикуются.