docs: Полная переработка документации проекта
- Удалена старая документация с эмодзи - Создана новая техническая документация на русском языке - Добавлены подробные руководства: * README.md - обзор проекта * docs/installation.md - установка и настройка * docs/configuration.md - конфигурация * docs/api.md - API документация * docs/management.md - управление проектом * docs/security.md - безопасность * docs/troubleshooting.md - устранение неполадок - Обновлены конфигурационные файлы - Улучшена структура проекта Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -1,47 +0,0 @@
|
||||
# Документация LogBoard+
|
||||
|
||||
## Обзор
|
||||
|
||||
LogBoard+ - это веб-приложение для мониторинга логов Docker контейнеров в реальном времени с поддержкой Single View и Multi View режимов.
|
||||
|
||||
## Основные функции
|
||||
|
||||
### Просмотр логов
|
||||
- **Single View**: просмотр логов одного контейнера
|
||||
- **Multi View**: одновременный просмотр логов нескольких контейнеров
|
||||
- Фильтрация по уровням логирования (DEBUG, INFO, WARN, ERROR)
|
||||
- Поиск по регулярным выражениям
|
||||
- Автопрокрутка и перенос строк
|
||||
|
||||
### Горячие клавиши
|
||||
- `Ctrl+R` / `Ctrl+K` - обновление логов
|
||||
- `[` `]` - навигация между контейнерами
|
||||
- `Ctrl+B` - сворачивание/разворачивание панели
|
||||
|
||||
### Управление интерфейсом
|
||||
- Сворачивание sidebar для экономии места
|
||||
- Переключение тем (светлая/темная)
|
||||
- Настройка количества отображаемых строк
|
||||
- Экспорт логов в файл
|
||||
|
||||
## Документация
|
||||
|
||||
- [Горячие клавиши](hotkeys.md) - подробное описание всех горячих клавиш
|
||||
- [Новые функции интерфейса](features.md) - описание сворачивания панелей и других функций
|
||||
- [API документация](../api/README.md) - описание API endpoints
|
||||
- [Разработка](../dev/README.md) - руководство для разработчиков
|
||||
|
||||
## Технологии
|
||||
|
||||
- **Backend**: Python, FastAPI, WebSocket
|
||||
- **Frontend**: HTML5, CSS3, JavaScript (Vanilla)
|
||||
- **База данных**: PostgreSQL с asyncpg
|
||||
- **Контейнеризация**: Docker, Docker Compose
|
||||
|
||||
## Автор
|
||||
|
||||
Сергей Антропов - https://devops.org.ru
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT License
|
||||
@@ -1,172 +0,0 @@
|
||||
# AJAX Auto-update для LogBoard+
|
||||
|
||||
## Описание
|
||||
|
||||
AJAX Auto-update - это система автоматического обновления логов через AJAX запросы, которая позволяет получать новые логи без перезагрузки страницы.
|
||||
|
||||
## Основные возможности
|
||||
|
||||
- **Автоматическое обновление**: Логи обновляются с заданным интервалом
|
||||
- **Умное управление кнопкой Refresh**: Кнопка refresh автоматически скрывается при включенном AJAX autoupdate и показывается при выключенном
|
||||
- **Поддержка Multi-view**: Работает как в single-view, так и в multi-view режимах
|
||||
- **Настраиваемый интервал**: Интервал обновления настраивается через API
|
||||
- **Эффективное обновление**: Обновляются только новые логи с момента последнего запроса
|
||||
|
||||
## Управление кнопками
|
||||
|
||||
### Кнопка Refresh
|
||||
|
||||
Кнопка refresh в header автоматически управляется в зависимости от состояния AJAX autoupdate:
|
||||
|
||||
- **AJAX autoupdate включен** → Кнопка refresh **скрыта**
|
||||
- **AJAX autoupdate выключен** → Кнопка refresh **показана**
|
||||
|
||||
### Кнопка Update
|
||||
|
||||
Кнопка update в header показывает состояние AJAX autoupdate и позволяет переключать его:
|
||||
|
||||
- **AJAX autoupdate включен** → Кнопка update **зеленая**
|
||||
- **AJAX autoupdate выключен** → Кнопка update **красная**
|
||||
- **Клик по кнопке** → Переключает состояние AJAX autoupdate
|
||||
|
||||
### Функции управления
|
||||
|
||||
```javascript
|
||||
/**
|
||||
* Обновить видимость кнопки refresh в header
|
||||
*/
|
||||
function updateRefreshButtonVisibility() {
|
||||
const refreshButtons = document.querySelectorAll('.log-refresh-btn');
|
||||
refreshButtons.forEach(btn => {
|
||||
if (ajaxUpdateEnabled) {
|
||||
// Если ajax autoupdate включен, скрываем кнопку refresh
|
||||
btn.style.display = 'none';
|
||||
} else {
|
||||
// Если ajax autoupdate выключен, показываем кнопку refresh
|
||||
btn.style.display = 'inline-flex';
|
||||
}
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
### Автоматическое обновление видимости
|
||||
|
||||
Видимость кнопки refresh автоматически обновляется в следующих случаях:
|
||||
|
||||
1. **При инициализации AJAX update**
|
||||
2. **При изменении состояния чекбокса "Auto-update logs"**
|
||||
3. **При программном включении/выключении AJAX update**
|
||||
4. **При переключении состояния через функцию toggleAjaxLogUpdate**
|
||||
|
||||
## Настройки
|
||||
|
||||
### Интервал обновления
|
||||
|
||||
Интервал обновления настраивается через API endpoint `/api/settings`:
|
||||
|
||||
```json
|
||||
{
|
||||
"ajax_update_interval": 2000
|
||||
}
|
||||
```
|
||||
|
||||
По умолчанию используется интервал 2000ms (2 секунды).
|
||||
|
||||
### Чекбокс управления
|
||||
|
||||
В sidebar есть чекбокс "Auto-update logs", который позволяет пользователю:
|
||||
|
||||
- Включить автоматическое обновление
|
||||
- Выключить автоматическое обновление
|
||||
- Автоматически управляет видимостью кнопки refresh
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Получение настроек
|
||||
|
||||
```
|
||||
GET /api/settings
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
Ответ:
|
||||
```json
|
||||
{
|
||||
"ajax_update_interval": 2000
|
||||
}
|
||||
```
|
||||
|
||||
### Получение логов с поддержкой AJAX
|
||||
|
||||
```
|
||||
GET /api/logs/{container_id}?tail={lines}&since={timestamp}
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
Параметры:
|
||||
- `tail`: количество строк для получения (или "all")
|
||||
- `since`: временная метка последнего обновления (опционально)
|
||||
|
||||
## Переменные состояния
|
||||
|
||||
```javascript
|
||||
let ajaxUpdateEnabled = true; // Состояние AJAX обновления (по умолчанию включен)
|
||||
let ajaxUpdateIntervalMs = 2000; // Интервал обновления в миллисекундах
|
||||
let ajaxUpdateInterval = null; // ID интервала
|
||||
const containerStates = new Map(); // Состояние контейнеров для отслеживания обновлений
|
||||
```
|
||||
|
||||
## Функции управления
|
||||
|
||||
### enableAjaxLogUpdate(intervalMs)
|
||||
Включает AJAX обновление логов с заданным интервалом.
|
||||
|
||||
### disableAjaxLogUpdate()
|
||||
Отключает AJAX обновление логов.
|
||||
|
||||
### toggleAjaxLogUpdate()
|
||||
Переключает состояние AJAX обновления.
|
||||
|
||||
### performAjaxLogUpdate()
|
||||
Выполняет одно обновление логов через AJAX.
|
||||
|
||||
### updateContainerLogs(containerId, tailLines, token)
|
||||
Обновляет логи для конкретного контейнера.
|
||||
|
||||
### updateRefreshButtonVisibility()
|
||||
Обновляет видимость кнопки refresh и состояние кнопки update в зависимости от состояния AJAX autoupdate.
|
||||
|
||||
### setAjaxUpdateState(enabled)
|
||||
Обновляет визуальное состояние кнопки update (зеленая/красная) в зависимости от состояния AJAX autoupdate.
|
||||
|
||||
## Интеграция с существующим кодом
|
||||
|
||||
AJAX update интегрируется с существующими функциями:
|
||||
|
||||
- **switchToSingle**: Останавливает AJAX обновление при смене контейнера
|
||||
- **switchToMultiView**: Останавливает AJAX обновление при переключении в multi-view
|
||||
- **refreshLogsAndCounters**: Ручное обновление логов (кнопка refresh)
|
||||
|
||||
## Логирование
|
||||
|
||||
Все операции AJAX update логируются в консоль браузера:
|
||||
|
||||
```javascript
|
||||
console.log('AJAX обновление логов включено с интервалом 2000ms');
|
||||
console.log('AJAX обновление логов отключено');
|
||||
console.log('AJAX Update: Обновляем 2 контейнеров: ["container1", "container2"]');
|
||||
```
|
||||
|
||||
## Обработка ошибок
|
||||
|
||||
При ошибках AJAX запросов:
|
||||
|
||||
- Обновление не останавливается автоматически
|
||||
- Ошибки логируются в консоль
|
||||
- Пользователь может вручную отключить обновление через чекбокс
|
||||
|
||||
## Совместимость
|
||||
|
||||
- Работает с существующими WebSocket соединениями
|
||||
- Поддерживает все режимы просмотра (single-view, multi-view)
|
||||
- Совместимо с фильтрацией и настройками уровней логирования
|
||||
@@ -1,77 +0,0 @@
|
||||
# Новые функции интерфейса LogBoard+
|
||||
|
||||
## Сворачивание панелей
|
||||
|
||||
### Sidebar (боковая панель)
|
||||
- **Кнопка сворачивания**: <i class="fas fa-chevron-left"></i> на границе sidebar и основного контента
|
||||
- **Горячая клавиша**: `Ctrl+B` / `Ctrl+И`
|
||||
- **Свернутое состояние**: ширина 60px
|
||||
- **Логотип**: показывает <i class="fas fa-terminal"></i> в свернутом состоянии
|
||||
- **Кнопка помощи**: <i class="fas fa-question-circle"></i> между options и logout
|
||||
|
||||
## Управление
|
||||
|
||||
### Кнопка сворачивания
|
||||
- **Кнопка на границе**: сворачивает боковую панель
|
||||
- **Расположение**: посередине экрана по высоте на границе sidebar и основного контента
|
||||
- **Состояние сохраняется** в localStorage
|
||||
|
||||
### Горячая клавиша
|
||||
- **Ctrl+B** / **Ctrl+И**: сворачивает/разворачивает sidebar и header
|
||||
- Удобно для быстрого освобождения места на экране
|
||||
|
||||
### Header (заголовок)
|
||||
- **Сворачивается вместе с sidebar**
|
||||
- **В свернутом состоянии**: тонкая полоска 40px высотой
|
||||
- **Содержит**: фильтр логов, кнопки уровней логирования, кнопку обновления
|
||||
- **Стили**: кнопки выглядят точно так же, как в развернутом состоянии
|
||||
- **log-header**: полностью скрывается в свернутом режиме
|
||||
- **log-content**: минимальный padding 2px в свернутом состоянии
|
||||
- **multi-view-panel**: показывает название контейнера в Single View режиме
|
||||
|
||||
## Визуальные элементы
|
||||
|
||||
### Логотип в свернутом sidebar
|
||||
```
|
||||
<i class="fas fa-terminal"></i>
|
||||
```
|
||||
- Отображается только когда sidebar свернут
|
||||
- Расположен в самом верху sidebar
|
||||
- Стилизован в цвете акцента
|
||||
- Занимает минимальное место
|
||||
|
||||
### Модальное окно с горячими клавишами
|
||||
- **Открытие**: кнопка <i class="fas fa-question-circle"></i> в свернутом sidebar
|
||||
- **Закрытие**: кнопка X, клик вне окна, или повторный клик на кнопку помощи
|
||||
- **Содержит**: полный список всех горячих клавиш с описанием
|
||||
- **Анимация**: плавное появление и исчезновение
|
||||
|
||||
### Анимации
|
||||
- Плавные переходы при сворачивании/разворачивании
|
||||
- Длительность анимации: 0.3 секунды
|
||||
- CSS transitions для всех элементов
|
||||
- Кнопка сворачивания остается на месте при наведении
|
||||
|
||||
## Сохранение настроек
|
||||
|
||||
### localStorage ключи
|
||||
- `lb_sidebar_collapsed` - состояние sidebar
|
||||
- `lb_hotkeys_shown` - показ уведомления о горячих клавишах
|
||||
|
||||
### Восстановление состояния
|
||||
- При перезапуске приложения состояния восстанавливаются
|
||||
- Кнопки показывают правильные иконки
|
||||
- Tooltip обновляется в соответствии с состоянием
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Освобождение места
|
||||
1. Нажать `Ctrl+B` или кнопку sidebar - сворачивается панель
|
||||
2. Получаем больше места для просмотра логов
|
||||
|
||||
### Быстрое переключение
|
||||
1. Использовать `Ctrl+B` для быстрого переключения
|
||||
2. Использовать кнопку на границе для точного управления
|
||||
|
||||
## Автор
|
||||
Сергей Антропов - https://devops.org.ru
|
||||
@@ -1,66 +0,0 @@
|
||||
# Горячие клавиши LogBoard+
|
||||
|
||||
## Обновление логов
|
||||
|
||||
### Ctrl+R
|
||||
Обновляет логи в текущем режиме просмотра:
|
||||
- **Single View**: переподключается к WebSocket и получает свежие логи
|
||||
- **Multi View**: переподключается ко всем выбранным контейнерам
|
||||
|
||||
### Ctrl+K
|
||||
Альтернативная комбинация для обновления логов (аналогично Ctrl+R)
|
||||
|
||||
## Навигация
|
||||
|
||||
### [ (квадратная скобка)
|
||||
Переход к предыдущему контейнеру в списке
|
||||
|
||||
### ] (квадратная скобка)
|
||||
Переход к следующему контейнеру в списке
|
||||
|
||||
### Ctrl+← (стрелка влево)
|
||||
Альтернативная комбинация для перехода к предыдущему контейнеру
|
||||
|
||||
### Ctrl+→ (стрелка вправо)
|
||||
Альтернативная комбинация для перехода к следующему контейнеру
|
||||
|
||||
## Управление интерфейсом
|
||||
|
||||
### Ctrl+B
|
||||
Сворачивание/разворачивание sidebar панели:
|
||||
- Сворачивает sidebar до минимальной ширины (60px)
|
||||
- Скрывает все элементы управления и список контейнеров
|
||||
- Показывает логотип LogBoard+ в свернутом sidebar
|
||||
- Состояние сохраняется в localStorage
|
||||
|
||||
### Кнопка сворачивания
|
||||
- **Кнопка на границе** (<i class="fas fa-chevron-left"></i>) - сворачивание sidebar
|
||||
- Расположена посередине экрана по высоте на границе sidebar и основного контента
|
||||
- Состояние сохраняется в localStorage
|
||||
|
||||
## Особенности
|
||||
|
||||
### Проверка фокуса
|
||||
Горячие клавиши не работают, когда фокус находится в полях ввода:
|
||||
- Поле фильтра логов
|
||||
- Поле добавления исключенных контейнеров
|
||||
- Любые другие input/textarea элементы
|
||||
|
||||
### Визуальные подсказки
|
||||
- Иконка клавиатуры в заголовке с подсказкой о горячих клавишах
|
||||
- Уведомление о горячих клавишах при первом запуске
|
||||
- Tooltip на кнопке сворачивания sidebar
|
||||
|
||||
### Сохранение настроек
|
||||
- Состояние sidebar (свернут/развернут) сохраняется в localStorage
|
||||
- При следующем запуске приложения состояние восстанавливается
|
||||
|
||||
## Примеры использования
|
||||
|
||||
1. **Быстрое обновление логов**: `Ctrl+R` для получения свежих данных
|
||||
2. **Навигация по контейнерам**: `[` `]` для переключения между сервисами
|
||||
3. **Освобождение места на экране**: `Ctrl+B` для сворачивания панели
|
||||
4. **Работа в Multi View**: `Ctrl+R` обновляет все выбранные контейнеры одновременно
|
||||
|
||||
## Автор
|
||||
Сергей Антропов - https://devops.org.ru
|
||||
Reference in New Issue
Block a user