Skip to content

[Feature] Единый Response envelope на HTTP boundary #341

Description

@Ibochkarev

Описание функции

Свести ответы Manager/Web API к одному контракту на границе HTTP: MiniShop3\Router\Response + HttpStatus.

Проблема, которую решает

Сейчас сосуществуют три стиля:

  1. Response::error/success — API controllers / middleware / routes
  2. $ms3->utils->error/success — MS2-массив в domain Controllers (Cart/Order/Customer)
  3. modProcessor->failure/success + raw runProcessor()->getResponse() — import/gallery и куски manager.php

Клиентам и отладке приходится угадывать shape. Fat closures в manager.php обходят контроллеры.

Предлагаемое решение

Разделить слои явно (без big-bang ломания сниппетов):

  • Domain (Cart/Order/Customer facades): может оставаться MS2-array {success,message,data} для совместимости сниппетов/плагинов.
  • HTTP boundary (Api controllers, route closures): всегда Response::*. Запретить raw processor payload в новых mgr REST путях.
  • Вынести import/gallery/extra-fields dropdowns из fat closures manager.php в контроллеры, которые мапят processor/service → Response.

Не оборачивать Response в utils->success и обратно без нужды.

Альтернативные варианты

  • Ломать MS2-array в domain сразу — риск для storefront/плагинов.
  • Только документация — долг останется в коде.

Критерии приёмки

  • Новые/тронутые mgr+web REST пути отдают только Response.
  • Список оставшихся raw getResponse() в routes — ноль или с явным ticket follow-up.
  • Краткая таблица контрактов в PR / AGENTS-заметке для контрибьюторов (если нужно — комментарий в Router/Response.php).

Дополнительный контекст

Связано с распилом OrdersController (#338) и dual Processors/REST.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestpriority: mediumСредний приоритетtech-debtMaintainability / refactor / architecture debt

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions