You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Файлы уже в правильном слое, но несколько bounded contexts в одном классе. #352 только memoize getGridConfig — не снимает god-service. Правки колонок грида, caption overlay и product save конфликтуют в одном PR-диффе.
Предлагаемое решение
Phase A — GridConfig
GridConfigRepository (get/save persistence)
Type validators / editors уже частично (GridColumnEditorType, GridEditorReferenceRegistry) — дожать ownership addField/updateField ~130–140 строк
Фасад GridConfigService оркестрирует
Phase B — OptionLoader
Загрузка значений товара vs поля админки vs caption overlays — разные классы
Prefetch batch остаётся у loader продукта
Phase C — ProductData
Save categories/options/links/repeater/price hooks → collaborators; ProductDataService = facade
Порядок: A → B → C (или параллельно разными авторами). Не смешивать с Vue (#354) в одном PR.
Activity
refactor(product): split ProductDataService into save collaborators
refactor(grid): разрез GridConfigService (Phase A #365) (#513)
refactor(options): разрез OptionLoaderService (Phase B #365) (#514)
refactor(product): разрез ProductDataService (Phase C #365) (#515)
Ibochkarev commentedon Aug 10, 2026
Все три фазы влиты в
beta— issue закрываю.Phases
Acceptance (на
origin/beta)GridConfigService477,OptionLoaderService110,ProductDataService349Services/Grid/*,Services/Option/*,Services/Product/*#352не ломаетсяOut of scope этого issue: Vue thin composables (#354), memoize
#352.chore: sync beta with upstream modx-pro/MiniShop3 (#1)