Обязанности и достижения:
Fullstack-разработчик
Апрель 2024 — сейчас (1 год и 8 месяцев)
Обязанности:
Проектирование и разработка frontend и backend функций с использованием
Python/Django и JavaScript/React
Разработка серверной базы данных и логики на стороне сервера с использованием
PostgreSQL и SQLAlchemy ORM, включая проектирование схемы, миграции и
оптимизированные запросы
Проектирование и внедрение GraphQL-схем для обмена данными фронтенд ↔ бэкенд
Оптимизация взаимодействия фронтенд ↔ бэкенд и процесса сборки
Написание Docker-скриптов, настройка деплоя
Улучшение внутренней защиты и логики контроля доступа бэкенда
Достижения:
1). Backend:
— Осуществил перевод бэкенда проекта на новый пакетный менеджер с pip на uv, что сократило время сборки в ~5 раз, обновил версии Python с 3.7 на 3.11 и Django 2 на 5, а также все зависимости. Для этого, был изменён докерфайл, обновлены зависимости, скорректированы тесты.
— Решил проблему с отображениям контента от деактивированных компаний на уровне ORM-запросов для REST и GraphQL, попутно оптимизировав выборку связанных сущностей (устранение N+1), что сократило количество запросов в 1,5-2 раза с помощью сквозной фильтрации и методов QuerySet.
— Исправил критическую уязвимость безопасности в ключевой модели CompanyConnection, которая позволяла случайным компаниям автоматически присоединяться к партнерским сетям, получая доступ к конфиденциальному контенту.
Для этого модифицировал логику разрешений (Object-level Permissions) для вьюсета и GraphQL-типа.
2). Frontend:
— Внедрил на клиенте функционал защищенных ссылок с 2FA: расширил GraphQL-схему, реализовал UI настройки доступов и валидацию.
Разработал механизм авто-менеджмента сессии (JWT decode, timer).
Адаптировал роутинг и локализацию (i18n) под новые сценарии безопасной передачи ссылок.
— Оптимизировал систему массовой загузки файлов: внедрил очередь с ограниченной параллельностью (5 потоков) и тротлинг обновлений UI (200 мс), устранив блокировки основного потока и обеспечив стабильность при нестабильном соединении с помощью библиотек p-queue и p-retry.