Магазин
в одном контуре.
AHShop проектируется как отдельная система для продажи товаров: витрина, каталог, корзина, заказ, оплата и доставка работают в одном торговом контуре. Это не страница AHCMS и не склад плагинов — систему можно проверять, обновлять и откатывать.
Ядро остаётся небольшим. Возможности подключаются явно.
Каждый модуль получает границу ответственности, версию контракта и список зависимостей. Каталог не знает устройство службы доставки, а оформление заказа не прячет правила оплаты внутри шаблона страницы.
Так магазин можно развивать частями, не превращая каждое обновление в пересборку всего проекта. Это направление архитектуры; реальные контракты будут подтверждаться кодом по мере разработки.
Один поток.
Разные модули.
План первого контура: модуль знает свой контракт, события и условия совместимости. Ядро координирует версии, но не забирает себе доменную логику.
Обновление должно уметь остановиться.
API обновлений проектируется не как кнопка «поставить последнюю версию», а как последовательность проверяемых переходов. Каждый переход оставляет результат, который можно прочитать до активации.
- 1Registry
Ядро получает подписанный манифест релиза и фиксирует канал обновления.
- 2Verify
Проверяются подпись, контрольная сумма, версия ядра и политика доступа.
- 3Resolve
Граф зависимостей собирается до загрузки; конфликт версий останавливает релиз.
- 4Preflight
Миграции, конфигурация и health checks выполняются в подготовленном контуре.
- 5Activate
Релиз включается атомарно и получает наблюдаемый идентификатор.
- 6Observe / rollback
Сбой проверки возвращает предыдущий код и совместимое состояние данных.
Покупатель видит путь.
Команда видит состояние.
Один и тот же заказ должен быть понятен с двух сторон: человеку — как следующий шаг покупки, оператору — как последовательность событий, обязательств и исключений.
- Выбор
- Корзина
- Оплата
- Получение
- price.resolved
- order.created
- payment.authorized
- fulfillment.closed
Сценарная модель · названия событий уточняются вместе с доменной моделью.
Контур API до первой строки Shop.
Не выпускаем модули раньше правил, по которым они живут. Сначала фиксируем границы, совместимость и восстановление; затем строим вертикальный сценарий от товара до заказа.
- Versioning
/api/shop/v1остаётся стабильным контрактом; несовместимые изменения получают новую версию.- Idempotency
- Команды заказа, оплаты и webhooks используют ключи повторного выполнения без двойного эффекта.
- Events
- Модули связываются версионируемыми событиями, а не чтением чужих таблиц.
- Permissions
- Токены ограничиваются магазином, модулем и действием; служебные секреты не попадают в журнал событий.
- Observability
- Каждая команда получает request ID, а релиз — отдельный журнал preflight, activation и rollback.
- Data changes
- Миграция объявляет совместимый диапазон и отдельную стратегию отката до включения модуля.
Начинаем не со всего магазина. Начинаем с целого маршрута.
Первый рабочий срез должен пройти от товара через цену и корзину к созданному заказу. Он даст реальную основу для модулей оплаты, доставки и обновлений — без преждевременной платформенной сложности.
- 1Core + module contractреестр, события, совместимость
- 2Catalog + pricingтовар, вариант, остаток, цена
- 3Cart + orderидемпотентный вертикальный путь
- 4Updaterманифест, preflight, activation, rollback
AHShop · самостоятельная торговая система
Спроектировать первый маршрут