Introduce canonical hardware.devices repository and align UI/Reanimator exports

This commit is contained in:
2026-02-17 19:07:18 +03:00
parent a82b55b144
commit de5521a4e5
11 changed files with 1944 additions and 319 deletions

View File

@@ -157,6 +157,7 @@ POST /api/collect
- `GET /api/export/csv` — серийные номера
- `GET /api/export/json` — полный `AnalysisResult` (включая `raw_payloads`)
- `GET /api/export/reanimator` — экспорт для Reanimator
Имена экспортируемых файлов:
@@ -165,6 +166,22 @@ POST /api/collect
Пример:
`2026-02-04 (SYS-421GE-TNHR2) - C8X123456789.json`
## Canonical inventory (`hardware.devices`)
В проекте используется единый реестр устройств сервера: `hardware.devices`.
Это source of truth для UI и экспорта Reanimator.
Основные правила:
- вкладки конфигурации читают данные устройств из `hardware.devices`;
- `Device Inventory` строится по типам `pcie`, `storage`, `gpu`, `network`;
- экспорт Reanimator использует тот же canonical-реестр;
- расхождение данных UI и Reanimator считается дефектом.
Дедупликация в canonical-реестре:
1. по usable `serial_number` (не пустой и не `N/A/NA/NONE/NULL/UNKNOWN/-`);
2. если serial отсутствует — по `bdf`;
3. если serial и bdf отсутствуют — записи не схлопываются.
## API
```text
@@ -181,10 +198,15 @@ GET /api/serials
GET /api/firmware
GET /api/export/csv
GET /api/export/json
GET /api/export/reanimator
DELETE /api/clear
POST /api/shutdown
```
Примечания:
- `GET /api/config` возвращает canonical inventory в `hardware.devices`.
- `GET /api/serials` и `GET /api/firmware` строятся из того же canonical inventory.
`/api/status` и `/api/config` содержат метаданные источника:
- `source_type`: `archive` | `api`
- `protocol`: `redfish` | `ipmi` (для архивов может быть пустым)