diff --git a/bible-local/BACKLOG.md b/bible-local/BACKLOG.md new file mode 100644 index 0000000..be9bd73 --- /dev/null +++ b/bible-local/BACKLOG.md @@ -0,0 +1,21 @@ +# Backlog + +## [sfp_modules] Поддержка per-port SFP/QSFP модулей в экспорте Reanimator + +**Приоритет:** низкий (до выхода Reanimator v3.0, пока deprecated sfp_* скаляры ещё принимаются) + +**Контекст:** +Reanimator Hardware Ingest Contract v2.11 вводит массив `pcie_devices[].sfp_modules[]` для передачи данных SFP/QSFP-модулей по портам. Старые скалярные поля (`sfp_temperature_c`, `sfp_tx_power_dbm`, `sfp_rx_power_dbm`, `sfp_voltage_v`, `sfp_bias_ma`) помечены deprecated и будут удалены в v3.0. Для многопортовых NIC (ConnectX-6 Dx, Intel X710 и подобных) текущая реализация теряет данные — коллектор берёт первое найденное значение и не знает о портах. + +**Текущее состояние:** +- Коллектор (`internal/collector/redfish.go`, `redfishPCIeDetailsWithSupplementalDocs`) собирает SFP как 5 скалярных `float64` на устройство через `redfishFirstNumericAcrossDocs` +- Внутренняя модель (`internal/models/models.go`, struct `PCIeDevice`) не имеет SFP-полей — всё хранится в `Details map[string]any` +- Конвертер (`internal/exporter/reanimator_converter.go`, строки 864–868) читает скаляры из `Details` и кладёт в deprecated поля `ReanimatorPCIe` + +**Что нужно сделать:** +1. **Исследование** — проверить, отдают ли реальные Redfish-источники SFP-данные per-port и в каком виде (прежде чем менять модель) +2. **Коллектор** (`redfish.go`) — если Redfish отдаёт per-port данные, собирать их в массив с индексом порта +3. **Внутренняя модель** (`models.go`) — добавить `SFPModules []SFPModule` в `PCIeDevice` +4. **Экспорт** (`reanimator_models.go`, `reanimator_converter.go`) — добавить `ReanimatorSFPModule`, смапить `SFPModules` в `sfp_modules[]`; убрать deprecated скаляры + +**Триггер для реализации:** анонс Reanimator v3.0 с удалением deprecated sfp_* полей.