Елизавета В.
25 лет
ЗАДАЧИ ✔️ Разработка API, работа с очередями задач и БД (SQLite, PostgreSQL). Интеграция с внешними API. ✔️ Проектирование и реализация REST API. ✔️ Покрытие кода тестами, поддержка и доработка внедрённых решений. ✔️ Оптимизация и рефакторинг существующего кода. РЕЗУЛЬТАТЫ РАБОТЫ Telegram-бот с FSM (PolyakiBot) ✔️ Стек: Python 3, pyTelegramBotAPI (TeleBot), FSM (Finite State Machine), SQLite, pycountry, logging. ✔️ Спроектировала и реализовала бота с использованием конечного автомата (FSM) для управления многоэтапным сценарием опроса. Бот обрабатывает текстовые сообщения, контакты и callback-запросы от inline-кнопок, обеспечивая гибкость ввода и устойчивость к пропуску шагов. ✔️ Организовала пошаговый сбор данных (имя, возраст, страна, город, телефон) с изоляцией логики для каждого этапа, что исключает смешивание состояний разных пользователей и упрощает поддержку кода. ✔️ Интегрировала библиотеку pycountry для валидации и нормализации ввода стран, реализовала динамическую подгрузку списка городов из БД SQLite в виде инлайн-кнопок, что улучшило UX и минимизировало ошибки ручного ввода. ✔️ Реализовала механизм пропуска необязательных шагов (например, номера телефона) с помощью reply-клавиатуры, не ломая общий flow диалога. ✔️ Настроила детальное логирование пользовательских действий и системных событий для упрощения отладки и анализа поведения пользователей. ✔️ Roadmap проекта (следующие этапы): - внедрение Pydantic для строгой проверки входящих данных (возраст, имя) на стороне сервера; - миграция с SQLite на PostgreSQL для хранения результатов опросов и отработки работы с СУБД; - контейнеризация приложения с помощью Docker и настройка CI/CD (GitHub Actions) для автоматизации тестирования и деплоя; Высокопроизводительный веб-сервис для поиска по иерархическим данным (FastAPI) ✔️ Стек: Python 3, FastAPI, Uvicorn, pytest, collections.defaultdict, асинхронные обработчики. ✔️ Спроектировала и реализовала RESTful API на FastAPI для поиска данных в древовидной структуре. Сервис принимает файл с данными и обрабатывает поисковые запросы по локациям с учетом их вложенности (поиск по родительским и дочерним элементам). ✔️ Выбрала и реализовала структуру данных на основе defaultdict для хранения связей «локация -> список площадок», что обеспечивает скорость поиска, близкую к O(1). Реализовала два режима поиска (up, down) с обходом иерархии путей. ✔️ Разделила бизнес-логику (класс AdService) и слой API (FastAPI роутеры), что упрощает тестирование и поддержку. ✔️ Реализовала асинхронные эндпоинты для обработки файлов и запросов, чтобы не блокировать сервер на операциях I/O. ✔️ Полностью покрыла код юнит- и интеграционными тестами (pytest), включая тесты на корректность загрузки данных, оба режима поиска и обработку крайних случаев. ✔️ Настроила автоматическую генерацию интерактивной документации API через Swagger UI (/docs). ✔️ Roadmap проекта (следующие этапы): - внедрение Redis для кэширования результатов частых запросов и снижения нагрузки; - миграция с хранения данных в памяти на PostgreSQL с использованием ltree-модуля или других подходов для эффективной работы с иерархиями; - добавление Pydantic для валидации, пагинации ответов API, а также контейнеризация (Docker) и настройка CI/CD для автоматического тестирования и деплоя; Рефакторинг кода (учебное задание) ✔️ Стек: Python 3, рефакторинг, работа со структурами данных (списки, словари), обработка исключений. ✔️ Провела разбор и переработку функции на Python, предназначенной для фильтрации входного списка разноплановых данных и преобразования подходящих элементов в единый формат словарей: - вникла в проблему исходного кода, некорректно обрабатывалющего типы данных; - формализовала требования: оставить словари, преобразовать строки и числа в вид {element: element}; ✔️ Осознанно отказалась от использования рекурсии. Реализовала решение с использованием итерации по списку и проверки типов с помощью isinstance(). ✔️ Разделила логику на две функции: create_dict() для обработки одного элемента и data_preparation() для обработки всего списка. Это повысило читаемость, тестируемость и позволило избежать дублирования кода. Моделирование системы на основе ООП (учебное задание) ✔️ Стек: Python 3, ООП (инкапсуляция, композиция), классы, методы; ✔️ Разработала объектно-ориентированную модель сельскохозяйственной системы для симуляции роста растений с целью отработки и демонстрации ключевых принципов ООП на Python. ✔️ Разделила ответственность между классами: - класс Potato инкапсулирует состояние (стадия зрелости) и поведение (рост) одного объекта; - класс PotatoGarden управляет коллекцией объектов Potato и реализует операцию роста для всех объектов сразу (демонстрация композиции); ✔️ Реализовала логику роста и проверки зрелости в виде методов, а не внешних функций. ✔️ Использовала словарь для описания стадий зрелости, что упрощает изменение и добавление новых стадий. ✔️ Продемонстрировала, как объекты разных классов заимодействуют друг с другом: PotatoGarden вызывает метод grow() у каждого объекта Potato в своем списке.
Понравился профиль? Создайте себе такой же