Нестандартная ширина
Полотно шире порога требует дополнительного раскроя и фурнитуры.
+15 % при ширине больше 900 мм
Ценообразование
Правила применяются последовательно как множители: ширина → срочность → комплект → фабрика → регион. Каждая наценка возвращается отдельной строкой — видно, из чего сложилась итоговая сумма, и ответ можно сохранить как снимок расчёта.
итог = базовая цена × (1 + ширина) × (1 + срочность) × (1 − комплект) × (1 + фабрика) × регион
Значения читаются из config/ai.php
в секции ai.mcp.pricing.
Полотно шире порога требует дополнительного раскроя и фурнитуры.
+15 % при ширине больше 900 мм
Заказ ставится вне очереди производства и доставки.
+25 % при urgent = true
Скидка за заказ нескольких дверей одной позиции.
−10 % от 3 дверей в комплекте
Правило фабрики берётся из oc_manufacturer.default_price_rule_id,
множитель — из конфига.
+0…15 % в зависимости от производителя
Коэффициент доставки и логистики. Неизвестный регион получает значение default.
msk 1,10 · spb 1,08 · mo 1,05
Правила не суммируются, а перемножаются по порядку. Ответ содержит базовую цену, итог,
общий множитель и snapshot с параметрами расчёта.
Базовая цена полотна — 10 000 ₽. Шаги показаны в том порядке,
в котором их применяет calculate_price.
Ширина 800 мм, без срочности, комплект из одной двери, регион по умолчанию.
total_multiplier = 1,0000
Ширина 1 000 мм, срочный заказ, регион msk.
total_multiplier = 1,5813
Скидка за комплект и региональный коэффициент без наценок за ширину и срочность.
total_multiplier = 0,9720
Массив markups[]
содержит по строке на каждое сработавшее правило: код, процент, сумму и цену до и после.
Агент может показать расшифровку клиенту, не пересчитывая её самостоятельно.
{
"product_id": 101,
"name": "Zadoor Z-100",
"currency": "RUB",
"base_price": 10000.0,
"final_price": 15812.5,
"total_multiplier": 1.5813,
"markups": [
{ "code": "non_standard_width", "percent": 15,
"price_before": 10000.0, "price_after": 11500.0 },
{ "code": "urgent", "percent": 25,
"price_before": 11500.0, "price_after": 14375.0 },
{ "code": "region", "percent": 10,
"price_before": 14375.0, "price_after": 15812.5 }
]
}
Остальные параметры инструмента — в справочнике инструментов.
К инструментам