Skip to content

refactor(cart-customer): thin Cart/Customer facades via Services managers#406

Open
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-362-cart-customer-facade
Open

refactor(cart-customer): thin Cart/Customer facades via Services managers#406
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-362-cart-customer-facade

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Вынес пайплайны мутаций корзины и работы с покупателем из толстых facade Controllers/Cart/Cart.php и Controllers/Customer/Customer.php в сервисы по образцу Order + managers. Web API ($ms3->cart / $ms3->customer) и события (msOnBeforeAddToCart, customer events) сохранены.

Новые сервисы: CartMutationHandler, CustomerFieldManager, CustomerOrderResolver. Регистрация DI: ms3_cart_mutation_handler, ms3_customer_field_manager, ms3_customer_order_resolver. Status для ответов мутаций корзины считает handler; facade только синхронизирует draft/cart.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #362

Как это было протестировано?

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

Команды (Gate E):

  • php -l по затронутым PHP — exit 0
  • php tests/CartCustomerFacadeStructureTest.php — exit 0 (длина facade-методов ≤55, ключи DI, events/status в Services)

Конфигурация тестирования:

  • MiniShop3: ветка feat/issue-362-cart-customer-facade
  • MODX: n/a (структурный тест без runtime MODX)
  • PHP: 8.2+

Скриншоты (если применимо)

До После

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок
  • ESLint проходит без ошибок (для JS/Vue изменений)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

  • Rename Controllers/*Domain/* намеренно вне scope (как в issue).
  • Review: code-reviewer / thermo-nuclear / security-review / silent-failure-hunter — blockers нет; исправлены placeholder count и ownership status в handler.
  • Известный pre-existing риск auto-login по email при checkout не менялся (см. security notes).

Move cart mutations and customer field/order resolution out of Controllers
facades so they match the Order + managers pattern without breaking web API.
@Ibochkarev Ibochkarev added priority: high Важно исправить в ближайшее время enhancement New feature or request tech-debt Maintainability / refactor / architecture debt labels Jul 16, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 16, 2026 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: high Важно исправить в ближайшее время tech-debt Maintainability / refactor / architecture debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Cart/Customer: thin facade по образцу Order (Events + managers)

1 participant