Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Необхідно реалізувати підтримку query-параметрів у GET /api/procedures/{sellingMethod}/auctionPeriod

Мета зміни

Розширити ендпоінт GET /api/procedures/{sellingMethod}/auctionPeriod, щоб він міг обчислювати min/max дати з урахуванням параметрів конкретного кейсу, переданих у query-string (наприклад: isPerishable, value.amount), а не лише базової validation.min/max.

...

conditions[] наразі не параметризовані і не залежать від введених даних користувача (бо немає механізму передати ці дані у запит)

Нова поведінка (to-be)

Підтримка query параметрів

Ендпоінт має приймати query параметри, які будуть використані при визначенні релевантного condition.case та/або правил validation

...

Якщо sellingMethod не має conditions[] для auctionPeriod.startDate — query параметри не впливають (результат як зараз)

Правила вибору умов

...

Загальна логіка

  1. Система завантажує конфіг для {sellingMethod}

  2. Якщо в startDate є масив conditions[], система має:

    • пройтись по conditions[] у вказаному у відповіді порядку

    • знайти першу умову, у якої case повністю матчиться із параметрами запиту

    • застосувати її правила розрахунку дат

  3. Якщо жоден case не матчиться — використовується дефолтна логіка з startDate.validation (як зараз)

...

  • перевизначати validation.min/max локально для цього кейсу

Тобто дозволити реалізмція має дозволти робити один із варіантів:

  • Варіант А: condition має власні поля diff/from/... і повертає тільки minDate (або min+max, якщо є).

  • Варіант Б: condition містить вкладений validation і повністю замінює дефолтний startDate.validation для обчислення min/max.

...

Boolean

  • isPerishable=true|false (case-insensitive)

  • якщо параметр переданий не як boolean → 400 помилка

Числовий value.amount

  • value.amount — decimal

  • якщо не число → 400 помилка

Правила пріоритетів

  1. Якщо знайдено condition, який матчиться, і він містить власний validation — використати його

  2. Якщо condition матчиться і він задає пряме правило diff/from/time — розрахувати min/max на його основі

  3. Якщо condition не матчиться — використати дефолтний startDate.validation (поточна поведінка)

Якщо матчиться кілька conditions :- використати перший у списку (тобто порядок у конфігу = пріоритет)

Відповідь ендпоінта (без змін)

...

Code Block
{
	"startDate": {
		"minDate": "...",
		"maxDate": "..."
	}
}

Помилки / валідації

Некоректні значення в query

...

параметрі - 400 Bad Request

Приклад причин:

  • isPerishable = abc

  • value.amount = not_a_number

Невідомий sellingMethod

  • як зараз - 422 Unprocessable Content

Непідтримуваний параметр

Lenient: невідомі параметри ігноруються (щоб не ламати майданчики)

...