Перейти к содержимому

Что нового

История обновлений платформы

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-ФЗ)
💬

Нашли баг или есть идея?

Напишите нам — каждое обращение читаем лично