Решение: вкладка «Файловые логи» в Monitoring с подвкладками files и audit. Co-authored-by: Cursor <cursoragent@cursor.com>
4.2 KiB
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.svelteweb/src/lib/runtime-logs/runtime-logs-api.tsmonitoring/+page.svelte:TabsTrigger value="runtime-logs"label «Файловые логи»- Parse
?tab=включитьruntime-logs - Иконка вкладки:
FileTextилиHardDrive(уже импортирован в monitoring) - KPI сверху (опционально): суммарный размер, число файлов — из list response
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📌 CREATIVE PHASE END: Runtime Logs UI