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 @@
-
+
@@ -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).
## 💬 Поддержка