FAQ и полное руководство по работе Savdouz

Практическое руководство по логике платформы: аукционы, ограничения, депозиты, намерения/сделки, бонусы, модерация, споры и Playwright-проверки.

Важно: этот материал отражает текущую логику системы. Часть параметров (лимиты, флаги оплаты, AI-аудит и программы лояльности) может меняться через админ-настройки.

Savdouz — P2P marketplace с аукционной логикой и классифайдами.

  • Типы лотов: `auction`, `buy_now`, `classified`.
  • Роли: покупатель, продавец, модератор, администратор.
  • Ключевая идея: все ключевые действия (ставки, переходы статусов, бонусные операции) защищены транзакционной логикой и журналированием.
  • Уведомления: веб + Telegram (если аккаунт привязан).

Основной жизненный цикл: `draft → pending → active → reserved/cooling → ended/sold/cancelled/rejected`.

  • Перед публикацией: лот проходит модерацию (кроме отдельных авто-одобрений).
  • Аукцион: должен иметь `ends_at`, минимальная длительность 15 минут, максимальная — 30 дней.
  • Classified: отдельный публичный формат с автосроком и напоминаниями об окончании.
  • Нет товара: система умеет переводить лот в паузу и требовать повторную публикацию.

Ставка проходит многоступенчатую проверку перед записью в базу.

  • Лот должен быть активным аукционом и не завершённым по времени.
  • Продавец не может ставить на свой лот.
  • Пользователь с блокировкой ставок не может делать новые ставки.
  • Ставка должна быть не ниже `current_price + bid_step`.
  • Для UZS в форме создания/редактирования минимально допустимый `bid_step` — 100.
  • Если шаг не задан, движок использует системный fallback `MIN_BID_STEP` (по умолчанию 1000 UZS).
  • Если ставка достигает/превышает Buy Now при активном Buy Now, пользователь получает подсказку купить мгновенно.

Anti-snipe (значения по умолчанию):

  • Если ставка пришла в последние 5 минут, аукцион продлевается на 3 минуты.
  • Максимум 10 продлений на один аукцион.

Auto-bid:

  • Если у другого участника есть `max_auto_bid`, система может перебить ставку автоматически на 1 шаг.
  • Проигравшему лидеру отправляется `outbid` уведомление.

Платформа поддерживает несколько checkout-режимов, переключаемых фичефлагами.

  • Intent mode: победитель подтверждает намерение, далее сделка выполняется офлайн.
  • Escrow mode: средства замораживаются до подтверждения получения.
  • Simulated payment: режим тестовых платежей для staff.
  • Verified pay: флаг для реальных интеграций (по готовности).

Депозит за участие в торгах:

  • Для ряда ставок требуется депозит, который удерживается в `BidDeposit`.
  • Исходы депозита: `returned`, `applied`, `forfeited`.
  • Система делает возврат проигравшим автоматически при корректном закрытии аукциона.

Таймеры оплаты победителя: по умолчанию 2 часа для цифровых/самовывоза и 24 часа для лотов с доставкой.

  • Если ставок нет, лот завершается без победителя.
  • Если резервная цена не достигнута, продажа не происходит.
  • При наличии победителя создаётся запись победителя и запускается пост-аукционный поток.
  • Статус лота переходит в `cooling` до подтверждения наличия продавцом.

Intent/Commit flow (по умолчанию):

  • Победитель получает `PurchaseIntent` со сроком подтверждения (по умолчанию 60 минут).
  • После `commit` создаётся `Deal` со сроком завершения (по умолчанию 72 часа).
  • Если intent истёк, может выдаваться страйк и запускаться second-chance для следующего участника.
  • Second-chance: отдельный дедлайн (по умолчанию 120 минут), максимум 3 попытки.

Офлайн-оплата: покупатель отмечает оплату, продавец подтверждает получение, система закрывает сделку и обновляет статистику.

Перед публикацией:

  • Заполните ключевые поля (название, описание, состояние, город, цену/условия).
  • Учитывайте требования к качеству карточки: полное описание и релевантные фото.
  • Проверьте доставку/самовывоз и корректность финальной цены.

Ограничения редактирования (защита покупателей):

  • После ставок блокируются критичные поля: цена старта, шаг, категория, название, описание, состояние и изображения.
  • Лоты `reserved` и `sold` считаются заблокированными для обычного редактирования.
  • Ведётся `ListingEditAudit` для всех попыток изменения.

Отмена/удаление: активный лот со ставками отменить или удалить нельзя (исключения только через модератора/админа с аудитом).

Лимиты ставок по trust tier (дефолт):

  • `new`: до 5,000,000 UZS.
  • `verified`: до 50,000,000 UZS.
  • `trusted`: без верхнего лимита.

Депозиты по trust tier (дефолт):

  • `new`: порог 500,000; 5%; min 20,000; max 500,000 UZS.
  • `verified`: порог 5,000,000; 2%; min 20,000; max 200,000 UZS.
  • `trusted`: порог 50,000,000; 1%; min 50,000; max 500,000 UZS.

Антиабьюз:

  • Новый аккаунт: максимум 3 активные лидирующие ставки и 5 уникальных аукционов в день.
  • Страйки имеют вес и срок распада (по умолчанию 30 дней).
  • После 2 страйков может требоваться обязательный депозит.
  • После 3 страйков возможна блокировка ставок на 7 дней.
  • После 5 страйков возможна блокировка ставок на 30 дней.

Невыкуп: эскалация санкций (24ч → 168ч → 720ч), после 5 невыкупов возможна постоянная блокировка.

Кошелёк баллов: `available`, `pending`, lifetime-метрики и антифрод-флаги.

  • По умолчанию: дневной лимит начисления 100,000 и дневной лимит списания 500,000 баллов.
  • Срок жизни баллов по умолчанию — 90 дней (если не указан иной в кампании).

Примеры базовых наград (дефолт):

  • Ставка: +5.
  • Победа в аукционе: +30.
  • Daily login: +3.
  • Streak 3/7/30: +15/+40/+150.
  • Профиль 100%: +75.

Bonus shop:

  • Фикс-покупки и shop-аукционы за баллы.
  • Можно покупать эффекты для лотов, бустеры, купоны и физические призы.
  • Для некоторых товаров действуют `min_user_level`, `seller_only` и `max_per_user`.

Переводы баллов: минимум 1000, максимум 5000 в месяц и не более 3 переводов/месяц, с модерацией запроса админом.

Что проверяется:

  • Запрещённые категории/ключевые слова.
  • Подозрительные паттерны: обход эскроу, контакты в описании, прямые переводы и т.д.
  • Структурные сигналы: слишком короткое описание, отсутствие фото, очень низкая цена.

Статусы очереди: `pending`, `in_review`, `approved`, `rejected`, `escalated`.

AI-аудит:

  • Может быть включен для новых лотов.
  • Статусы AI: `pass`, `warn`, `fail` + score/summary/payload.
  • При сбое внешнего AI используется эвристический fallback.

Жалобы пользователей: создают `Report` и элемент в очереди модерации, затем возможны действия `approve/reject/remove/warn/block/escalate`.

  • Пополнение: минимальная сумма 10,000 UZS.
  • В dev-конфигурации: прямые интеграции Payme/Click в интерфейсе депозита ограничены для staff-сценариев.
  • Баланс: учитывает `available` и `held`; есть верхний порог (по умолчанию 100,000,000 UZS).
  • Вывод: создаётся заявка на вывод после проверки корректности карты и суммы.

Если включён escrow:

  • Статусы эскроу: `pending`, `funded`, `released`, `refunded`, `partial`, `disputed`.
  • Подтверждение доставки сохраняется даже если автовыплата временно блокируется (например, на ручную проверку).

Если используется intent-flow: финальное закрытие сделки идёт через подтверждение сторон и завершение deal-процесса.

Для e2e-тестов используйте Playwright-сценарии из `backend/tests/e2e/`.

Быстрый запуск:

cd backend
python manage.py runserver
pytest tests/e2e/
pytest tests/e2e/ --headed

Если сервер не на localhost:8000:

PLAYWRIGHT_BASE_URL=http://127.0.0.1:8000 pytest tests/e2e/

Что покрывают e2e-тесты:

  • Навигация и загрузка ключевых страниц.
  • Auth-флоу (логин/регистрация/доступ к приватным разделам).
  • Сценарии каталога и карточек лотов.
  • Доступ к rewards/loyalty/moderation страницам.
  • Отдельная проверка FAQ/manual страницы.

Рекомендуется запускать smoke-набор перед релизом и после изменений в шаблонах/роутинге.

  • Не удаётся сделать ставку: проверьте блокировку, лимит trust tier, минимальную сумму и наличие депозита.
  • Не удаётся редактировать лот: возможно, лот уже имеет ставки или находится в `reserved/sold`.
  • Баллы не начислились: действие могло попасть под cooldown/лимит или бонусная программа отключена в настройках.
  • Не видно модерацию: раздел доступен только staff/moderator/admin.
Не нашли ответ? Напишите в поддержку: support@savdouz.uz или в Telegram @savdo123bot.
Обновлено: 11 февраля 2026. Для технической точности использованы текущие настройки и доменные правила платформы.