diff --git a/memory-bank/creative/creative-runtime-logs-ui.md b/memory-bank/creative/creative-runtime-logs-ui.md new file mode 100644 index 0000000..b228043 --- /dev/null +++ b/memory-bank/creative/creative-runtime-logs-ui.md @@ -0,0 +1,84 @@ +# Creative: Runtime Logs UI (CP-2) + +📌 **CREATIVE PHASE START: Runtime Logs Web UI** +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +## 1️⃣ PROBLEM + +**Description:** Оператору нужен просмотр файлов runtime-логов (`*.log` из sidecar `stack-runtime-logs`), tail/preview и sync-очистка с audit. API будет доступен только на `evobgp-all` с volume; UI должен корректно показывать `503` и направлять к документации. + +**Requirements:** +- Список файлов: имя, размер, mtime +- Preview (tail) в dialog или panel +- Cleanup с ConfirmDialog (operator) +- Просмотр cleanup audit (viewer+) +- Empty/unavailable state при `503` + +**Constraints:** +- Не смешивать с PostgreSQL maintenance logs (уже tab `postgres` в Monitoring) +- `AppDataTable`, `ScrollPreBlock`, `ConfirmDialog` +- Sync DELETE — UI ждёт ответ, показывает spinner на кнопке + +## 2️⃣ OPTIONS + +| Option | Описание | +|--------|----------| +| **A** | Новая вкладка **«Файловые логи»** в `/monitoring` (`?tab=runtime-logs`) | +| **B** | Отдельный route `/runtime-logs` в mainNav | +| **C** | Секция в Operations (рядом с jobs) | +| **D** | Подвкладка внутри Monitoring → PostgreSQL | + +## 3️⃣ ANALYSIS + +| Criterion | A Monitoring tab | B Own route | C Operations | D Under Postgres | +|-----------|------------------|-------------|--------------|------------------| +| Логическая группировка | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐ | +| Переиспользование Monitoring layout | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | +| Не перегружать nav | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | +| Рядом с infra observability | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | +| Реализация (diff) | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | + +**Key insights:** +- Monitoring уже = health + Postgres; файловые логи — ещё один «операционный» источник диагностики. +- Отдельный route раздувает nav (8+ пунктов mainNav). +- Operations семантически про ревизии/jobs, не raw FS. + +## 4️⃣ DECISION + +**Selected: Option A** — вкладка в Monitoring. + +**Structure:** + +``` +/monitoring + ├─ system (существует) + ├─ postgres (существует) + └─ runtime-logs (новая) +``` + +**Внутри вкладки `runtime-logs` — nested Tabs:** + +| Sub-tab | Содержание | +|---------|------------| +| `files` | AppDataTable файлов + actions: Просмотр / Очистить | +| `audit` | Таблица cleanup audit (`GET /v1/runtime-logs/cleanup-audit`) | + +**Unavailable (`503`):** `EmptyState` с текстом: «Файловые логи доступны только на evobgp-all с примонтированным каталогом runtime-logs» + ссылка на docs. + +**Preview:** `Dialog` + `ScrollPreBlock`, загрузка `GET .../files/{name}?lines=200` (лимиты из CP-3). + +**Cleanup:** `ConfirmDialog` — текст с именем файла и размером; `DELETE ?mode=truncate` по умолчанию; опция «Удалить файл» в dropdown для operator. + +**Rationale:** минимум nav-churn, консистентность с postgres monitoring, один URL `/monitoring?tab=runtime-logs`. + +## 5️⃣ IMPLEMENTATION NOTES + +- `web/src/lib/components/monitoring/RuntimeLogsTab.svelte` +- `web/src/lib/runtime-logs/runtime-logs-api.ts` +- `monitoring/+page.svelte`: `TabsTrigger value="runtime-logs"` label «Файловые логи» +- Parse `?tab=` включить `runtime-logs` +- Иконка вкладки: `FileText` или `HardDrive` (уже импортирован в monitoring) +- KPI сверху (опционально): суммарный размер, число файлов — из list response + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📌 **CREATIVE PHASE END: Runtime Logs UI** diff --git a/memory-bank/tasks.md b/memory-bank/tasks.md index 4f54a34..3471a0a 100644 --- a/memory-bank/tasks.md +++ b/memory-bank/tasks.md @@ -318,7 +318,7 @@ graph TD ## Creative Phases Required - [x] **CP-1 uiux** — `creative-tenant-settings-ui.md` ✅ Tabs `/tenant-settings`, nav «Параметры» -- [ ] **CP-2 uiux** — `creative-runtime-logs-ui.md` +- [x] **CP-2 uiux** — `creative-runtime-logs-ui.md` ✅ Monitoring tab `runtime-logs` + sub-tabs files/audit - [ ] **CP-3 algorithm** — `creative-runtime-logs-cleanup.md` (truncate default vs delete) - [ ] **CP-4 architecture** — `creative-runtime-logs-path-safety.md`