Всем доброго времени!
В последние несколько лет, я плотно присел на Django. За это время создал несколько систем для производств. Системы работают в мебельном сегменте.
По большому счёту нужно было рассмотреть все этапы производства какого-то предприятия. И сделать так, чтобы заказчик мог в онлайн режиме сделать заказ и тут же знать цену этого заказа, а так же подготовить в один клик бланки-документы. Конечно уведомления. Оплата. Архив заказов и прочее.
Сразу может показаться, что это некий такой интернет магазин. Но это только кажется. По факту расскажу на примере например производства фасадов для кухонь.
- У фасадов около 10 моделей
- Тысячи наименований лакокрасочных материалов
- Несколько десятков патины (тоже цвет)
- Фасады могут изготовлены из 4-х видов материалов (3 вида дерева и МДФ)
- Какие-то из моделей могут быть изготовлены только из одного материала, какие-то из двух, какие-то из любых
- Существуют около 30 видов фасадов в пределах одной модели (глухой, под стекло, под решётку, накладки, метабокс и т.д)
- Кроме фасадов существуют другие изделия (декор, принтуса, корнизы, арки, столбы, колонны)
- У них тоже есть свои доп.свойства
- Какие-то доп.свойства сгруппированы (т.е. из группы можно выбрать только один пункт)
- Отдельным пунктом хочется отметить радиусные фасады (гнутые круглые)
- Под изделия имеется диапазон размеров (клиент указывает сам размеры)
- Какие-то изделия предусматривают нестандарт (выход за диапазон, но цена увеличивается)
- Какие-то доп.свойства влияют только на пункт заказа, какие-то на группу (например арки или подкорнизники), какие-то на каждый пункт заказа
- Какие-то доп.свойства меняют цену, какие-то лишь информационные (вид розетки, вид обработки краёв и прочие)
И всё это только, то, что я на вскидку вспомнил. За всем следит сервис (мой программный продукт сделанный на Django). Лишнего не показывает. Контролирует размеры, цены и все доп.свойства в режиме, что называется "от дурака". Разложены всевозможные варианты и всё воплощено.
В системе существует три цены (Производитель, Дилер и Мебельщик). У последнего в зависимости от объёма дисконт от 5 до 15%
А теперь вопрос:
Сделал я всё это для одного клиента. Всё завязано на его производственные процессы. И таблицы БД и формулы цены. Всё конкретно под это производство.
Как сделал, появился второй клиент. Сделал и для него. У него какие-то процессы похожи, а некоторые нюансы совершенно иные. А это значит, что некоторые таблицы БД и формулы цен у него другие.
Сейчас наклёвывается третий клиент.
И вот возникла мысль.
А можно ли сделать какую-то универсальную платформу, где всевозможные варианты каких-то доп.свойств, характеристик, производственных особенностей, формулировок, ценовых формул и т.п. можно было настраивать что называется "из админки".
Я вдруг вспомнил, что когда-то в далёком прошлом был такой движок на PHP под названием Jumla. И вот в ней можно было настраивать, навешивать, всякие дополняшки, плагины, виджеты и прочие свистелки-перделки.
Вопрос: Как (под капотом) реализованы такие программные решения? Ну когда заранее неизвестны нюансы и доп.свойства?
p.s. надеюсь мой вопрос понятен.
p.s.2. Если есть что почитать или посмотреть, то буду рад подобному в комментариях.