64 lines
1.9 KiB
Markdown
64 lines
1.9 KiB
Markdown
# 07 — Exporters
|
|
|
|
## Export surfaces
|
|
|
|
| Endpoint | Output | Purpose |
|
|
|----------|--------|---------|
|
|
| `GET /api/export/csv` | CSV | Serial-number export |
|
|
| `GET /api/export/json` | raw-export ZIP bundle | Reopen and re-analyze later |
|
|
| `GET /api/export/reanimator` | JSON | Reanimator hardware payload |
|
|
| `POST /api/convert` | async ZIP artifact | Batch archive-to-Reanimator conversion |
|
|
|
|
## Raw export
|
|
|
|
Raw export is not a final report dump.
|
|
It is a replayable artifact that preserves enough source data for future parser improvements.
|
|
|
|
Current bundle contents:
|
|
- `raw_export.json`
|
|
- `collect.log`
|
|
- `parser_fields.json`
|
|
|
|
Design rules:
|
|
- raw source is authoritative
|
|
- uploads of raw export must replay from raw source
|
|
- parsed snapshots inside the bundle are diagnostic only
|
|
|
|
## Reanimator export
|
|
|
|
Implementation files:
|
|
- `internal/exporter/reanimator_models.go`
|
|
- `internal/exporter/reanimator_converter.go`
|
|
- `internal/server/handlers.go`
|
|
|
|
Conversion rules:
|
|
- canonical source is `hardware.devices`
|
|
- timestamps are RFC3339
|
|
- status is normalized to Reanimator-friendly values
|
|
- missing PCIe serials may be generated from board serial + slot
|
|
- `NULL`-style board manufacturer/product values are treated as absent
|
|
|
|
## Inclusion rules
|
|
|
|
Included:
|
|
- empty memory slots (`present=false`) for topology visibility
|
|
- PCIe-class devices even when serial must be synthesized
|
|
|
|
Excluded:
|
|
- storage without `serial_number`
|
|
- power supplies without `serial_number`
|
|
- non-present network adapters
|
|
- device-bound firmware duplicated at top-level firmware list
|
|
|
|
## Batch convert
|
|
|
|
`POST /api/convert` accepts multiple supported files and produces a ZIP with:
|
|
- one `*.reanimator.json` file per successful input
|
|
- `convert-summary.txt`
|
|
|
|
Behavior:
|
|
- unsupported filenames are skipped
|
|
- each file is parsed independently
|
|
- one bad file must not fail the whole batch if at least one conversion succeeds
|
|
- result artifact is temporary and deleted after download
|