Я пытаюсь сформулировать требования клиента к механизму ценообразования в розничной среде. Мы определили механизм ценообразования как работающий по набору правил ценообразования, который устанавливает новые ценовые точки для приобретенных товаров на основе существующих товаров, уже находящихся в корзине покупок.
Простое ценовое правило может быть таким: ПОЛУЧИТЕ РУБАШКУ со скидкой 40%. Более сложным правилом может быть ПОЛУЧИТЕ БЕСПЛАТНУЮ РУБАШКУ, КОГДА ВЫ ПОКУПАЕТЕ 2 БРЮКИ И ПОТРАТИТЕ МИНИМУМ 30 долларов.
Общая отраслевая практика применения этих правил кажется конечной лучшей ценой для покупателя, но выяснилось, что может потребоваться опция ранжирования, а также опция наложения.
Ранжирование позволит правилу, которое в противном случае проиграло бы, выиграть. Стекинг позволил бы выиграть нескольким правилам.
Я просмотрел многие сообщения здесь о SO, касающиеся механизмов правил, и мне нужна помощь в определении, следует ли мне рассматривать один из этих инструментов как часть моего дизайна, или, если нет, какие шаблоны проектирования и алгоритмы могут быть применимы к дизайну.
Понятно, что это потенциально проблема NP, и количество элементов (фактов), с которыми я буду иметь дело, может превышать 100+ на транзакцию с пересмотром цен каждый раз, когда добавляется новый элемент.