Ответ
1. Критический: Race Condition в платежном API
- Описание: При быстром двойном клике на кнопку "Оплатить" через PayPal сумма списывалась дважды.
- Причина: Отсутствие механизма предотвращения повторных запросов (debounce/mutex) на фронтенде и недостаточная проверка идемпотентности на бэкенде.
- Код (проблема):
// Фронтенд: обработчик без защиты handlePayment() { fetch('/api/pay', { method: 'POST', body: JSON.stringify(order) }); } - Решение: Добавить
debounceна UI и использовать уникальныйidempotency-keyв заголовках запроса.
2. UI/UX баг: Перекрытие элемента интерфейса
- Описание: В мобильной версии на iOS кнопка "Сохранить" в форме ввода скрывалась за виртуальной клавиатурой.
- Причина: Неправильная настройка
viewportиposition: fixedв CSS.
3. Логическая ошибка в бизнес-правилах
- Описание: Скидка 10% для постоянных клиентов не применялась к товарам из категории "Акции".
- Причина: Неверное условие в коде расчета финальной цены.
- Код (проблема):
# Было: скидка применялась, только если товар НЕ промо и у пользователя есть скидка if not item.is_promo and user.has_discount: price = price * 0.9 # Упущена проверка item.category == 'sale'
4. Баг производительности (Performance)
- Описание: Страница каталога товаров загружалась более 8 секунд.
- Причина: Проблема N+1 запроса в ORM. Для каждого товара делался отдельный запрос к БД для получения его категории.
- Решение: Использовать жадную загрузку (
select_relatedилиprefetch_relatedв Django).
Процесс документирования: Все баги фиксировались в Jira с четким шаблоном: Заголовок, Шаги воспроизведения, Фактический результат, Ожидаемый результат, Окружение, Скриншот/видео, Логи, Severity/Priority.