wave-10
Волна аудита: 10 раундов, 10 релизов, стабильнее и безопаснее
Прогнали платформу через 100 независимых проверок. Сделали 10 релизов подряд — от безопасности до склада. Прод ни разу не упал, тесты 167/167 после каждого деплоя.
🔒 Безопасность
- •Закрыта CSRF-уязвимость: проверка Origin теперь точная, а не по подстроке
- •Rate-limits на сброс пароля, смену пароля, сохранение ключей
- •HSTS заголовок — браузер принудительно идёт по HTTPS
- •Куки входа помечены secure + httponly + samesite
- •Ключи API в UI: убрали утечку первого символа, показываем только ****last4
- •Уволенный сотрудник сразу теряет доступ (ревокируем refresh-токены)
- •Перед отправкой ошибок в Telegram админу — маскируем JWT, пароли, email
⚙️ Надёжность
- •Фоновые задачи запускаются только в одном worker'е (раньше дублировались ×4)
- •Починили утечку памяти в парсерах Excel (50-100 МБ на запрос)
- •Бэкап БД переписан на атомарный snapshot + проверка целостности + SHA256
- •Ежесуточный VACUUM/ANALYZE в 03:30 UTC
- •Retry-After от маркетплейсов уважаем, +20% джиттер от перегрузки
- •Email убран из логов логина (защита от log injection)
📦 Ozon FBO (дистрибуция)
- •Окно поиска таймслотов расширили с 21 до 28 дней
- •Cancel_draft считает "already cancelled" успехом, а не ошибкой
- •SSE не шлёт данные в закрытое соединение (is_disconnected)
- •Retry корректно обрабатывает пустой slot2
- •UNIQUE-индексы на draft_id и supply_order_id — защита от дублей
🏭 Склад
- •Нельзя удалить approved-инвентаризацию (возвращаем 409)
- •UNIQUE на штрихкод и алиас сокращений (case-insensitive)
- •Bulk abbreviations считает реально созданные, а не попытки
🔌 Интеграции маркетплейсов
- •WB 429 retry уважает Retry-After заголовок
- •Логирование Deprecation/Sunset от API (раннее предупреждение об устаревании)
- •Audit-лог при смене ключей маркетплейса
- •Cluster changelog (Ozon) теперь per-аккаунт, не путает данные
🎨 Интерфейс
- •Toast-ы: ошибки видны 8 сек, успехи 3 сек (раньше одинаково)
- •Дедупликация одинаковых toast'ов в окне 1.2 сек — без спама
- •Защита от двойного submit на slow 3G
- •Корректные aria-атрибуты и autoFocus на формах
🗄️ Производительность БД
- •Новые индексы для рефералов, инвайтов, подписок и ярлыков склада
- •Tuning SQLite (cache_size, mmap, wal_autocheckpoint, busy_timeout)
- •cleanup_expired_tokens теперь чистит и user_sessions
🔭 Observability (мониторинг)
- •Uptime-check на явный /api/health 200 (вместо 401 "auth endpoint alive")
- •Добавили в logrotate логи cron'а и uptime (перестали расти бесконечно)
- •Перенесли request_id в фоновые потоки (больше не теряется в логах)
- •IP клиента в audit-логе входов (через X-Forwarded-For)
- •Отдельный TELEGRAM_ADMIN_CHAT_ID для админских алертов
🛡️ Product polish
- •Resend: проверяем result.error — раньше rejected письма считались отправленными
- •html.escape на plan/payment_id/email в шаблонах писем
- •html.escape на SKU и маркетплейс в Telegram-сообщениях
- •Audit-лог при просмотре админом списка пользователей (152-ФЗ)