Skip to content

[Feature] Единый EventGate для returnedValues (ImportCSV + Order/Cart) #358

Closed

Description

@Ibochkarev

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

Один канонический helper поверх Utils::invokeEvent для разбора returnedValues / success-message. Удалить параллельные парсеры в ImportCSV (и не плодить новые в Order path).

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

Аудит: в core ~80 events; Utils::invokeEvent уже мержит returnedValues. ImportCSV держит свои returnedValues helpers (~L700–737) — duplicate protocol. #343 дописывает before/after в OrderDraft/Order::set; #344 режет ImportCSV на модули. Без общего EventGate каждый модуль снова скопирует разбор.

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

  1. Вынести EventGate / расширить Utils::invokeEvent так, чтобы callers получали уже нормализованный результат (success, message, values).
  2. ImportCSV Runner/Writer и Order/Cart path зовут только его.
  3. Удалить локальные copy-paste helpers при [Feature] Декомпозировать ImportCSV (<1000 LOC soft-limit) #344.
  4. Зафиксировать контракт returnedValues (issue Event mutation silently dropped: unified audit of invokeEvent callers that expect by-ref mutation #219 behavior) в PHPDoc — не в prose TODO.

Не изобретать второй event bus.

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

  • Оставить helpers в ImportCSV после split — долг переезжает в новый файл.
  • Разные семантики per-feature — ломает ожидания плагинов MS2.

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

  • Один публичный API вызова событий с returnedValues в Services/Utils.
  • ImportCSV не содержит собственного парсера returnedValues.
  • [Feature] Дописать before/after events в OrderDraftManager и Order::set #343 использует тот же API.
  • Поведение success = empty message (как сейчас в Utils) сохранено, если так задумано — или явно изменено с тестом.

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

Делать вместе с #344 или сразу до него. Связано: #343.

Activity

  1. added
    priority: mediumСредний приоритет
    enhancementNew feature or request
    tech-debtMaintainability / refactor / architecture debt
    on Jul 15, 2026
  2. self-assigned this
    on Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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