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