Update documentation to reflect current implementation

This commit is contained in:
2026-01-31 00:21:48 +03:00
parent 70cd541d9e
commit eeed509b43
2 changed files with 82 additions and 70 deletions

146
CLAUDE.md
View File

@@ -1,8 +1,8 @@
# BMC Analyzer - Инструкции для Claude Code
# LOGPile - Инструкции для Claude Code
## Описание проекта
Приложение для анализа диагностической информации с BMC серверов (IPMI).
Приложение для анализа диагностической информации с BMC серверов (IPMI).
Представляет собой standalone Go-бинарник со встроенным веб-интерфейсом.
### Функциональность
@@ -25,24 +25,24 @@
- **Тип:** Standalone бинарник с embedded веб-сервером
- **Язык:** Go
- **UI:** Embedded HTML + CSS + Vanilla JS (или Alpine.js)
- **UI:** Embedded HTML + CSS + Vanilla JS
- **Порт:** localhost:8080 (по умолчанию)
## Структура проекта
```
bmc-analyzer/
├── cmd/bmc-analyzer/main.go # Точка входа
logpile/
├── cmd/logpile/main.go # Точка входа
├── internal/
│ ├── parser/ # Парсинг архивов и IPMI данных
│ ├── models/ # Модели данных
│ ├── analyzer/ # Логика анализа
│ ├── exporter/ # Экспорт данных
│ └── server/ # HTTP сервер и handlers
├── web/ # Embedded веб-интерфейс
│ ├── static/ # CSS, JS, изображения
│ └── templates/ # HTML шаблоны
├── testdata/ # Примеры архивов для тестов
│ ├── parser/ # Парсинг архивов и IPMI данных
│ ├── models/ # Модели данных
│ ├── analyzer/ # Логика анализа
│ ├── exporter/ # Экспорт данных
│ └── server/ # HTTP сервер и handlers
├── web/ # Embedded веб-интерфейс
│ ├── static/ # CSS, JS, изображения
│ └── templates/ # HTML шаблоны
├── testdata/ # Примеры архивов для тестов
├── go.mod
├── Makefile
└── README.md
@@ -51,80 +51,83 @@ bmc-analyzer/
## Технический стек
### Backend
- Go 1.21+
- Go 1.22+
- Стандартная библиотека (net/http, archive/tar, compress/gzip)
- embed для встраивания веб-ресурсов
- Возможно: fiber или gin для роутинга (на ваше усмотрение)
### Frontend
- Vanilla JavaScript или Alpine.js (минимализм)
- CSS (можно Tailwind CSS через CDN)
- Vanilla JavaScript
- CSS (встроенный в бинарник)
- Без сборщиков - всё embedded в бинарник
### Парсинг IPMI
- SEL формат: обычно текстовый вывод `ipmitool sel list` или бинарный
- SEL формат: текстовый вывод `ipmitool sel list` или бинарный
- FRU формат: вывод `ipmitool fru print`
- Конфигурация: различные текстовые файлы из архива
## Этапы разработки
## Реализованные функции
### 1. Базовая структура
### 1. Базовая структура
- [x] Создана структура директорий
- [ ] go.mod инициализирован
- [ ] Makefile создан
- [x] go.mod инициализирован
- [x] Makefile создан
### 2. Парсер архивов
- [ ] Распаковка tar.gz
- [ ] Распаковка zip
- [ ] Определение типов файлов внутри архива
- [x] Распаковка tar.gz
- [x] Распаковка zip
- [x] Определение типов файлов внутри архива
### 3. Парсеры IPMI данных
- [ ] SEL parser (System Event Log)
- [ ] FRU parser (серийные номера)
- [ ] Config parser (конфигурация сервера)
- [x] SEL parser (System Event Log)
- [x] FRU parser (серийные номера)
- [x] Config parser (конфигурация сервера)
- [x] Поддержка нескольких производителей (Supermicro, Inspur, Nvidia, etc.)
### 4. Модели данных
- [ ] Event (события из SEL)
- [ ] Hardware (конфигурация)
- [ ] SerialNumber (серийники компонентов)
- [x] Event (события из SEL)
- [x] Hardware (конфигурация)
- [x] SerialNumber (серийники компонентов)
### 5. Веб-сервер
- [ ] HTTP сервер с embedded файлами
- [ ] Upload handler для архивов
- [ ] API endpoints для получения данных
- [ ] Handlers для экспорта
- [x] HTTP сервер с embedded файлами
- [x] Upload handler для архивов
- [x] API endpoints для получения данных
- [x] Handlers для экспорта
### 6. Веб-интерфейс
- [ ] Главная страница с upload формой
- [ ] Отображение событий (timeline/таблица)
- [ ] Отображение конфигурации
- [ ] Таблица серийных номеров
- [ ] Кнопки экспорта
- [x] Главная страница с upload формой
- [x] Отображение событий (timeline/таблица)
- [x] Отображение конфигурации
- [x] Таблица серийных номеров
- [x] Кнопки экспорта
### 7. Экспортеры
- [ ] CSV экспорт (серийники)
- [ ] JSON экспорт (конфиг, события)
- [ ] TXT отчет (логи)
- [x] CSV экспорт (серийники)
- [x] JSON экспорт (конфиг, события)
- [x] TXT отчет (логи)
### 8. Тестирование и сборка
- [ ] Unit тесты для парсеров
- [ ] Интеграционные тесты
- [ ] Cross-platform сборка (Linux, Windows, Mac)
- [x] Unit тесты для парсеров
- [x] Интеграционные тесты
- [x] Cross-platform сборка (Linux, Windows, Mac)
## Примеры использования
```bash
# Простой запуск
./bmc-analyzer
# Сборка
make build
# Запуск веб-сервера
./bin/logpile serve
# Открыть в браузере
open http://localhost:8080
# С указанием порта
./bmc-analyzer --port 9000
./bin/logpile serve --port 9000
# С предзагрузкой файла
./bmc-analyzer --file /path/to/bmc-archive.tar.gz
# Кросс-компиляция
make build-all
./bin/logpile serve --file /path/to/bmc-archive.tar.gz
```
## Формат данных IPMI
@@ -154,27 +157,38 @@ FRU Device Description : Builtin FRU Device (ID 0)
Board Part Number : X11DPH-TQ
```
## API Endpoints (планируемые)
## API Endpoints
```
POST /api/upload # Загрузить архив
GET /api/status # Получить статус парсинга
GET /api/parsers # Получить список доступных парсеров
GET /api/events # Получить список событий
GET /api/sensors # Получить показания сенсоров
GET /api/config # Получить конфигурацию
GET /api/serials # Получить серийные номера
GET /api/firmware # Получить версии прошивок
GET /api/export/csv # Экспорт в CSV
GET /api/export/json # Экспорт в JSON
GET /api/export/txt # Экспорт текстового отчета
DELETE /api/clear # Очистить загруженные данные
POST /api/shutdown # Завершить работу приложения
```
## Поддерживаемые производители
- Supermicro
- Inspur/Kaytus
- Nvidia
- Generic (fallback)
## Следующие шаги
1. Инициализировать Go модуль
2. Создать базовую структуру пакетов
3. Реализовать парсер архивов (tar.gz)
4. Создать простой HTTP сервер с upload формой
5. Реализовать парсинг SEL логов
6. Добавить веб-интерфейс для отображения данных
1. Добавление поддержки других производителей BMC (Dell iDRAC, HP iLO, Lenovo XCC)
2. Расширение функционала экспорта данных
3. Добавление фильтрации и сортировки данных в UI
4. Улучшение производительности парсинга больших архивов
5. Добавление поддержки других форматов IPMI данных
## Примечания
@@ -182,12 +196,4 @@ DELETE /api/clear # Очистить загруженные данны
- Приоритет на простоту и минимум зависимостей
- Безопасность: валидация загружаемых архивов (размер, типы файлов)
- UI должен быть простым и функциональным, не перегруженным
- Поддержка русского языка в интерфейсе
## Вопросы для уточнения
1. Какие конкретно производители BMC используются? (Supermicro, Dell iDRAC, HP iLO, etc.)
2. Есть ли примеры реальных архивов для тестирования?
3. Нужна ли поддержка разных форматов SEL (текстовый vs бинарный)?
4. Какие метрики/события наиболее важны для анализа?
5. Нужна ли фильтрация событий по severity (Critical, Warning, Info)?
- Поддержка русского языка в интерфейсе