Zimin A.N.
|
96bfac174d
|
feat(webhook): Phase 4 — admin-ui /webhooks page
Routes:
- /webhooks (layout) → /webhooks/index (list) + /webhooks/$id (detail)
- nav link добавлен в __root.tsx между Outbox и Language switch
List page (webhooks.index.tsx):
- Table: name | URL | scope filter (colored dots) | dictionaries | status
- ScopeChips reuse SCOPE_DOT из lib/scope-style.ts (consistency с
dictionaries scope coloring)
- Create dialog: name, URL, scope filter (MultiSelect), dictionary &
event type (CSV inputs), description. Client-side validation
(URL scheme, name required) дублирует server-side @Pattern.
- Secret reveal modal после create: warning + plaintext + copy button.
Single-time view — после закрытия secret не получить, только rotate.
Detail page (webhooks.$id.tsx):
- Subscription metadata grid (URL, status, filters, masked secret,
createdBy + timestamp)
- Action buttons: rotate-secret + delete (с confirmation)
- Delivery history table: outboxEventId | status badge (delivered/
retrying/pending/dlq) | attempts | last attempt | HTTP code | error
- Pagination 50/page
- Status badges: delivered=success, retrying=warning, pending=neutral,
dlq=error
API client (queries + mutations):
- 4 queries: subscriptions list, subscription by id, deliveries page,
DLQ page (last unused в UI пока, но готов для admin DLQ tab)
- 4 mutations: create, update, delete, rotateSecret. Все invalidate
правильные query keys.
i18n: 50 ключей × 2 локали (ru-RU + en-US) под webhooks.*
|
2026-05-06 15:22:28 +03:00 |
|