refactor(marketplace): способы поставки → 2 режима (individual | collective) #52

Merged
ant merged 3 commits from feat/marketplace-collective-supply into feat/E14-explicit-shipment 2026-05-31 16:49:14 +00:00
Owner

Бэкенд-рефактор: cycle_type сведён к individual | collective (см. коммит). Зависит от E14 (контракт p.mkt.supply с 2-значным CycleType уже в базовой ветке).

Сделано (backend, tsc/eslint/unit-тесты зелёные)

  • Домен/DTO/резолверы/сервисы/репозитории/адаптеры/мапперы + спеки.
  • Коллективная закупка: target_volume опционален (авто-старт по объёму либо ручной запуск); ручной запуск доступен любой collective; жёсткого таймера нет.
  • Удалены cycle_days/min_threshold/max_wait_days, cron'ы time/volume-expire, статусы EXPIRED_NO_THRESHOLD/NO_VOLUME.
  • Мутация marketplaceTriggerOpenSubscription → marketplaceTriggerCollectiveSupply.

Остаётся (отдельными коммитами в эту же ветку)

  • codegen: schema.gql + zeus-клиент (dev-coopback авто-эмитит схему, но с посторонним дрейфом — нужен чистый прогон).
  • frontend desktop: конструктор оферты (2 режима вместо 4), api (rename мутации), переверстка страницы «Коллективная закупка» (бывш. «Сводный заказ»).

🤖 Generated with Claude Code

Бэкенд-рефактор: cycle_type сведён к **individual | collective** (см. коммит). Зависит от E14 (контракт p.mkt.supply с 2-значным CycleType уже в базовой ветке). ## Сделано (backend, tsc/eslint/unit-тесты зелёные) - Домен/DTO/резолверы/сервисы/репозитории/адаптеры/мапперы + спеки. - Коллективная закупка: target_volume опционален (авто-старт по объёму либо ручной запуск); ручной запуск доступен любой collective; жёсткого таймера нет. - Удалены cycle_days/min_threshold/max_wait_days, cron'ы time/volume-expire, статусы EXPIRED_NO_THRESHOLD/NO_VOLUME. - Мутация marketplaceTriggerOpenSubscription → marketplaceTriggerCollectiveSupply. ## Остаётся (отдельными коммитами в эту же ветку) - **codegen**: schema.gql + zeus-клиент (dev-coopback авто-эмитит схему, но с посторонним дрейфом — нужен чистый прогон). - **frontend desktop**: конструктор оферты (2 режима вместо 4), api (rename мутации), переверстка страницы «Коллективная закупка» (бывш. «Сводный заказ»). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude added 1 commit 2026-05-31 15:58:42 +00:00
Свёл cycle_type с 4 значений (time_based/volume_based/open_subscription/
individual) к двум: individual и collective (коллективная закупка).

Коллективная закупка:
- target_volume опционален: задан → авто-старт партии при наборе объёма;
  не задан → только ручной запуск поставщиком.
- ручной «Запустить поставку» доступен любой collective-оферте
  (снят гейт open_subscription).
- жёсткого таймера нет: заказчик выходит сам в любой момент до акцепта.

Удалено: поля cycle_days/min_threshold/max_wait_days; cron-агрегаторы
aggregateTimeBased + aggregateVolumeBasedExpired; статусы партии/ордера
EXPIRED_NO_THRESHOLD/EXPIRED_NO_VOLUME; репо-методы listAllActiveTimeBased/
listAllActiveVolumeBased/findExpiredTimeBased.

Переименовано: GraphQL-мутация marketplaceTriggerOpenSubscription →
marketplaceTriggerCollectiveSupply; aggregator evaluate/trigger-методы.
Сохранён EXPIRED_NO_RESPONSE (истечение окна акцепта) + cron
expireUnacceptedPending.

tsc/eslint чисто; unit-тесты обновлены и зелёные. Контракт p.mkt.supply
(2-значный CycleType) уже в базовой ветке. schema.gql + zeus-клиент +
фронт — отдельным шагом (codegen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claude added 1 commit 2026-05-31 16:45:47 +00:00
SDK:
- mutation triggerOpenSubscription → triggerCollectiveSupply
  (MarketplaceTriggerCollectiveSupplyInput); barrel-export обновлён
- offerSelector: убраны удалённые поля cycle_days/max_wait_days/min_threshold

Desktop:
- конструктор оферты: 4 radio-карточки → 2 (individual | collective),
  target_volume опционален для collective (авто-старт по объёму либо
  ручной запуск); удалены 3 поля из формы/payload/prefill
- OrdererConsolidated: CYCLE_TYPE_LABEL/HINT → COLLECTIVE/INDIVIDUAL,
  STAGE_RANK без EXPIRED_NO_THRESHOLD/EXPIRED_NO_VOLUME
- OrderCard/MyOrders/OffererIncomingOrders/ProcessSupplyInfoWidget:
  выпилены отменённые статусы EXPIRED_NO_* и старые подписи циклов
- marketplace-units: подписи cycle → individual | collective

schema.gql не трогаю (gitignore в dev, войдёт на мердже).
claude added 1 commit 2026-05-31 16:48:30 +00:00
Имя файла отставало от уже переименованного класса
MarketplaceTriggerCollectiveSupplyInputDTO; правлю импорт в
marketplace-cycle.resolver.ts.
ant merged commit 8c1c0e78e2 into feat/E14-explicit-shipment 2026-05-31 16:49:14 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#52