[598-51] Онбординг поставщика + реестр поставщиков (whitelist → registry) #152

Closed
claude wants to merge 6 commits from feat/598-supplier-registry into feat/marketplace-admin-orders
Owner

Реестр поставщиков взамен концепции whitelist: ВСЕ поставщики проходят через реестр.

Backend

  • whitelist → marketplace_supplier: enum model(membership|share)/status(pending|approved|rejected), номер+дата договора. isOfferer = сам кооператив ИЛИ approved-запись; витринные режимы и auto-coop убраны.
  • Мутации: requestSupplier (заявка pending, путь 1), addSupplier (админ, сразу approved, путь 2), approveSupplier/rejectSupplier (гейт по Chairman), switchSupplierModel; запросы listSuppliers/mySupplierState.
  • Grants: Onboarding:offerer для не-одобренного пайщика (видна только страница онбординга стола поставщика); полный стол — после одобрения.
  • Назначение выплаты: «Оплата по договору № N от ДД.ММ.ГГГГ» (акт убран).

Frontend

  • Стол поставщика: онбординг (рубильник модели — членская активна, боевая «скоро»; номер+дата договора + подсказка поддержки; «заявка на рассмотрении»), маршрут Onboarding:offerer.
  • Стол администратора: реестр поставщиков (канон-таблица, модель/договор/статус) + «Добавить поставщика» (путь 2) + «Одобрить/Отклонить» (только председателю), маршрут Supplier:manage.

Проверки

generate-schema / generate-client / SDK build — зелёные; ESLint по всем затронутым файлам — зелёный.

Фоллоуап

  • Novu-push председателю на новую заявку (требует отдельного workflow в @coopenomics/notifications) — отложен.
  • Кнопка «Связаться с поддержкой» — пока текстовая подсказка (нет глобального виджета поддержки).

🤖 Generated with Claude Code

Реестр поставщиков взамен концепции whitelist: ВСЕ поставщики проходят через реестр. ## Backend - whitelist → `marketplace_supplier`: enum model(membership|share)/status(pending|approved|rejected), номер+дата договора. `isOfferer` = сам кооператив ИЛИ approved-запись; витринные режимы и auto-coop убраны. - Мутации: requestSupplier (заявка pending, путь 1), addSupplier (админ, сразу approved, путь 2), approveSupplier/rejectSupplier (гейт по Chairman), switchSupplierModel; запросы listSuppliers/mySupplierState. - Grants: `Onboarding:offerer` для не-одобренного пайщика (видна только страница онбординга стола поставщика); полный стол — после одобрения. - Назначение выплаты: «Оплата по договору № N от ДД.ММ.ГГГГ» (акт убран). ## Frontend - Стол поставщика: онбординг (рубильник модели — членская активна, боевая «скоро»; номер+дата договора + подсказка поддержки; «заявка на рассмотрении»), маршрут `Onboarding:offerer`. - Стол администратора: реестр поставщиков (канон-таблица, модель/договор/статус) + «Добавить поставщика» (путь 2) + «Одобрить/Отклонить» (только председателю), маршрут `Supplier:manage`. ## Проверки generate-schema / generate-client / SDK build — зелёные; ESLint по всем затронутым файлам — зелёный. ## Фоллоуап - Novu-push председателю на новую заявку (требует отдельного workflow в @coopenomics/notifications) — отложен. - Кнопка «Связаться с поддержкой» — пока текстовая подсказка (нет глобального виджета поддержки). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude added 2 commits 2026-06-16 14:47:37 +00:00
Backend + SDK половина эпика онбординга поставщика:
- whitelist → реестр поставщиков (marketplace_supplier): enum model(membership|share)/status(pending|approved|rejected), номер+дата договора; isOfferer = кооператив ИЛИ approved; витринные режимы и auto-coop убраны.
- мутации requestSupplier(заявка pending)/approve/reject(председатель)/addSupplier(админ, approved)/switchSupplierModel; запросы listSuppliers/mySupplierState.
- grants: Onboarding:offerer для не-одобренного пайщика (видна только страница онбординга стола поставщика), полный стол — после одобрения.
- назначение выплаты: «Оплата по договору № N от ДД.ММ.ГГГГ» (акт убран).
- SDK: селектор + 7 операций + codegen (schema/zeus/build зелёные).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Стол поставщика: страница онбординга (рубильник модели — членская активна, боевая «скоро»; ввод номера+даты договора + подсказка «обратитесь в поддержку»; статус «заявка на рассмотрении»). Гейт `Onboarding:offerer` первым маршрутом стола.
- Стол администратора: реестр поставщиков (канон .table-wrap: модель/договор/статус-бейдж) + «Добавить поставщика» (путь 2, диалог) + «Одобрить/Отклонить» в строке (видны только председателю). Маршрут `Supplier:manage`.
- SDK-обёртки через Zeus (mySupplierState/requestSupplier/listSuppliers/addSupplier/approve/reject).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude added 1 commit 2026-06-16 16:27:51 +00:00
- @coopenomics/notifications: workflow marketplace-new-supplier-request (email + in-app + push) с payload chairmanName/supplierName/contractNumber/coopname/deepLinkUrl; зарегистрирован в реестре.
- Событие MARKETPLACE_NEW_SUPPLIER_REQUEST_EVENT + listener в MarketplaceNotificationService: резолвит председателя (role:chairman) и шлёт Novu-workflow с deep-link на реестр поставщиков; ошибки доставки не блокируют flow (INV-12).
- MarketplaceSupplierRegistryService эмитит событие при подаче/переоткрытии заявки (после записи в PG).

Проверки: notifications build + generate-schema (Nest bootstrap, DI EventEmitter2) + ESLint — зелёные.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude added 1 commit 2026-06-16 17:04:30 +00:00
requiresProgramSelection был захардкожен на coopname==='voskhod', что
противоречило бэкенду (getRegistrationConfig.requires_selection) и принципу
«бэк управляет, фронт отображает». Теперь список программ грузится в стор
Registrator по бэкенду на шаге SetUserData, requiresProgramSelection =
availablePrograms.length > 1, а шаг SelectProgram скрывается из степпера
(v-if) и перешагивается навигацией, когда выбора нет (0/1 программа).
Единственная программа авто-преселектится, чтобы оферта всё равно
привязалась к пайщику.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ant added 1 commit 2026-06-28 03:53:12 +00:00
Сохранение оферт расширений в program_agreements при регистрации; переименование паевой модели поставщика; снятие запрета выдачи самому себе; корректное отображение списания с паевого в гейте подписи; правки UI таблиц и сборки notifications.

Co-authored-by: Cursor <cursoragent@cursor.com>
claude added 1 commit 2026-07-20 10:50:37 +00:00
Убраны технические детали (имена резолверов/сервисов, пути к файлам,
GraphQL-примеры, слои архитектуры) — описание процесса выдачи и
возможностей расширения теперь на языке пользователя, а не разработчика.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Author
Owner

Содержимое влито в marketplace2 напрямую через git merge (не через merge-кнопку Gitea) — коммиты 4f58871322 и предыдущие в цепочке merge-коммитов marketplace2. Закрываю как поглощённый.

Содержимое влито в marketplace2 напрямую через git merge (не через merge-кнопку Gitea) — коммиты 4f588713229 и предыдущие в цепочке merge-коммитов marketplace2. Закрываю как поглощённый.
claude closed this pull request 2026-07-20 13:05:03 +00:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#152