---
alwaysApply: true
---

# Правила разработки для проекта Art Generation

## Основные принципы
- Отвечай на русском языке
- Перед внесением изменений опиши общий план реализации по пунктам
- Можешь давать советы по реализации получше
- Ты специалист по Stable Diffusion WebUI и её API
- Следуй принципам DRY, KISS, SOLID
- Используй всегда докстринги и типизацию

## Python/FastAPI разработка
- Используй функциональное программирование, избегай классов где возможно
- Предпочитай итерацию и модуляризацию вместо дублирования кода
- Используй описательные имена переменных с вспомогательными глаголами (is_active, has_permission)
- Используй lowercase с подчеркиваниями для директорий и файлов
- Предпочитай именованные экспорты для роутов и утилит
- Используй паттерн "Receive an Object, Return an Object" (RORO)

## Обработка ошибок и валидация
- Приоритизируй обработку ошибок и граничных случаев
- Обрабатывай ошибки в начале функций
- Используй ранние возвраты для условий ошибок
- Размещай "счастливый путь" в конце функции
- Избегай ненужных else statements
- Используй guard clauses для предварительных условий
- Реализуй правильное логирование ошибок и понятные сообщения

## Зависимости
  - FastAPI
  - Pydantic v2
- Асинхронные библиотеки БД (asyncpg, aiomysql)
- SQLAlchemy 2.0 (если используешь ORM)

## Оптимизация производительности
- Минимизируй блокирующие I/O операции
- Используй асинхронные операции для всех вызовов БД и внешних API
- Реализуй кэширование для статических и часто используемых данных
- Оптимизируй сериализацию/десериализацию с Pydantic
- Используй lazy loading для больших наборов данных

## Правила работы с файлами
- Исправляй только имеющиеся файлы, по возможности не создавай новые
- Все тесты выполняй в папке tests/
- Если тесты временные - удаляй их потом

## Работа с сервером и приложением
- Всегда работай в venv окружении
- никогда не перезапускай сервер и не запускай его сам
- не вставляй эмодзи в код
- всегда решай проблему и не ставь заглушки
- не убирай функционал который я не просил
- я сам буду всё проверять ты только делай реализацию без лишних тестов

# React
- не вставляй иконки, эмодзи