[MiniShop3] - Новости, Планы

Всем привет. Это моя традиционная заметка-отчет о проделанной за месяц работе.
Впервые за долгое время мы не выпустили ежемесячный апдейт miniShop2.
Это связано с тем, что все доступное время я посвятил разработке MiniShop3.
Сегодня постараюсь вам рассказать, как идут дела, что уже сделано, чего и когда ждать.




С момента написания прошлой заметки, посвященной MS3 прошел почти год. Дело было в августе 2022 года.

Честно говоря, работа над компонентом никак не складывалась. Объем задач изначально был огромным, а оплата труда по сути отсутствовала.
Но ежемесячные релизы miniShop2, активность в телеграм-чате, подключившиеся к общему делу ребята смогли переломить ситуацию и наш счет начал пополняться вашими донатами. Как оказалось мы смогли набрать достаточную сумму, чтобы приступить к активной работе.

Репозиторий



На старте работ, еще в 2022 году я не был сторонником открытого исходного кода. Хотелось сначала сделать какой-никакой готовый релиз, и затем показывать его.
Но ребята убедили меня открыть исходники и показывать процесс работы сразу, на лету.

Знакомьтесь, кто еще не видел — перед вами набросок MiniShop3
Все коммиты, конечно же, можно видеть в режиме реального времени.
Каждый желающий может скачать и развернуть у себя компонент, с целью протестировать его.
Искать правки и предлагать улучшения пока не рекомендую, до момента Альфа-релиза.

Админка



На первый взгляд в админке мало что существенно изменилось. Все тот же extJS, немного причесанный и стилизованный. Что может быть проще, чем просто перенести и запустить уже готовые страницы из miniShop2.
Да — бэкенд нужно будет доработать, но сами технологии админки то остались прежними. По-быстрому перенесу виджеты и займусь архитектурой.

Так я думал, приступая к работе. Но не тут то было. Другая верстка, другое расположение панелей потребовали очень плотной работы со страницами MiniShop3. Ни один из виджетов MS2 не завелся с первого раза, просто так. Но дело сделано. На сегодня все, что мы привыкли видеть в админке ms2, полностью перенесено, адаптировано и настроено. Вся админка полностью работает и готова к тестированию, обсуждению.

Опции



Кто не знает, в miniShop2 опции у продуктов реализованы достаточно странным образом. При каждом сохранении ВСЕ значения опций товара первым делом удаляются из таблицы, затем на их место записываются обновленные (или старые) значения. Такая механика работы не позволяет их индексировать, корректно перезаписывать через API, расширять таблицу и т.д.

Полностью переписал функционирование опций (имею в виду таблицу msProductOption)
  • Теперь опции имеют primaryKey, что дает возможность работать с ними как с объектами
  • Значения опций индексируются, что конечно же ускоряет выборку данных и последующую работу всяческих фильтров, сортировок и поисков.
  • Теперь значения опций у товаров обновляются без обязательного удаления данных и последующей записи начисто.

Множество мелких изменений


Выше я описал те моменты, которые заняли у меня больше всего времени и внимания. Разумеется уже реализованных изменений намного больше. Новшества есть в полях таблиц, структуре каталогов, классов, и в интерфейсе админки.
Из интересного — добавил возможность подключать файловые шаблоны писем к статусам заказов.

Что дальше?



Минимальные требования
Планирую сделать минимальной версией PHP8.0. Даже она является старой. В Laravel уже 8.2 минимальная. Нет смысла дальше поддерживать PHP7.4. Компонент просто не будет устанавливаться на версию PHP ниже 8.0. Также проработаю вопрос с СУБД mysql 8.

Портирование ежемесячных улучшений из miniShop2
Мы каждый месяц что-то добавляем, улучшаем в нашем основном компоненте. Конечно же требуется синхронизировать все эти обновления с MiniShop3, чтобы не потерять улучшения и исправления багов, при переезде. Казалось бы очевидный момент — но он тоже требует внимания, времени, сил.
Часто проблема портирования каких-то изменений, может оказаться более объемной, чем выглядит на первый взгляд. К примеру, использование менеджера очередей Scheduler требует сначала адаптировать сам менеджер под MODX3.

Фронтенд

На первый взгляд кажется что дел там не особо много. Развернуть шаблончики с чанками, да сниппеты адаптировать под MODX3. Но на самом деле работы сильно больше.
Хочется реализовать удобный обмен данными с бэкендом, полностью перейти на vanila JS.
Обеспечить нормальный фундамент для работы VUE JS и других фронтенд движков.

Заказы

На данный момент есть идея, согласованная с коллегами отказаться от использования сессий вообще.
Основной реализацией станет хранение корзины и заказов сразу в базе данных.
Архитектура будет изменена на более удобную с этой точки зрения.

Сессии вызывают только проблемы.
  • Большие проблемы реализовать удаленные запросы к серверу, который работает на основе сессий. Каждый новый запрос поднимает свою сессию и попробуй достучаться до той корзины, которую ты пополнял на предыдущем запросе
  • Большие проблемы при необходимости сразу быстро добавить в заказ набор данных. Например, при автозаполнении формы. Сессии так быстро не работают, они блокируют запросы, записывая только последний присланный. Проблема зафиксирована и описана.
Из минусов данной реализации скорость чтения-записи будет несколько ниже, но не критично ниже.

В данном случае все обсуждаемо — вы конечно же можете привести свои доводы в пользу сессий.

Адреса покупателя
В компоненте будет функционал сохранения и быстрого выбора адресов покупателя.

Прочее
У нас с коллегами много хороших, правильных, обоснованных идей по улучшению. Они все давно напрашиваются, по каждому есть множество обращений, вопросов, предложений. В частности реализовать конструктор полей, остатки, модификации, избранное из коробки.

Все это можно реализовать, все технически выполнимо, но требует внимания, времени, сил.
Все это станет возможным при достаточной поддержке сообщества.

Слова благодарности



На фоне хороших новостей прошу вас поддержать работу финансово. Каждый из разработчиков так или иначе использует в своей работе miniShop2 и воспользуется MiniShop3 по мере готовности. Поддержав нас всего лишь в размере 1% от заработка, полученного при помощи наших бесплатных компонентов — вы спонсируете собственную работу в будущем. Рассмотрим это дело как инвестиции?

Каждому спонсору низкий поклон. Только благодаря вам — мы не даем умереть MODX.
Все возможные варианты спонсорства указаны на специальной странице сообщества

Для наиболее крупных спонсоров доступна опция приоритетных пожеланий. Возможно вам требуется конкретный функционал, и его можно включить в ядро или выпустить бесплатным дополнением к MS2-MS3
Николай Савин
31 июля 2023, 20:30
modx.pro
1 330
+27
Поблагодарить автора Отправить деньги

Комментарии: 20

Павел Бигель
31 июля 2023, 21:12
0
А почему отдельный репозиторий а не просто отдельный бранч в основном репозитории?
    Николай Савин
    31 июля 2023, 21:13
    0
    Потому что это отдельный программный продукт. Даже название другое. Так проще вести версионирование.
    Дима Касаткин
    01 августа 2023, 01:52
    +1
    Отличные! нет, ОТЛИЧНЫЕ новости!

    Спасибо всем кто участвует, с нетерпением ждем релиза, для новых клиентов с магазинами, затягиваем этапы прототипов и подготовки данных, рисования макетов… короче делаем все, чтобы новые проекты стартовать уже на MODX3 и Minishop3!

    А ещё, с релизом будет весомый повод напомнить старым проектам о модернизации, ведь это же прекрасно, улучшать свои достижения, сколько уже можно костыли вставлять…

    Донатим срочно! И потираем ладошки потестить альфу!
      Николай Савин
      01 августа 2023, 09:03
      0
      Ну ты так сильно то не радуйся. Проекты реальные делать можно на стабильной версии. А мы тут только про концепт говорим, про альфу.
      Альфа она для того и называется ранней версией, что может получиться неудачной, ее выбросишь и делаешь заново, понимая, где ошибки и проблемы.
        Дима Касаткин
        01 августа 2023, 21:10
        0
        Всё понимаю, но ничего из этого не признаю) Так и знайте, что альфа пойдет в продакшен)
        А как ещё внедрять edge-технологии, если не огнем и мечом?))
      Александр Туниеков
      01 августа 2023, 04:57
      0
      Кто не знает, в miniShop2 опции у продуктов реализованы достаточно странным образом. При каждом сохранении ВСЕ значения опций товара первым делом удаляются из таблицы, затем на их место записываются обновленные (или старые) значения. Такая механика работы не позволяет их индексировать, корректно перезаписывать через API, расширять таблицу и т.д.
      Тут проблема. Если опций окажется больше 10 000 000, то они работать перестанут. То есть новые не создашь когда инкрементный ключ закончиться. На это и было расчитанно. Но 10 000 000 опций редкость и с объектами да удобнее работать :-)
        Алексей Смирнов
        01 августа 2023, 10:12
        +2
        Инкремент ограничен лишь, типом переменной, если установить BIGINT, то хватит на миллиарды записей для опций. Не вводите людей в заблуждение.
          Александр Туниеков
          01 августа 2023, 11:52
          0
          А кто bigint то ставит? Для обычных магазинов int 10 как обычно хватит. А на несколько миллионов товаров с учетом что при импорте обычно опции будут удаляться и заного забиваться то int 10 может не хватить. И магаз внезапно новые опции не принимает. Но за подсказку спасибо. Как gtsShop выберется в продажи bigInt на праметры расчета поставлю. А то только на тестах на 2 заказах инкремент параметров уже за 2000 перевалил.
          Не буду говорить что знаю зачем @Василий Наумкин primary key на опции не поставил. Инкремент мне кажется правдоподобной догадкой.
            Алексей Смирнов
            01 августа 2023, 12:00
            0
            Если у магаза планируется 2 и более мл. товаров и человек выбрал стандартную MODX + minishop, то конечно тут больше вопросов к человеку, а не к коду. Еще больше вопросов возникнет если человек в импорте удаляет все опции и заново их записывает и еще больше вопросов станет, если все товары удаляются (включая опции) и заново грузятся… В крайности предлагаю не впадать ибо это бессмысленно.
            Но замечание ваше в уме все равно нужно держать, оно не лишено смысла.
              Александр Туниеков
              01 августа 2023, 12:04
              0
              Ну не докапывайтесь. Просто я всегда считал, что опции в минишопе без первичного ключа из-за инкремента. Вот сообщил свое мнение. Точно сказать может только @Василий Наумкин
        Futuris
        01 августа 2023, 08:02
        +1
        Действительно отличные новости! Спасибо героической команде разработчиков! Только жалко, что у вас нет карты СБ для донатов — для таких как я это было бы гораздо удобнее. Понимаю, что не все в РФ находятся, но у вас же команда — между собой разобрались бы.
          Николай Савин
          01 августа 2023, 09:04
          0
          @Иван Бочкарев сходи в СБ за картой. А в чем проблема перевода на карту Тинькоф?
            Futuris
            01 августа 2023, 09:09
            +1
            Технически — нет проблем. Но комиссия. Платил в чате, с платежа 200 руб. — взяли 50 руб. Лучше бы это вам пошло! И Youmoney — тоже самое. Ну, это не претензия, а если возможно, конечно.
              Николай Савин
              01 августа 2023, 09:11
              0
              Да лишние 50 рублей нас безусловно выручили бы.
                Futuris
                01 августа 2023, 09:12
                +1
                это хорошая шутка))
                Алексей Соин
                01 августа 2023, 13:06
                0
                платежи -> сверху справа значок сбп -> вводишь номер телефона, выбираешь банк тинька, в месяц 100к без комиссии можно переводить
                  Futuris
                  01 августа 2023, 13:23
                  0
                  А номер телефона где мне взять?)
                    Алексей Соин
                    01 августа 2023, 16:09
                    0
                    а, там вон как работает, через веб морду пополнение))) тогда да, никак, если б номер карты был или номер телефона, то можно было через сбп) сорян, не заметил такой нюансик))
                      Futuris
                      01 августа 2023, 17:19
                      0
                      Да это не препятствие, конечно, парням задонатить)) Но за помощь в чате, например, где платежи небольшие — комиссия в процентном отношении существенная получается.
            Сергей Карпович
            01 августа 2023, 09:30
            +1
            Спасибо, ребята за ваш труд
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              20