docs(memory-bank): add creative phase CP-1 tenant settings UI
Решение: /tenant-settings с вкладками BIRD/Ревизии/Дополнительно, пункт mainNav «Параметры», /settings остаётся frontend-only. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Creative: Tenant Settings UI (CP-1)
|
||||
|
||||
📌 **CREATIVE PHASE START: Tenant Settings Module**
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
## 1️⃣ PROBLEM
|
||||
|
||||
**Description:** Tenant-настройки (`global_settings`, `/v1/settings`) разбросаны: вкладка «Система» в Operations и форма BIRD на `/network`. `/settings` зарезервирован под frontend (токен, тема). Нужен отдельный модуль без смешения с browser settings.
|
||||
|
||||
**Requirements:**
|
||||
- Один route для всех tenant KV (BIRD, revision retention, custom)
|
||||
- Роли: viewer — read; operator — PATCH
|
||||
- Переиспользовать существующие схемы (`bird-settings.schema`, `revision-settings.schema`, `settings-api.ts`)
|
||||
- Убрать дубли из Operations и Network
|
||||
|
||||
**Constraints:**
|
||||
- Контракт API не менять на UI-фазе
|
||||
- shadcn-svelte, Svelte 5 runes, superforms
|
||||
- WEB-16: ConfirmDialog для удаления custom keys
|
||||
|
||||
## 2️⃣ OPTIONS
|
||||
|
||||
| Option | Описание |
|
||||
|--------|----------|
|
||||
| **A** | Одна страница `/tenant-settings` с Tabs: BIRD / Ревизии / Дополнительно |
|
||||
| **B** | Три отдельных route: `/tenant-settings/bird`, `/revision`, `/extra` |
|
||||
| **C** | Accordion на одной длинной странице без tabs |
|
||||
| **D** | Оставить BIRD на Network, перенести только revision+KV |
|
||||
|
||||
## 3️⃣ ANALYSIS
|
||||
|
||||
| Criterion | A Tabs | B Multi-route | C Accordion | D Partial |
|
||||
|-----------|--------|---------------|-------------|-----------|
|
||||
| Discoverability | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
|
||||
| Соответствие плану | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐ |
|
||||
| Меньше дублирования | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
|
||||
| Сложность реализации | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||||
| Консистентность с Monitoring/Ops tabs | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐ |
|
||||
|
||||
**Key insights:**
|
||||
- Monitoring уже использует `Tabs` (`system` / `postgres`) — паттерн знаком оператору.
|
||||
- BIRD и revision логически связаны с pipeline/bundles — держать вместе усиливает «единый центр tenant config».
|
||||
- Отдельные routes (B) дают deep links, но избыточны для ~10 полей.
|
||||
|
||||
## 4️⃣ DECISION
|
||||
|
||||
**Selected: Option A** — `/tenant-settings` с тремя вкладками.
|
||||
|
||||
**Navigation:**
|
||||
- **mainNav** (не bottom): новый пункт **`Параметры`** → `/tenant-settings`, icon `SlidersHorizontal`
|
||||
- **bottomNav** `/settings` — без изменений семантики («Настройки интерфейса»)
|
||||
- **Network:** Card «BIRD (кратко)» + кнопка «Изменить параметры» → `/tenant-settings?tab=bird`
|
||||
- **Operations:** удалить tab `system`; в quick actions / empty state — ссылка на `/tenant-settings`
|
||||
|
||||
**Tab structure:**
|
||||
|
||||
| Tab value | Label | Компонент | Сохранение |
|
||||
|-----------|-------|-----------|------------|
|
||||
| `bird` | BIRD | `TenantBirdSettingsCard` (из `BirdSettingsForm`) | PATCH known bird_* |
|
||||
| `revision` | Ревизии | `TenantRevisionSettingsCard` | PATCH `revision_retention_minutes` |
|
||||
| `additional` | Дополнительно | `TenantAdditionalSettingsCard` | PATCH custom KV, operator |
|
||||
|
||||
**URL:** `?tab=bird|revision|additional` (как Operations `?tab=jobs`).
|
||||
|
||||
**Rationale:** минимальный diff, один mental model «параметры tenant», переиспользование tabs-паттерна Monitoring.
|
||||
|
||||
## 5️⃣ IMPLEMENTATION NOTES
|
||||
|
||||
- `web/src/routes/tenant-settings/+page.svelte` — PageHeader + Tabs
|
||||
- Вынести карточки в `web/src/lib/components/tenant-settings/`
|
||||
- Общий `loadSettings()` / `patchSettings()` из `settings-api.ts`
|
||||
- PageHeader description: «Параметры control plane для текущего tenant (API /v1/settings)»
|
||||
- Не показывать на этой странице token/theme
|
||||
- После миграции: удалить `OperationsSystemSettingsTab`, упростить `network/+page.svelte`
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
📌 **CREATIVE PHASE END: Tenant Settings UI**
|
||||
Reference in New Issue
Block a user