Admin BFF — BR 3.4

Контракты

  • Adapter API — 4 новых внутренних эндпоинта для catalog sync (проксируются)
  • Фронт-спека — что вызывает фронт

Что делаем

Прокси-роуты

В bff/src/routes/paykeeper.ts добавить:

  • POST /api/v1/admin/paykeeper/accounts/:id/resync-catalog
    • preHandler: [requireAuth, requirePermission('integrations.manage')]
    • Прокси в ${PAYKEEPER_ADAPTER_URL}/internal/paykeeper/accounts/:id/resync-catalog
    • Возвращает ответ как есть (202)
  • GET /api/v1/admin/paykeeper/accounts/:id/catalog-sync-status
    • requirePermission('integrations.read')
    • Прокси в /internal/paykeeper/accounts/:id/catalog-sync-status
  • GET /api/v1/admin/paykeeper/accounts/:id/catalog-sync-runs
    • requirePermission('integrations.read')
    • Query forwarding: limit, since
    • Прокси в adapter
  • GET /api/v1/admin/paykeeper/accounts/:id/catalog-sync-runs/:runId
    • requirePermission('integrations.read')
    • Прокси в adapter

Shared types

В shared/src/types/paykeeper.ts (или новый catalog-sync.ts):

  • interface CatalogSyncRunStatus = 'running' | 'success' | 'partial' | 'failed'
  • interface CatalogSyncTrigger = 'cron' | 'manual' | 'webhook_missed'
  • interface CatalogSyncRunSummary — поля из GET /.../catalog-sync-runs (без errors_json, last_error)
  • interface CatalogSyncRunDetail — summary + errors_json, last_error
  • interface CatalogSyncStatus{ account_id, last_run: CatalogSyncRunSummary | null, totals: { products_synced, products_total_in_erp, ..., diverged_count } }
  • interface ResyncCatalogResponse{ sync_run_id, status, trigger, started_at }

Экспортировать из корневого shared/src/index.ts.

Конфиг

  • Убедиться что PAYKEEPER_ADAPTER_URL env уже есть (добавлен в BR 3.3). Если нет — добавить в config + envs.

Тесты

  • Unit routes/paykeeper.test.ts — 4 теста (по одному на роут): прокси-проксирование, permission check (403 без permission).
  • Manual smoke: curl через BFF → убедиться что ответ приходит от adapter’а без ошибок.

Документация

  • Обновить bff/README.md если есть список endpoint’ов.

Deploy

После merge — /deploy-all admin-bff.

Ссылки