JawsIk
@JawsIk
Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)

Как сделать проект-конструктор с зависимостями на Django с переделкой существующей админки?

Есть задача на проект, управления небольшим производством по изготовлению ритуальных памятников.
Сам памятник это своего рода конструктор.
Разный камень (мрамор, гранит, базальт). Мрамор может быть из разных месторождений. Граниты и базальты это общее название, в которую входит группа разных камней. Кроме этого есть разные поставщики (карелия, урал, китай, индия + по городам), разное качество полировки и постоянно пробуют разный камень.
Разный размеры (и конечно большинство стандартные, но раз в неделю обязательно будет какой-то нестандарт)
Разная резка, горизонт или вертикально.
Основание площадка (тоже разные размеры, разные материалы (комбинируют цвета)
По портретам (граверовка, металлокерамика, керамогранит, цветной и ещё несколько разных непопулярных вариантов).
И когда их всех заказов было мало (50 штук в месяц), всё вполне можно было контролировать на листках. (сделали бланк и его заполняли вручную. Писали, какой камень, размер, какая художка, резка, что на обратке, на надгробке, прямая, косая, в общем всё заполняли вручную). Но фирма развивалась и сейчас около 300 заказов в месяц и от года к году количество растёт.
Поступила задача это всё автоматизировать в электронный вид. Т.к. я делал несколько проектов (интернет магазины) на Django.

И задача не только создать конструктор заказа, но и распределение работы. Штат небольшой (20 человек), но всё-же.

Я не могу понять, как это сделать алгоритмически. Столкнулся с проблемой зависимостей.

Т.е. если выбран камень габбро-диабаз и граверовка портрета, то берётся камень и это просто ретушь, подготовка под граверовку и граверовка портрета и тут же гравровка всех надписей,

но если выбран камень мрамор или дымовский (или ещё куча разных), то кроме ретуши, граверовка портрета будет естественно не на мраморе, а на чёрной плитке и тогда эту плитку нужно вырезать, выполнить на ней отдельную граверовку портрета, а на мраморной стеле выполнить в другом процессе отдельную граверовку надписей и крестика, затем передать этот комплект мастеру, который "врежет" тёмную плитку с портретом в мраморную стелу.

Но если выбран камень чёрный (тот же габбро-диабаз), но портрет цветной, то врезка уже будет делаться в чёрный камень, а на стеле нужно сделать только надписи и крестик (ну или цветы там, что согласуем).

И всё это переходит на следующий процесс и в самом конце это всё собирается на установку (не один, а допустим 5-10 комплектов в день) и это отдельная распределение работы и везётся уже на кладбище и устанавливается.

И вот таких зависимостей у каждого свои. У граверовщика-художника свои, у резчика свои, у полировщика свои, у площадочника свои, у установщиков свои, а ещё есть облагораживание территории, сварка и сборка (оградок, лавочек, столиков), фрезеровка и точёнка и т.д.

Вопрос: Как делать зависимости?

Какая задача поступила от руководства.
- "Я хочу на первом шаге выбрать камень и размер и чтобы оно понимало, что если я выбрал это, то на втором шаге у меня был вариант только такого и такого, а если это то такого. В зависимости от предыдущих шагов система должна убирать взаимоисключающие варианты самостоятельно и так по всем 15 пунктам (шагам). Чтобы я мог заполнить каждый заказ за 1 минуту, внеся все необходимые данные и на последнем шаге система должна сама понимать какую работу нужно выполнить и распределить по работникам кому что делать, естественно с привязкой к заказу. При этом должна соблюдаться последовательность, чтобы пока не сделана и не утверждена ретушь, чтобы не выполнялась граверовка, пока не выполнена граверовка, не выполнялась врезка или резка формы и т.д. впплоть до установке и окончательного получения денег"
- "Ещё хочу все эти связки формировать самостоятельно, чтобы был простой интерфейс без программирования, чтобы я мог выбрать, если то, то я указываю это это и это, если этот вариант, то только это, если этот вариант, то это и вот это, чтобы я сам мог настраивать. И чтобы я смог сам менять последовательность выполнения через админку, чтобы пробовать по разному оптимизировать время выполнения цепочек-процессов"
- "И я хочу чтобы у каждого в смартфоне была возможность поставить галочку, чтобы такой-то этап выполнен и далее система обновляла список работы у следующего специалиста в цепочке. Так нее нужно бегать за всеми и я смогу отслеживать на каком этапе какой заказ"

В общем проект такого плана. Как такое вообще делается?
Я делал интернет-магазины и тоже делал как-то своего рода конструктор для мебельных фасадов, но там всё было жутко неудобно и цепочки и зависимости были жёстко запрограмлены в бекенде. И бывало просят поменять местами последовательность шагов, а т.к. там зависимости и это подтягивало кучу кода и могло занимать две-три недели. Иногда было "мы попробовали, в общем верни как было, только вот чуть подправь" и ещё недели легаси (моего же) кода.

Но ведь я постоянно сталкиваюсь со всякими конструкторами. Взять то же заполнение объявлений на авито. Если это диваны, то там одни зависимости и одна последовательность шаго, если это автомобили, то там всё по другому. Как такие цепочки делаются алгоритмически, чтобы этим можно было управлять через админку, а не код?

Вопрос второй: Есть ведь админка. Там уже есть инстументы по внесению данных, авторизации, распределении прав и другие админские штуки. Но всё там очень неудобно и визуал на уровне 90-х годов. Можно ли просто переделать админку под нужды описанного проекта, расширив функционал, добавив аякс, работу с изображениями, добавлением комментариев в том числе голосовых (потому что ситуации разные бывают, где-то стукнуто, где-то плохо отполировно, где-то что-то не довезли и не хватает материала или инструмента (расходных его частей) где-то с датами напутано и нужно отправлять на переполировку, в общем рабочие моменты). Можно ли просто переделать текущую админку, или нужно изобретать всё по новому с нуля? Я просто всегда делал свои админки, но для меня это ещё тот гемор и я задался вопросом, но ведь Джангисты уже сделали админку, можно ли подправить, вместо изобретения своего пусть и многофункционального велосипеда.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы