From a91bd7fac6b63d3c501b71310f64a59494eb5e74 Mon Sep 17 00:00:00 2001 From: Ivan Bochkarev Date: Mon, 21 Sep 2026 14:54:15 +0600 Subject: [PATCH 1/5] =?UTF-8?q?docs(readme):=20=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B5=D0=B5?= =?UTF-8?q?=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=20=D0=B8=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Структура в readme не совпадала с beta: не было входов API, маршрутов, тестов и Node 24 в CI. --- readme.md | 125 +++++++++++++++++++++++++++++------------------------- 1 file changed, 67 insertions(+), 58 deletions(-) diff --git a/readme.md b/readme.md index 915a33f5..6e76d804 100644 --- a/readme.md +++ b/readme.md @@ -5,7 +5,7 @@

MiniShop3

- Современный компонент интернет-магазина для MODX 3 + Интернет-магазин для MODX 3

@@ -24,15 +24,15 @@ --- -## ✨ Особенности +## Особенности -- 🚀 **Для MODX 3** — PHP 8.2+, namespaces, PSR-4, миграции Phinx -- 🔌 **REST API** — полноценный API для headless-интеграций -- 🎨 **Vue 3 + PrimeVue** — современный интерфейс админки -- ⚡ **Без jQuery** — нативный JavaScript на фронтенде -- 🔄 **Совместимость с miniShop2** — те же сниппеты, чанки и параметры +- Для MODX 3: PHP 8.2+, namespaces, PSR-4, миграции Phinx +- REST API для headless-интеграций +- Админка на Vue 3 и PrimeVue +- Фронтенд без jQuery, на нативном JavaScript +- Сниппеты, чанки и параметры совместимы с miniShop2 -## 📋 Требования +## Требования | Компонент | Версия | |-----------|--------| @@ -44,21 +44,21 @@ | Пакет | Обязательный | Описание | |-------|--------------|----------| -| [pdoTools 3.x](https://docs.modx.pro/components/pdotools/) | ✅ | Сниппеты и шаблонизатор Fenom | -| [VueTools](https://docs.modx.pro/components/vuetools/) | ✅ | Vue 3 и PrimeVue для админки | -| [Scheduler](https://docs.modx.pro/components/scheduler/) | ❌ | Фоновые задачи (импорт, уведомления) | +| [pdoTools 3.x](https://docs.modx.pro/components/pdotools/) | да | Сниппеты и шаблонизатор Fenom | +| [VueTools](https://docs.modx.pro/components/vuetools/) | да | Vue 3 и PrimeVue для админки | +| [Scheduler](https://docs.modx.pro/components/scheduler/) | нет | Фоновые задачи (импорт, уведомления) | -## 🚀 Установка +## Установка -### Через менеджер пакетов (рекомендуется) +### Через менеджер пакетов ``` Extras → Installer → Download Extras → MiniShop3 → Install ``` -> ⚠️ Убедитесь, что **VueTools** установлен до MiniShop3 +VueTools нужно поставить до MiniShop3. -### Из исходников (для разработчиков) +### Из исходников ```bash # Клонирование @@ -68,21 +68,21 @@ cd MiniShop3 # PHP зависимости cd core/components/minishop3 && composer install && cd ../../.. -# Vue виджеты (Node.js 18+) +# Vue-админка (Node.js 18+ локально, в GitHub Actions 24) cd vueManager && npm install && npm run build && cd .. # Сборка пакета php _build/build.php ``` -## 📖 Документация +## Документация -Полная документация доступна на **[docs.modx.pro/components/minishop3](https://docs.modx.pro/components/minishop3/)** +Справочник: [docs.modx.pro/components/minishop3](https://docs.modx.pro/components/minishop3/) -- [Быстрый старт](https://docs.modx.pro/components/minishop3/quick-start) — первоначальная настройка -- [Сниппеты](https://docs.modx.pro/components/minishop3/snippets/) — msProducts, msCart, msOrder и др. -- [REST API](https://docs.modx.pro/components/minishop3/development/api) — интеграция с внешними системами -- [События](https://docs.modx.pro/components/minishop3/development/events) — расширение функциональности +- [Быстрый старт](https://docs.modx.pro/components/minishop3/quick-start): первоначальная настройка +- [Сниппеты](https://docs.modx.pro/components/minishop3/snippets/): msProducts, msCart, msOrder и др. +- [REST API](https://docs.modx.pro/components/minishop3/development/api): интеграция с внешними системами +- [События](https://docs.modx.pro/components/minishop3/development/events): расширение функциональности ### Каталог товаров (Web API) @@ -95,36 +95,42 @@ GET /assets/components/minishop3/api.php?route=/api/v1/product/list Параметры: `parent` / `category` (только primary parent, без `msCategoryMember`), `limit` (max 100), `offset` / `page`, `sort` + `dir`, `query`, `context`, `include_options`, `include_content`. -Ответ `list`: `{ items, total, limit, offset }`. Цена и вес — через `msOnGetProductPrice` / `msOnGetProductWeight`; поля ответа allowlist’ятся после `msOnGetProductFields`. +Ответ `list`: `{ items, total, limit, offset }`. Цена и вес считаются в `msOnGetProductPrice` / `msOnGetProductWeight`. Поля ответа проходят allowlist после `msOnGetProductFields`. -Полный справочник REST — на [docs.modx.pro](https://docs.modx.pro/components/minishop3/development/api) (раздел каталога стоит синхронизировать с этим релизом). +Полный справочник REST: [docs.modx.pro](https://docs.modx.pro/components/minishop3/development/api). Раздел каталога на сайте документации стоит синхронизировать с этим релизом. ### Подтверждение email (Web API) -Ссылка в письме ведёт на `api.php` с путём верификации и параметром `html=1` — в ответ сервер отдаёт **HTTP-редирект** (302) на сайт с признаком `ms3_email_verified=1` либо `ms3_email_verified=0`. URL после успешной проверки задаётся системной настройкой `ms3_email_verification_success_url` (если пусто — `site_url`). +Ссылка в письме ведёт на `api.php` с путём верификации и параметром `html=1`. Сервер отвечает HTTP-редиректом 302 на сайт с `ms3_email_verified=1` или `ms3_email_verified=0`. URL после успешной проверки берётся из `ms3_email_verification_success_url`. Если настройка пустая, используется `site_url`. -Если открыть тот же URL **без** `html=1` или с `format=json`, ответ будет **JSON** (удобно для API-клиентов; в браузере увидите «сырое» тело). +Тот же URL без `html=1` или с `format=json` возвращает JSON. Так удобнее API-клиентам. В браузере будет сырое тело ответа. -## 🏗️ Структура проекта +## Структура проекта ``` MiniShop3/ -├── _build/ # Сборка транспортного пакета +├── _build/ # Сборка транспортного пакета +├── phpstan.neon # PHPStan level 5 + baseline ├── assets/components/minishop3/ -│ ├── js/web/ # Frontend JavaScript -│ ├── js/mgr/ # Admin ExtJS + Vue -│ └── css/ # Стили +│ ├── api.php # Вход публичного Web API +│ ├── connector.php # Вход менеджерского API +│ ├── js/web/ # Frontend JavaScript +│ ├── js/mgr/ # ExtJS и собранный Vue (vue-dist) +│ └── css/ ├── core/components/minishop3/ -│ ├── elements/ # Сниппеты, чанки, плагины -│ ├── src/ # PHP классы (PSR-4) -│ ├── migrations/ # Phinx миграции -│ └── lexicon/ # Переводы (ru, en) -└── vueManager/ # Vue 3 исходники админки +│ ├── elements/ # Сниппеты, чанки, плагины +│ ├── config/routes/ # web.php и manager.php (FastRoute) +│ ├── src/ # PHP-классы (PSR-4) +│ ├── migrations/ # Phinx +│ ├── lexicon/ # Переводы (ru, en) +│ ├── processors/ # MODX processors +│ └── tests/ # Smoke и PHPUnit +└── vueManager/ # Исходники Vue 3 админки (Vite) ``` -### Слои под `src/Controllers/` (HTTP vs domain facade) +### Слои под `src/Controllers/` -Оба живут в namespace `MiniShop3\Controllers\…`, но это **разные роли**. Не кладите HTTP-парсинг в domain facade и не тащите бизнес-логику корзины/заказа в API-класс. +Каталог `MiniShop3\Controllers\…` совмещает HTTP и domain facade. Это разные роли. HTTP-разбор не кладите в facade, а логику корзины и заказа не кладите в API-класс. | Слой | Путь | Роль | |------|------|------| @@ -133,7 +139,7 @@ MiniShop3/ | Provider plugins | `Controllers/Delivery`, `Payment` | Abstract base для методов доставки/оплаты (не DI-фасады `ms3_*`) | | Services | `Services/*` | Каноническая бизнес-логика | -Ключевые DI-ключи фасадов (см. также `ServiceRegistry`): +DI-ключи фасадов (см. также `ServiceRegistry`): | DI key | Класс | Роль | |--------|-------|------| @@ -141,14 +147,12 @@ MiniShop3/ | `ms3_order` | `MiniShop3\Controllers\Order\Order` | Domain facade заказа (не HTTP) | | `ms3_customer` | `MiniShop3\Controllers\Customer\Customer` | Domain facade покупателя (не HTTP) | -Переименование namespace (`Domain\` / `Facades\`) — отдельный major с bc-aliases; этот репозиторий пока фиксирует границу документацией и PHPDoc. +Переименование namespace (`Domain\` / `Facades\`) остаётся на отдельный major с bc-aliases. Сейчас граница зафиксирована документацией и PHPDoc. -## 🤝 Участие в разработке - -Мы приветствуем вклад в развитие проекта! +## Участие в разработке 1. Форкните репозиторий -2. Создайте ветку для фичи (`git checkout -b feature/amazing-feature`) +2. Создайте ветку (`git checkout -b feature/amazing-feature`) 3. Закоммитьте изменения (`git commit -m 'Add amazing feature'`) 4. Запушьте ветку (`git push origin feature/amazing-feature`) 5. Откройте Pull Request @@ -164,26 +168,31 @@ MiniShop3/ | `composer ci:php` | `php -l` + smoke + `composer test` (как job `PHP lint + smoke`) | | `composer test:modx` | Живое ядро MODX 3.1+ / 3.2 через [modxkit/testbench](https://github.com/modxkit/testbench) | -`composer test` и `ci:php` **не** поднимают ядро. Для `test:modx` нужны MySQL и переменные `MODX_TESTBENCH_DB_HOST` / `USER` / `PASS`. Подробности: [`core/components/minishop3/tests/Modx/README.md`](core/components/minishop3/tests/Modx/README.md). +`composer test` и `ci:php` не поднимают ядро. Для `test:modx` нужны MySQL и переменные `MODX_TESTBENCH_DB_HOST`, `MODX_TESTBENCH_DB_USER`, `MODX_TESTBENCH_DB_PASS`. Подробности: [`core/components/minishop3/tests/Modx/README.md`](core/components/minishop3/tests/Modx/README.md). -CI гоняет live-сьют на MODX 3.1.2-pl, 3.2.3-pl и 3.2.4-pl. Линейка 3.0.x в этом сьюте не проверяется (ядро не поднимается в API-режиме). +CI гоняет live-сьют на MODX 3.1.2-pl, 3.2.3-pl и 3.2.4-pl. Линейка 3.0.x в этом сьюте не проверяется: ядро не поднимается в API-режиме. -## 📝 Changelog +### Тесты Vue Manager -Смотрите [CHANGELOG.md](CHANGELOG.md) для истории изменений. +Из `vueManager` (Node.js 18+ локально, в CI 24): -## 📄 Лицензия +```bash +npm ci +npm run lint:ci +npm test +npm run build +``` -Распространяется под лицензией MIT. Смотрите [LICENSE](LICENSE) для подробностей. +## Changelog -## 💬 Поддержка +История изменений: [CHANGELOG.md](CHANGELOG.md). -- 🐛 [GitHub Issues](https://github.com/modx-pro/MiniShop3/issues) — баги и предложения -- 📚 [Документация](https://docs.modx.pro/components/minishop3/) — руководства и справочники -- 💬 [Telegram](https://t.me/modx_pro) — сообщество MODX +## Лицензия ---- +MIT. Текст: [LICENSE](LICENSE). -

- Сделано с ❤️ для сообщества MODX -

+## Поддержка + +- [GitHub Issues](https://github.com/modx-pro/MiniShop3/issues): баги и предложения +- [Документация](https://docs.modx.pro/components/minishop3/): руководства и справочники +- [Telegram](https://t.me/modx_pro): сообщество MODX From f21f36eb2137b04d6072f1eec3bea4afed18335f Mon Sep 17 00:00:00 2001 From: Ivan Bochkarev Date: Mon, 21 Sep 2026 15:02:55 +0600 Subject: [PATCH 2/5] =?UTF-8?q?docs(readme):=20=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=8C=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D1=8C?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=86=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/readme.md b/readme.md index 6e76d804..a5d97ba2 100644 --- a/readme.md +++ b/readme.md @@ -196,3 +196,9 @@ MIT. Текст: [LICENSE](LICENSE). - [GitHub Issues](https://github.com/modx-pro/MiniShop3/issues): баги и предложения - [Документация](https://docs.modx.pro/components/minishop3/): руководства и справочники - [Telegram](https://t.me/modx_pro): сообщество MODX + +--- + +

+ Сделано с ❤️ для сообщества MODX +

From 59fb56444ff1381ec0f8872b19ad63be11421aaa Mon Sep 17 00:00:00 2001 From: Ivan Bochkarev Date: Mon, 21 Sep 2026 15:05:10 +0600 Subject: [PATCH 3/5] =?UTF-8?q?docs(readme):=20=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=8C=20=D1=8D=D0=BC=D0=BE=D0=B4=D0=B7=D0=B8=20?= =?UTF-8?q?=D0=B2=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B8=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/readme.md b/readme.md index a5d97ba2..0d88b7c3 100644 --- a/readme.md +++ b/readme.md @@ -24,15 +24,15 @@ --- -## Особенности +## ✨ Особенности -- Для MODX 3: PHP 8.2+, namespaces, PSR-4, миграции Phinx -- REST API для headless-интеграций -- Админка на Vue 3 и PrimeVue -- Фронтенд без jQuery, на нативном JavaScript -- Сниппеты, чанки и параметры совместимы с miniShop2 +- 🚀 **Для MODX 3:** PHP 8.2+, namespaces, PSR-4, миграции Phinx +- 🔌 **REST API** для headless-интеграций +- 🎨 Админка на Vue 3 и PrimeVue +- ⚡ Фронтенд без jQuery, на нативном JavaScript +- 🔄 Сниппеты, чанки и параметры совместимы с miniShop2 -## Требования +## 📋 Требования | Компонент | Версия | |-----------|--------| @@ -44,11 +44,11 @@ | Пакет | Обязательный | Описание | |-------|--------------|----------| -| [pdoTools 3.x](https://docs.modx.pro/components/pdotools/) | да | Сниппеты и шаблонизатор Fenom | -| [VueTools](https://docs.modx.pro/components/vuetools/) | да | Vue 3 и PrimeVue для админки | -| [Scheduler](https://docs.modx.pro/components/scheduler/) | нет | Фоновые задачи (импорт, уведомления) | +| [pdoTools 3.x](https://docs.modx.pro/components/pdotools/) | ✅ | Сниппеты и шаблонизатор Fenom | +| [VueTools](https://docs.modx.pro/components/vuetools/) | ✅ | Vue 3 и PrimeVue для админки | +| [Scheduler](https://docs.modx.pro/components/scheduler/) | ❌ | Фоновые задачи (импорт, уведомления) | -## Установка +## 🚀 Установка ### Через менеджер пакетов @@ -56,7 +56,7 @@ Extras → Installer → Download Extras → MiniShop3 → Install ``` -VueTools нужно поставить до MiniShop3. +> ⚠️ VueTools нужно поставить до MiniShop3. ### Из исходников @@ -75,7 +75,7 @@ cd vueManager && npm install && npm run build && cd .. php _build/build.php ``` -## Документация +## 📖 Документация Справочник: [docs.modx.pro/components/minishop3](https://docs.modx.pro/components/minishop3/) @@ -105,7 +105,7 @@ GET /assets/components/minishop3/api.php?route=/api/v1/product/list Тот же URL без `html=1` или с `format=json` возвращает JSON. Так удобнее API-клиентам. В браузере будет сырое тело ответа. -## Структура проекта +## 🏗️ Структура проекта ``` MiniShop3/ @@ -149,7 +149,7 @@ DI-ключи фасадов (см. также `ServiceRegistry`): Переименование namespace (`Domain\` / `Facades\`) остаётся на отдельный major с bc-aliases. Сейчас граница зафиксирована документацией и PHPDoc. -## Участие в разработке +## 🤝 Участие в разработке 1. Форкните репозиторий 2. Создайте ветку (`git checkout -b feature/amazing-feature`) @@ -157,7 +157,7 @@ DI-ключи фасадов (см. также `ServiceRegistry`): 4. Запушьте ветку (`git push origin feature/amazing-feature`) 5. Откройте Pull Request -### Тесты PHP +### 🧪 Тесты PHP Из `core/components/minishop3` после `composer install`: @@ -172,7 +172,7 @@ DI-ключи фасадов (см. также `ServiceRegistry`): CI гоняет live-сьют на MODX 3.1.2-pl, 3.2.3-pl и 3.2.4-pl. Линейка 3.0.x в этом сьюте не проверяется: ядро не поднимается в API-режиме. -### Тесты Vue Manager +### 🧪 Тесты Vue Manager Из `vueManager` (Node.js 18+ локально, в CI 24): @@ -183,19 +183,19 @@ npm test npm run build ``` -## Changelog +## 📝 Changelog История изменений: [CHANGELOG.md](CHANGELOG.md). -## Лицензия +## 📄 Лицензия MIT. Текст: [LICENSE](LICENSE). -## Поддержка +## 💬 Поддержка -- [GitHub Issues](https://github.com/modx-pro/MiniShop3/issues): баги и предложения -- [Документация](https://docs.modx.pro/components/minishop3/): руководства и справочники -- [Telegram](https://t.me/modx_pro): сообщество MODX +- 🐛 [GitHub Issues](https://github.com/modx-pro/MiniShop3/issues): баги и предложения +- 📚 [Документация](https://docs.modx.pro/components/minishop3/): руководства и справочники +- 💬 [Telegram](https://t.me/modx_pro): сообщество MODX --- From f7891ab7eb5984429bcb5fe84d3c616bc7e5b342 Mon Sep 17 00:00:00 2001 From: Ivan Bochkarev Date: Mon, 21 Sep 2026 15:08:23 +0600 Subject: [PATCH 4/5] =?UTF-8?q?docs(readme):=20=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20CI,=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=20=D0=B8=20=D1=83=D1=81=D1=82=D0=B0=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=D1=88=D0=B8=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/readme.md b/readme.md index 0d88b7c3..92c10a33 100644 --- a/readme.md +++ b/readme.md @@ -69,7 +69,7 @@ cd MiniShop3 cd core/components/minishop3 && composer install && cd ../../.. # Vue-админка (Node.js 18+ локально, в GitHub Actions 24) -cd vueManager && npm install && npm run build && cd .. +cd vueManager && npm ci && npm run build && cd .. # Сборка пакета php _build/build.php @@ -110,7 +110,9 @@ GET /assets/components/minishop3/api.php?route=/api/v1/product/list ``` MiniShop3/ ├── _build/ # Сборка транспортного пакета -├── phpstan.neon # PHPStan level 5 + baseline +├── changelogs/ # Помесячные записи (сводка в CHANGELOG.md) +├── phpstan.neon # PHPStan level 5 +├── phpstan-baseline.neon # Известные замечания PHPStan ├── assets/components/minishop3/ │ ├── api.php # Вход публичного Web API │ ├── connector.php # Вход менеджерского API @@ -118,9 +120,23 @@ MiniShop3/ │ ├── js/mgr/ # ExtJS и собранный Vue (vue-dist) │ └── css/ ├── core/components/minishop3/ +│ ├── controllers/ # Контроллеры менеджера MODX (не src/Controllers) │ ├── elements/ # Сниппеты, чанки, плагины -│ ├── config/routes/ # web.php и manager.php (FastRoute) +│ ├── config/ +│ │ ├── routes/ # web.php и manager.php (FastRoute) +│ │ ├── ms3.services.example.php # Пример оверрайда сервисов +│ │ ├── ms3.services.d/ # Доп. сервисы аддонов +│ │ └── ms3.routes.d/ # Доп. маршруты аддонов +│ ├── custom/ # custom/filters, сейчас .gitkeep +│ ├── schema/ # xPDO-схема +│ ├── scripts/ # ci-php.sh, phpstan-prepare-deps.sh │ ├── src/ # PHP-классы (PSR-4) +│ │ ├── Controllers/ # HTTP API и domain facade +│ │ ├── Middleware/ +│ │ ├── Notifications/ +│ │ ├── Router/ +│ │ ├── Services/ +│ │ └── ServiceRegistry.php │ ├── migrations/ # Phinx │ ├── lexicon/ # Переводы (ru, en) │ ├── processors/ # MODX processors @@ -130,7 +146,7 @@ MiniShop3/ ### Слои под `src/Controllers/` -Каталог `MiniShop3\Controllers\…` совмещает HTTP и domain facade. Это разные роли. HTTP-разбор не кладите в facade, а логику корзины и заказа не кладите в API-класс. +Каталог `MiniShop3\Controllers\…` совмещает HTTP и domain facade. Это разные роли. HTTP-разбор не кладите в facade, а логику корзины и заказа не кладите в API-класс. Рядом, в `core/components/minishop3/controllers/`, лежат контроллеры страниц менеджера MODX. Регистр каталога другой, это не тот же слой. | Слой | Путь | Роль | |------|------|------| @@ -157,6 +173,8 @@ DI-ключи фасадов (см. также `ServiceRegistry`): 4. Запушьте ветку (`git push origin feature/amazing-feature`) 5. Откройте Pull Request +Если удаляете PHP-файл из поставляемого компонента (`core/components/minishop3/` или `assets/components/minishop3/`), добавьте путь в `config/obsolete_package_files.php`. При апгрейде MODX копирует новое дерево и не удаляет файлы, которых больше нет в пакете. Оставшийся processor по-прежнему вызывается через `connector.php`. Подробности: [`.github/CONTRIBUTING.md`](.github/CONTRIBUTING.md). + ### 🧪 Тесты PHP Из `core/components/minishop3` после `composer install`: @@ -165,27 +183,35 @@ DI-ключи фасадов (см. также `ServiceRegistry`): | --- | --- | | `composer test:smoke` | Скрипты `tests/*Test.php` без ядра MODX | | `composer test` | PHPUnit Unit + Integration + WebApi на стабах xPDO | -| `composer ci:php` | `php -l` + smoke + `composer test` (как job `PHP lint + smoke`) | +| `composer ci:php` | `php -l` + smoke + `composer test` (job `PHP lint + smoke`) | +| `composer stan:prepare && composer stan` | PHPStan level 5, baseline в `phpstan-baseline.neon` | | `composer test:modx` | Живое ядро MODX 3.1+ / 3.2 через [modxkit/testbench](https://github.com/modxkit/testbench) | `composer test` и `ci:php` не поднимают ядро. Для `test:modx` нужны MySQL и переменные `MODX_TESTBENCH_DB_HOST`, `MODX_TESTBENCH_DB_USER`, `MODX_TESTBENCH_DB_PASS`. Подробности: [`core/components/minishop3/tests/Modx/README.md`](core/components/minishop3/tests/Modx/README.md). +Тесты `@group mysql` входят в `composer test`. Job `PHP lint + smoke` поднимает MySQL 8 и задаёт `MS3_TEST_MYSQL_DSN`, `MS3_TEST_MYSQL_USER`, `MS3_TEST_MYSQL_PASSWORD`. Локально без `MS3_TEST_MYSQL_DSN` эта группа пропускается. + CI гоняет live-сьют на MODX 3.1.2-pl, 3.2.3-pl и 3.2.4-pl. Линейка 3.0.x в этом сьюте не проверяется: ядро не поднимается в API-режиме. ### 🧪 Тесты Vue Manager Из `vueManager` (Node.js 18+ локально, в CI 24): +Job `vueManager lint` запускает: + ```bash npm ci npm run lint:ci +npm run lint:storefront npm test -npm run build +npm run test:smoke ``` +`lint:storefront` проверяет `assets/components/minishop3/js/web`. `test:smoke` проверяет экспорт VueTools. `npm run build` в этом job нет: сборка нужна локально, когда пакет собираете из исходников. + ## 📝 Changelog -История изменений: [CHANGELOG.md](CHANGELOG.md). +История изменений: [CHANGELOG.md](CHANGELOG.md). Помесячные файлы лежат в [`changelogs/`](changelogs/). ## 📄 Лицензия From b9bfbdf02ba1f12278e68fc2545d15b667c94d89 Mon Sep 17 00:00:00 2001 From: biz87 Date: Mon, 21 Sep 2026 23:54:13 +0500 Subject: [PATCH 5/5] =?UTF-8?q?docs(readme):=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BF=D1=83=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B8=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - каталога core/components/minishop3/processors/ нет, процессоры лежат в src/Processors/ - файла LICENSE в репозитории нет, ссылка вела в никуда; лицензия MIT объявлена в composer.json компонента --- readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index 92c10a33..92218c53 100644 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ Version PHP 8.2+ MODX 3.0+ - License MIT + License MIT

@@ -134,12 +134,12 @@ MiniShop3/ │ │ ├── Controllers/ # HTTP API и domain facade │ │ ├── Middleware/ │ │ ├── Notifications/ +│ │ ├── Processors/ # Процессоры MODX (вызов через connector.php) │ │ ├── Router/ │ │ ├── Services/ │ │ └── ServiceRegistry.php │ ├── migrations/ # Phinx │ ├── lexicon/ # Переводы (ru, en) -│ ├── processors/ # MODX processors │ └── tests/ # Smoke и PHPUnit └── vueManager/ # Исходники Vue 3 админки (Vite) ``` @@ -215,7 +215,7 @@ npm run test:smoke ## 📄 Лицензия -MIT. Текст: [LICENSE](LICENSE). +Распространяется под лицензией MIT — она объявлена в [`core/components/minishop3/composer.json`](core/components/minishop3/composer.json). ## 💬 Поддержка