# Vendor Parser Modules Каждый производитель серверов имеет свой формат диагностических архивов BMC. Эта директория содержит модули парсеров для разных производителей. ## Структура модуля ``` vendors/ ├── vendors.go # Импорты всех модулей (добавьте сюда новый) ├── README.md # Эта документация ├── template/ # Шаблон для нового модуля │ └── parser.go.template ├── inspur/ # Модуль Inspur/Kaytus │ ├── parser.go # Основной парсер + регистрация │ ├── sdr.go # Парсинг SDR (сенсоры) │ ├── fru.go # Парсинг FRU (серийники) │ ├── asset.go # Парсинг asset.json │ └── syslog.go # Парсинг syslog ├── supermicro/ # Будущий модуль Supermicro ├── dell/ # Будущий модуль Dell iDRAC └── hpe/ # Будущий модуль HPE iLO ``` ## Как добавить новый модуль ### 1. Создайте директорию модуля ```bash mkdir -p internal/parser/vendors/VENDORNAME ``` ### 2. Скопируйте шаблон ```bash cp internal/parser/vendors/template/parser.go.template \ internal/parser/vendors/VENDORNAME/parser.go ``` ### 3. Отредактируйте parser.go - Замените `VENDORNAME` на идентификатор вендора (например, `supermicro`) - Замените `VENDOR_DESCRIPTION` на описание (например, `Supermicro`) - Реализуйте метод `Detect()` для определения формата - Реализуйте метод `Parse()` для парсинга данных ### 4. Зарегистрируйте модуль Добавьте импорт в `vendors/vendors.go`: ```go import ( _ "git.mchus.pro/mchus/logpile/internal/parser/vendors/inspur" _ "git.mchus.pro/mchus/logpile/internal/parser/vendors/VENDORNAME" // Новый модуль ) ``` ### 5. Готово! Модуль автоматически зарегистрируется при старте приложения через `init()`. ## Интерфейс VendorParser ```go type VendorParser interface { // Name возвращает человекочитаемое имя парсера Name() string // Vendor возвращает идентификатор вендора Vendor() string // Detect проверяет, подходит ли этот парсер для файлов // Возвращает уверенность 0-100 (0 = не подходит, 100 = точно этот формат) Detect(files []ExtractedFile) int // Parse парсит извлеченные файлы Parse(files []ExtractedFile) (*models.AnalysisResult, error) } ``` ## Советы по реализации Detect() - Ищите уникальные файлы/директории для данного вендора - Проверяйте содержимое файлов на характерные маркеры - Возвращайте высокий confidence (70+) только при уверенном совпадении - Несколько парсеров могут вернуть >0, выбирается с максимальным confidence ## Поддерживаемые вендоры | Вендор | Идентификатор | Статус | Протестировано на | |--------|---------------|--------|-------------------| | Inspur/Kaytus | `inspur` | ✅ Готов | KR4268X2 (onekeylog) | | Supermicro | `supermicro` | ⏳ Планируется | - | | Dell iDRAC | `dell` | ⏳ Планируется | - | | HPE iLO | `hpe` | ⏳ Планируется | - | | Lenovo XCC | `lenovo` | ⏳ Планируется | - |